diff --git a/frontend/src/MikrotikTools.jsx b/frontend/src/MikrotikTools.jsx index 697d1ce..8858104 100644 --- a/frontend/src/MikrotikTools.jsx +++ b/frontend/src/MikrotikTools.jsx @@ -287,6 +287,72 @@ function MikrotikTools() {
+ {/* Карточки gateways выбранного сервера */} + {serverId && gateways.length > 0 && ( +
+
+ {gateways + .filter((g) => { + if (!g || !g.ip) return false; + if (!serverId) return false; + if (!currentServer) return g.serverId === serverId; + const serverIds = new Set([ + serverId, + currentServer.id, + currentServer.ip, + currentServer.dns, + ].filter(Boolean).map(String)); + return serverIds.has(String(g.serverId)); + }) + .map((g) => { + const isSelected = gatewayRef === g.ip || gatewayRef === g.id; + const flag = g.country ? countryToFlag(g.country) : ''; + const subtitle = [g.description, g.provider].filter(Boolean).join(' · '); + return ( +
+
{ + const next = isSelected ? '' : (g.ip || g.id); + setGatewayRef(next); + if (!next) { + setGatewayMeta(null); + } else { + setGatewayMeta({ ip: g.ip, gateway: g }); + if (!target && g.ip) setTarget(g.ip); + } + }} + > +
+ + {flag || (g.ip ? g.ip.split('.').slice(-1)[0] : '?')} + +
+
+ {g.ip || '—'} +
+ {g.description && ( +
+ {g.description} +
+ )} + {subtitle && ( +
+ {subtitle} +
+ )} +
+
+
+
+ ); + })} +
+
+ )} + {/* Расширенный выбор по IP/интерфейсу */}
- Можно привязать трассировку к конкретному прямому gateway или туннельному интерфейсу. + Можно выбрать gateway карточкой выше или через поиск по IP/интерфейсу.
@@ -340,6 +406,25 @@ function MikrotikTools() { onChange={(e) => setMaxHops(e.target.value)} /> + +
+ +
+ setUseDns(e.target.checked)} + /> + +
+
+ Этот параметр также передаётся на MikroTik как use-dns. +
+
)} @@ -368,24 +453,7 @@ function MikrotikTools() {
-
-

Результаты трассировки

-
- Отображать -
- setUseDns(e.target.checked)} - /> - -
-
-
+

Результаты трассировки

{hops.length === 0 ? (