import { useState } from 'react'; import axios from '../services/api'; const EXAMPLES = ['192.168.0.0/24', '10.0.0.0/8', '172.16.0.0/12']; const INFO_FIELDS = [ { key: 'network', label: 'Netzwerkadresse' }, { key: 'broadcast', label: 'Broadcast-Adresse' }, { key: 'netmask', label: 'Subnetzmaske' }, { key: 'wildcard', label: 'Wildcard-Maske' }, { key: 'first_host', label: 'Erste nutzbare IP' }, { key: 'last_host', label: 'Letzte nutzbare IP' }, { key: 'total_hosts', label: 'Nutzbare Hosts' }, { key: 'prefix_length', label: 'Präfixlänge', format: (v) => `/${v}` }, { key: 'ip_class', label: 'IP-Klasse' }, ]; function IpCalcTool() { const [cidr, setCidr] = useState(''); const [result, setResult] = useState(null); const [error, setError] = useState(''); const [copiedKey, setCopiedKey] = useState(''); const calculate = async (val) => { const input = val !== undefined ? val : cidr; setError(''); setResult(null); if (!input.trim()) { setError('Bitte CIDR eingeben.'); return; } try { const res = await axios.post('/api/ip/calculate', { cidr: input }); setResult(res.data); } catch (err) { setError(err.response?.data?.message || 'Fehler bei der Berechnung'); } }; const useExample = (val) => { setCidr(val); setError(''); setResult(null); calculate(val); }; const copy = (key, text) => { navigator.clipboard.writeText(String(text)); setCopiedKey(key); setTimeout(() => setCopiedKey(''), 1500); }; return (

IP / Subnetz Rechner

CIDR-Netzwerke berechnen und analysieren.

{EXAMPLES.map((ex) => ( ))}
{ setCidr(e.target.value); setResult(null); setError(''); }} placeholder="192.168.1.0/24" style={{ fontFamily: 'monospace', flex: 1 }} onKeyDown={(e) => e.key === 'Enter' && calculate()} />
{error &&

{error}

} {result && (
{INFO_FIELDS.map(({ key, label, format }) => { const value = format ? format(result[key]) : result[key]; return (
{label}
{String(value)}
); })}
)}
); } export default IpCalcTool;