diff --git a/frontend/src/ServerManager.jsx b/frontend/src/ServerManager.jsx index c06c69b..3bc6cb4 100644 --- a/frontend/src/ServerManager.jsx +++ b/frontend/src/ServerManager.jsx @@ -55,6 +55,7 @@ function ServerManager() { // === Основные данные === const [servers, setServers] = useState([]); const [connections, setConnections] = useState([]); + const [networkConfigGateways, setNetworkConfigGateways] = useState([]); const [loading, setLoading] = useState(false); // === UI State === @@ -126,9 +127,21 @@ function ServerManager() { }; // === Загрузка данных === + const fetchNetworkConfig = async () => { + try { + const res = await api.get('/network-config'); + const config = res.data || {}; + setNetworkConfigGateways(Array.isArray(config.gateways) ? config.gateways : []); + } catch (e) { + console.warn('Network config not loaded:', e?.message || e); + setNetworkConfigGateways([]); + } + }; + useEffect(() => { fetchServers(); fetchConnections(); + fetchNetworkConfig(); }, []); useEffect(() => { @@ -174,6 +187,32 @@ function ServerManager() { } }; + // Шлюзы для карточки: из /network-config по serverId, иначе из server.gateways + const getGatewaysForServer = useMemo(() => { + const gatewaysByServerId = {}; + (networkConfigGateways || []).forEach((gw) => { + if (!gw.serverId) return; + if (!gatewaysByServerId[gw.serverId]) gatewaysByServerId[gw.serverId] = []; + gatewaysByServerId[gw.serverId].push(gw); + }); + return (server) => { + const ids = [server?.id, server?.ip, server?.dns].filter(Boolean); + for (const id of ids) { + const gws = gatewaysByServerId[id]; + if (gws?.length > 0) { + return gws.map((gw, idx) => ({ + id: gw.id, + name: gw.description || gw.id || gw.ip, + ip: gw.ip, + comment: gw.description, + primary: idx === 0, + })); + } + } + return server?.gateways || []; + }; + }, [networkConfigGateways]); + // === Фильтрация и сортировка === const filteredServers = useMemo(() => { let result = [...servers]; @@ -601,6 +640,7 @@ function ServerManager() { const handleRefreshAll = () => { fetchServers(); fetchConnections(); + fetchNetworkConfig(); }; // === Connections === @@ -846,7 +886,7 @@ function ServerManager() { ({ ...s, gateways: getGatewaysForServer(s) }))} selectedSet={selectedServers} onSelect={toggleServerSelection} onSelectGroup={toggleGroupSelection} @@ -856,7 +896,7 @@ function ServerManager() { ) : (