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 gws = [];
|
||||||
|
const serverDns = matchedServer?.dns || matchedServer?.hostName || selectedServer.name || '';
|
||||||
|
const country = matchedServer?.country || '';
|
||||||
|
|
||||||
if (matchedServer) {
|
// Добавляем только реальные gateways из inventoryServers
|
||||||
// Добавляем gateways из найденного сервера
|
if (matchedServer && Array.isArray(matchedServer.gateways)) {
|
||||||
if (Array.isArray(matchedServer.gateways)) {
|
matchedServer.gateways.forEach(gw => {
|
||||||
matchedServer.gateways.forEach(gw => {
|
// Пропускаем шлюзы, у которых имя совпадает с названием сервера (это fallback)
|
||||||
if (gw.name) {
|
if (gw.name && gw.name !== serverDns && gw.name !== selectedServer.name) {
|
||||||
gws.push({
|
gws.push({
|
||||||
name: gw.name,
|
name: gw.name,
|
||||||
ip: gw.ip || '',
|
ip: gw.ip || '',
|
||||||
comment: gw.comment || '',
|
comment: gw.comment || '',
|
||||||
serverDns: matchedServer.dns || matchedServer.hostName || '',
|
serverDns: serverDns,
|
||||||
country: matchedServer.country || '',
|
country: country,
|
||||||
primary: gw.primary
|
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 из selectedServer (server-configs)
|
// Также проверяем gateways из selectedServer (server-configs)
|
||||||
if (Array.isArray(selectedServer.gateways)) {
|
if (Array.isArray(selectedServer.gateways)) {
|
||||||
selectedServer.gateways.forEach(gw => {
|
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({
|
gws.push({
|
||||||
name: gw.name,
|
name: gw.name,
|
||||||
ip: gw.ip || '',
|
ip: gw.ip || '',
|
||||||
comment: gw.comment || '',
|
comment: gw.comment || '',
|
||||||
serverDns: selectedServer.name || '',
|
serverDns: serverDns,
|
||||||
country: matchedServer?.country || '',
|
country: country,
|
||||||
primary: gw.primary
|
primary: gw.primary
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user