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