feat: Improve gateway handling in ServerManager by enforcing validation for jumphost and exit server types, ensuring at least one primary gateway is specified during server addition and updates.
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 2m5s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 2m5s
This commit is contained in:
@@ -223,7 +223,8 @@ function ServerManager() {
|
||||
provider: '',
|
||||
tunnel: 'GRE',
|
||||
type: 'jumphost',
|
||||
gateway: ''
|
||||
gateway: '',
|
||||
gateways: [makeGateway({ primary: true })],
|
||||
});
|
||||
};
|
||||
|
||||
@@ -244,7 +245,8 @@ function ServerManager() {
|
||||
provider: '',
|
||||
tunnel: 'GRE',
|
||||
type: 'jumphost',
|
||||
gateway: ''
|
||||
gateway: '',
|
||||
gateways: [makeGateway({ primary: true })],
|
||||
});
|
||||
setCustomProvider('');
|
||||
setError('');
|
||||
@@ -277,11 +279,20 @@ function ServerManager() {
|
||||
// Используем customProvider если выбран "Другой"
|
||||
const finalProvider = newServer.provider === 'Другой' ? customProvider : newServer.provider;
|
||||
const nextId = `srv-${servers.length + 1}`;
|
||||
const normalizedGws = NEEDS_GATEWAYS(newServer.type)
|
||||
? normalizeGateways(newServer.gateways, newServer.gateway || newServer.dns || newServer.ip)
|
||||
: [];
|
||||
if (NEEDS_GATEWAYS(newServer.type) && (!normalizedGws || normalizedGws.length === 0)) {
|
||||
setError('Для jumphost/exit добавьте хотя бы один gateway и отметьте основной.');
|
||||
return;
|
||||
}
|
||||
|
||||
const serverToAdd = {
|
||||
...newServer,
|
||||
provider: finalProvider,
|
||||
id: newServer.id || nextId,
|
||||
type: normalizeServerType(newServer.type),
|
||||
gateways: normalizedGws,
|
||||
};
|
||||
|
||||
setServers([...servers, serverToAdd]);
|
||||
@@ -319,6 +330,10 @@ function ServerManager() {
|
||||
type: normalizeServerType(updatedServer.type),
|
||||
gateways: NEEDS_GATEWAYS(updatedServer.type) ? normalizeGateways(updatedServer.gateways, updatedServer.gateway || updatedServer.dns || updatedServer.ip) : [],
|
||||
};
|
||||
if (NEEDS_GATEWAYS(normalizedServer.type) && normalizedServer.gateways.length === 0) {
|
||||
setError('Для jumphost/exit необходим хотя бы один gateway с признаком основного.');
|
||||
return;
|
||||
}
|
||||
setServers(servers.map(s => {
|
||||
const sameId = s.id && updatedServer.id ? s.id === updatedServer.id : false;
|
||||
const sameIp = s.ip === updatedServer.ip;
|
||||
|
||||
Reference in New Issue
Block a user