Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m34s
41 lines
1.3 KiB
JavaScript
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,
|
|
};
|
|
|