diff --git a/frontend/src/NetworkConfigManager.jsx b/frontend/src/NetworkConfigManager.jsx index 1162ccb..1035280 100644 --- a/frontend/src/NetworkConfigManager.jsx +++ b/frontend/src/NetworkConfigManager.jsx @@ -479,12 +479,17 @@ function NetworkConfigManager() { // Собираем IP из интерфейсов (config.tunnelInterfaces || []).forEach(iface => { + const server = getServerInfo(iface.serverId); + const server2 = getServerInfo(iface.serverId2); + if (iface.localIp && iface.localIp.trim()) { registry.push({ ip: iface.localIp.trim(), type: 'localIp', interface: iface, - interfaceName: iface.name || iface.id + interfaceName: iface.name || iface.id, + server: server, + server2: server2 }); } if (iface.remoteIp && iface.remoteIp.trim()) { @@ -492,7 +497,9 @@ function NetworkConfigManager() { ip: iface.remoteIp.trim(), type: 'remoteIp', interface: iface, - interfaceName: iface.name || iface.id + interfaceName: iface.name || iface.id, + server: server, + server2: server2 }); } }); @@ -509,7 +516,9 @@ function NetworkConfigManager() { groupedByIp[item.ip].interfaces.push({ type: item.type, interface: item.interface, - interfaceName: item.interfaceName + interfaceName: item.interfaceName, + server: item.server, + server2: item.server2 }); }); @@ -518,7 +527,14 @@ function NetworkConfigManager() { .map(item => ({ ...item, usageCount: item.interfaces.length, - hasConflict: item.interfaces.length > 1 // Конфликт если IP используется в нескольких интерфейсах + hasConflict: item.interfaces.length > 1, // Конфликт если IP используется в нескольких интерфейсах + // Собираем уникальные серверы для этого IP + servers: [...new Set( + item.interfaces.flatMap(i => [ + i.server?.dns || i.server?.ip || i.interface.serverId, + i.server2?.dns || i.server2?.ip || i.interface.serverId2 + ].filter(Boolean)) + )] })) .sort((a, b) => { // Сначала конфликты, потом по IP @@ -527,7 +543,7 @@ function NetworkConfigManager() { } return a.ip.localeCompare(b.ip); }); - }, [config.tunnelInterfaces]); + }, [config.tunnelInterfaces, servers]); // === Фильтрация реестра IP === const filteredIpRegistry = useMemo(() => { @@ -1989,7 +2005,7 @@ function NetworkConfigManager() { IP адрес - Использование + Сервер Интерфейсы Действия @@ -2008,9 +2024,15 @@ function NetworkConfigManager() { - - {item.usageCount} {item.usageCount === 1 ? 'раз' : 'раза'} - +
+ {item.servers.map((serverName, sIdx) => ( +
+ + {serverName} +
+ ))} + {item.servers.length === 0 && } +