feat: Refactor gateway selection logic in FilterManager to exclude fallback gateways, improving accuracy in gateway management and enhancing user experience.
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 2m12s

This commit is contained in:
2025-12-07 02:27:25 +07:00
parent aa76966f89
commit f938dbb47a
+21 -30
View File
@@ -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
});
}