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
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 2m12s
This commit is contained in:
@@ -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
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user