From c964a1471af0f8bd73aab02892226dec8807f983 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Mon, 3 Oct 2022 16:37:14 +0200 Subject: [PATCH] fix(xo-server-transport-nagios): don\'t fail on message with line break Fixes zammad#9800 --- CHANGELOG.unreleased.md | 2 ++ packages/xo-server-transport-nagios/package.json | 1 + packages/xo-server-transport-nagios/src/index.js | 15 +++++++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md index 2e906d9b9..a5f0bb906 100644 --- a/CHANGELOG.unreleased.md +++ b/CHANGELOG.unreleased.md @@ -23,4 +23,6 @@ +- xo-server-transport-nagios patch + diff --git a/packages/xo-server-transport-nagios/package.json b/packages/xo-server-transport-nagios/package.json index 74a0023a7..b658673e4 100644 --- a/packages/xo-server-transport-nagios/package.json +++ b/packages/xo-server-transport-nagios/package.json @@ -28,6 +28,7 @@ "node": ">=6" }, "dependencies": { + "@xen-orchestra/log": "^0.3.0", "buffer-crc32": "^0.2.13" }, "devDependencies": { diff --git a/packages/xo-server-transport-nagios/src/index.js b/packages/xo-server-transport-nagios/src/index.js index 7079a7498..6bcaede60 100644 --- a/packages/xo-server-transport-nagios/src/index.js +++ b/packages/xo-server-transport-nagios/src/index.js @@ -1,6 +1,9 @@ import crc32 from 'buffer-crc32' import net from 'net' import { Buffer } from 'buffer' +import { createLogger } from '@xen-orchestra/log' + +const { debug, warn } = createLogger('xo:server:transport:nagios') // =================================================================== @@ -109,13 +112,21 @@ class XoServerNagios { _sendPassiveCheck({ message, status }) { return new Promise((resolve, reject) => { if (/\r|\n/.test(message)) { - throw new Error('the message must not contain a line break') + warn('the message must not contain a line break', { message }) + for (let i = 0, n = message.length; i < n; ++i) { + const c = message[i] + if (c === '\n') { + message[i] = '\\n' + } else if (c === '\r') { + message[i] = '\\r' + } + } } const client = new net.Socket() client.connect(this._conf.port, this._conf.server, () => { - console.log('Successful connection') + debug('Successful connection') }) client.on('data', data => {