feat: Оптимизация маршрутов для получения данных из S3 с использованием вспомогательных функций getS3JsonWithHeaders и getS3TextWithHeaders для улучшения читаемости и обработки ошибок. Упрощение кода и улучшение обработки конфигураций серверов и фильтров.
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m34s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m34s
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
/**
|
||||
* Утилиты для генерации конфигурации MikroTik
|
||||
* Устраняют дублирование кода генерации конфигурации
|
||||
*/
|
||||
|
||||
const { buildNestedGatewayBlocks } = require('./helpers');
|
||||
|
||||
/**
|
||||
* Генерация конфигурации MikroTik из массива фильтров
|
||||
* @param {Array} filters - Массив фильтров с полями {community, gateway}
|
||||
* @returns {string} Сгенерированная конфигурация
|
||||
*/
|
||||
function generateMikrotikConfig(filters) {
|
||||
if (!Array.isArray(filters) || filters.length === 0) {
|
||||
return '// No filters to generate configuration';
|
||||
}
|
||||
|
||||
// Группировка фильтров по gateway
|
||||
const gatewayGroups = {};
|
||||
filters.forEach(filter => {
|
||||
if (!gatewayGroups[filter.gateway]) {
|
||||
gatewayGroups[filter.gateway] = [];
|
||||
}
|
||||
gatewayGroups[filter.gateway].push(filter.community);
|
||||
});
|
||||
|
||||
let config = '// Frouting filter configuration for MikroTik 7.14+\n';
|
||||
config += '// Generated automatically\n';
|
||||
config += `// Date: ${new Date().toISOString()}\n\n`;
|
||||
config += '/routing filter bgp-in-tmp {\n';
|
||||
config += buildNestedGatewayBlocks(gatewayGroups, 4);
|
||||
config += '}\n';
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
generateMikrotikConfig,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user