fix(xo-server-transport-nagios): don\'t fail on message with line break

Fixes zammad#9800
This commit is contained in:
Julien Fontanet 2022-10-03 16:37:14 +02:00
parent 424322f7b7
commit c964a1471a
3 changed files with 16 additions and 2 deletions

View File

@ -23,4 +23,6 @@
<!--packages-start--> <!--packages-start-->
- xo-server-transport-nagios patch
<!--packages-end--> <!--packages-end-->

View File

@ -28,6 +28,7 @@
"node": ">=6" "node": ">=6"
}, },
"dependencies": { "dependencies": {
"@xen-orchestra/log": "^0.3.0",
"buffer-crc32": "^0.2.13" "buffer-crc32": "^0.2.13"
}, },
"devDependencies": { "devDependencies": {

View File

@ -1,6 +1,9 @@
import crc32 from 'buffer-crc32' import crc32 from 'buffer-crc32'
import net from 'net' import net from 'net'
import { Buffer } from 'buffer' 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 }) { _sendPassiveCheck({ message, status }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (/\r|\n/.test(message)) { 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() const client = new net.Socket()
client.connect(this._conf.port, this._conf.server, () => { client.connect(this._conf.port, this._conf.server, () => {
console.log('Successful connection') debug('Successful connection')
}) })
client.on('data', data => { client.on('data', data => {