Решение проблемы генерации конфигурационных файлов для IP-телефонов через TFTP-сервер
Существует код на Node.js, который генерирует XML-файл с настройками для IP-телефонов и раздает его через TFTP-сервер. Однако при попытке скачать файл возникает ошибка в логах сервера о том, что файл не найден, а телефон не видит конфигурацию.
Исходный код сервера
Используются библиотеки tftp и xmlbuilder:
const tftp = require('tftp');
const builder = require('xmlbuilder');
const server = tftp.createServer({
host: '0.0.0.0',
port: 69,
});
server.on('request', function (req, res){
const root = builder.create('flat-profile');
root.ele('Provision_Enable', 'Yes');
root.ele('Resync_On_Reset', 'Yes');
root.ele('Resync_Periodic', 3600);
root.ele('Profile_Rule', 'tftp://192.168.1.100/spa$PSN.cfg');
const xmlString = root.end({pretty: true});
const data = Buffer.from(xmlString);
res.setSize(data.length);
res.write(data);
res.end();
});
server.listen();Проблема
При выполнении команды tftp 192.168.1.100 -c get config.xml файл генерируется и скачивается, но в логах сервера фиксируется ошибка "файл не найден". Телефон при этом не получает конфигурационный файл.
Вопрос
Как настроить сервер так, чтобы он возвращал сгенерированный в памяти файл, а не пытался найти его в файловой системе папки?