Files
router-lists-ui/backend/utils/mikrotikConfig.js
T

41 lines
1.3 KiB
JavaScript

/**
* Утилиты для генерации конфигурации 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,
};