From f938dbb47a1bc1c202d9e270f1ea2336009a1f51 Mon Sep 17 00:00:00 2001 From: shats Date: Sun, 7 Dec 2025 02:27:25 +0700 Subject: [PATCH] feat: Refactor gateway selection logic in FilterManager to exclude fallback gateways, improving accuracy in gateway management and enhancing user experience. --- frontend/src/FilterManager.jsx | 51 ++++++++++++++-------------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/frontend/src/FilterManager.jsx b/frontend/src/FilterManager.jsx index 7a8138f..fe5aad9 100644 --- a/frontend/src/FilterManager.jsx +++ b/frontend/src/FilterManager.jsx @@ -362,46 +362,37 @@ function FilterManager() { ); const gws = []; + const serverDns = matchedServer?.dns || matchedServer?.hostName || selectedServer.name || ''; + const country = matchedServer?.country || ''; - if (matchedServer) { - // Добавляем gateways из найденного сервера - if (Array.isArray(matchedServer.gateways)) { - matchedServer.gateways.forEach(gw => { - if (gw.name) { - gws.push({ - name: gw.name, - ip: gw.ip || '', - comment: gw.comment || '', - serverDns: matchedServer.dns || matchedServer.hostName || '', - country: matchedServer.country || '', - primary: gw.primary - }); - } - }); - } - // Также добавляем старое поле gateway если есть - if (matchedServer.gateway && !gws.some(g => g.name === matchedServer.gateway)) { - gws.push({ - name: matchedServer.gateway, - ip: '', - comment: 'Legacy gateway', - serverDns: matchedServer.dns || matchedServer.hostName || '', - country: matchedServer.country || '', - primary: true - }); - } + // Добавляем только реальные gateways из inventoryServers + if (matchedServer && Array.isArray(matchedServer.gateways)) { + matchedServer.gateways.forEach(gw => { + // Пропускаем шлюзы, у которых имя совпадает с названием сервера (это fallback) + if (gw.name && gw.name !== serverDns && gw.name !== selectedServer.name) { + gws.push({ + name: gw.name, + ip: gw.ip || '', + comment: gw.comment || '', + serverDns: serverDns, + country: country, + primary: gw.primary + }); + } + }); } // Также проверяем gateways из selectedServer (server-configs) if (Array.isArray(selectedServer.gateways)) { selectedServer.gateways.forEach(gw => { - if (gw.name && !gws.some(g => g.name === gw.name)) { + // Пропускаем fallback шлюзы с названием сервера + if (gw.name && gw.name !== serverDns && gw.name !== selectedServer.name && !gws.some(g => g.name === gw.name)) { gws.push({ name: gw.name, ip: gw.ip || '', comment: gw.comment || '', - serverDns: selectedServer.name || '', - country: matchedServer?.country || '', + serverDns: serverDns, + country: country, primary: gw.primary }); }