diff --git a/backend/routes/mikrotikConfigRoutes.js b/backend/routes/mikrotikConfigRoutes.js index bc8a581..6d437a1 100644 --- a/backend/routes/mikrotikConfigRoutes.js +++ b/backend/routes/mikrotikConfigRoutes.js @@ -295,8 +295,12 @@ async function runScript(req, res) { } const client = createRosClient(creds); - // /rest/system/script/run — запуск скрипта по имени (.id принимает имя скрипта) - await client.command('system/script/run', { '.id': script }); + // Сначала находим скрипт по имени, затем запускаем по .id + const scripts = await client.print('system/script'); + const list = Array.isArray(scripts?.data) ? scripts.data : (scripts?.data ? [scripts.data] : []); + const found = list.find(s => (s.name || s['.id']) === script); + const scriptId = found ? (found['.id'] || found.name) : script; + await client.command('system/script/run', { '.id': scriptId }); return sendOk(res, { ok: true, message: `Скрипт ${script} запущен` }); } catch (error) { diff --git a/backend/services/mikrotikApplyService.js b/backend/services/mikrotikApplyService.js index ff0634d..29cb4aa 100644 --- a/backend/services/mikrotikApplyService.js +++ b/backend/services/mikrotikApplyService.js @@ -23,16 +23,19 @@ function createRosClient(opts) { const auth = Buffer.from(`${user}:${password || ''}`).toString('base64'); const cleanPath = (urlPath.startsWith('/') ? urlPath.slice(1) : urlPath).replace(/\\/g, '/'); const pathStr = `/rest/${cleanPath}`.replace(/\/+/g, '/'); + const bodyStr = (body !== null && body !== undefined) ? JSON.stringify(body) : ''; + const headers = { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': `Basic ${auth}`, + }; + if (bodyStr) headers['Content-Length'] = Buffer.byteLength(bodyStr, 'utf8'); const options = { hostname: host, port, path: pathStr, method, - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Basic ${auth}`, - }, + headers, rejectUnauthorized: secure, }; @@ -57,9 +60,7 @@ function createRosClient(opts) { }); req.on('error', reject); - if (body !== null && body !== undefined) { - req.write(JSON.stringify(body)); - } + if (bodyStr) req.write(bodyStr); req.end(); }); };