feat: Enhance error handling and validation in FilterManager for server configuration saving and generation processes
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 6m3s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 6m3s
This commit is contained in:
@@ -137,13 +137,24 @@ function FilterManager() {
|
||||
const handleSaveServerConfig = async (serverId) => {
|
||||
try {
|
||||
const config = await generateMikrotikConfig();
|
||||
|
||||
// Проверяем, что конфигурация не пустая
|
||||
if (!config || config === '// Сначала выберите сервер' || config === '// Нет фильтров для генерации конфигурации') {
|
||||
setError('Нет данных для сохранения конфигурации. Убедитесь, что выбран сервер и есть фильтры.');
|
||||
return;
|
||||
}
|
||||
|
||||
await axios.post(`${API_URL}/server-configs/${serverId}`, { config });
|
||||
|
||||
setSuccess(`Конфигурация для сервера "${servers.find(s => s.id === serverId)?.name}" сохранена!`);
|
||||
setTimeout(() => setSuccess(''), 3000);
|
||||
} catch (error) {
|
||||
console.error('Error saving server config:', error);
|
||||
setError('Не удалось сохранить конфигурацию сервера.');
|
||||
if (error.response?.data) {
|
||||
setError(`Ошибка сохранения: ${error.response.data}`);
|
||||
} else {
|
||||
setError('Не удалось сохранить конфигурацию сервера.');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -225,7 +236,11 @@ function FilterManager() {
|
||||
}, 8000);
|
||||
} catch (error) {
|
||||
console.error('Error copying config to all servers:', error);
|
||||
setError('Не удалось скопировать конфигурацию на серверы.');
|
||||
if (error.response?.data) {
|
||||
setError(`Ошибка копирования: ${error.response.data}`);
|
||||
} else {
|
||||
setError('Не удалось скопировать конфигурацию на серверы.');
|
||||
}
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@@ -380,9 +395,18 @@ function FilterManager() {
|
||||
const response = await axios.post(`${API_URL}/server-filters/generate-config`, {
|
||||
filters: serverFilters
|
||||
});
|
||||
return response.data.config;
|
||||
|
||||
if (response.data && response.data.config) {
|
||||
return response.data.config;
|
||||
} else {
|
||||
console.error('Invalid response format:', response.data);
|
||||
return '// Ошибка: неверный формат ответа от сервера';
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error generating config:', error);
|
||||
if (error.response?.data) {
|
||||
return `// Ошибка при генерации конфигурации: ${error.response.data}`;
|
||||
}
|
||||
return '// Ошибка при генерации конфигурации';
|
||||
}
|
||||
};
|
||||
@@ -473,7 +497,8 @@ function FilterManager() {
|
||||
<button
|
||||
className="btn btn-outline-success"
|
||||
onClick={() => handleSaveServerConfig(selectedServer.id)}
|
||||
disabled={loading}
|
||||
disabled={loading || serverFilters.length === 0}
|
||||
title={serverFilters.length === 0 ? "Сначала добавьте фильтры" : "Сохранить конфигурацию"}
|
||||
>
|
||||
<IconDeviceFloppy className="me-2" />
|
||||
Сохранить конфигурацию
|
||||
@@ -630,7 +655,8 @@ function FilterManager() {
|
||||
<button
|
||||
className="btn btn-outline-success btn-sm me-2"
|
||||
onClick={() => handleSaveServerConfig(selectedServer.id)}
|
||||
disabled={loading}
|
||||
disabled={loading || serverFilters.length === 0}
|
||||
title={serverFilters.length === 0 ? "Сначала добавьте фильтры" : "Сохранить конфигурацию"}
|
||||
>
|
||||
<IconDeviceFloppy className="me-2" />
|
||||
Сохранить конфигурацию
|
||||
|
||||
Reference in New Issue
Block a user