import React, { useState } from 'react'; import { api } from '../api.js'; export function RouteChecker() { const [host, setHost] = useState(''); const [port, setPort] = useState('443'); const [network, setNetwork] = useState('tcp'); const [busy, setBusy] = useState(false); const [result, setResult] = useState(null); const [error, setError] = useState(''); async function check() { setBusy(true); setError(''); setResult(null); try { const data = await api.route.check({ host, port: port || undefined, network }); setResult(data); } catch (err) { setError(err.message); } finally { setBusy(false); } } const r = result?.result; const kind = r?.outbound?.startsWith('direct') ? 'success' : r?.outbound === 'block' ? 'danger' : r?.outbound?.includes('VPN') || r?.outbound?.includes('vpn') ? 'info' : 'warning'; return (

Проверить маршрут

setHost(e.target.value)} onKeyDown={(e) => e.key === 'Enter' && check()} style={{ minWidth: 220, flex: 1 }} /> setPort(e.target.value)} style={{ width: 90 }} />
{error &&
{error}
} {r && (
{r.ruleIndex >= 0 ? `Правило #${r.ruleIndex + 1}: ${r.ruleName}` : r.ruleName} → {r.outbound}
{result.resolvedIp && result.resolvedFrom && ( DNS: {result.resolvedFrom} → {result.resolvedIp} )} {r.reason}
)}
); }