UNPKG

syslog-appender-pro

Version:
517 lines (472 loc) 16.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.syslog = exports.rfc6587 = exports.rfc5426 = exports.rfc5425 = exports.rfc5424 = exports.SEVERITIES = exports.FACILITIES = void 0; var _os = require("os"); var _net = require("net"); var _tls = require("tls"); var _dgram = require("dgram"); function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } // REFERENCES // https://tools.ietf.org/html/rfc5424 // https://tools.ietf.org/html/rfc5425 // https://tools.ietf.org/html/rfc5426 // https://tools.ietf.org/html/rfc6587 var FACILITIES = { LOCAL0: 16, LOCAL1: 17, LOCAL2: 18, LOCAL3: 19, LOCAL4: 20, LOCAL5: 21, LOCAL6: 22, LOCAL7: 23 }; exports.FACILITIES = FACILITIES; var SEVERITIES = { ALERT: 1, CRITICAL: 2, DEBUG: 7, EMERGENCY: 0, ERROR: 3, INFORMATIONAL: 6, NOTICE: 5, WARNING: 4 }; exports.SEVERITIES = SEVERITIES; var isObject = function isObject(value) { return _typeof(value) === 'object' && Array.isArray(value) === false; }; var parseStructuredData = function parseStructuredData(structuredData) { var result = ''; for (var id in structuredData) { if (isObject(structuredData[id]) === true) { result += "[".concat(id); for (var param in structuredData[id]) { result += " ".concat(param, "=\"").concat(structuredData[id][param], "\""); } result += ']'; } } return result.length === 0 ? '-' : result; }; var rfc5424 = function rfc5424(_ref) { var appName = _ref.appName, eol = _ref.eol, facility = _ref.facility, hostname = _ref.hostname, message = _ref.message, msgId = _ref.msgId, procId = _ref.procId, severity = _ref.severity, structuredData = _ref.structuredData, timestamp = _ref.timestamp; if (typeof facility === 'string') { var _FACILITIES$facility$; facility = (_FACILITIES$facility$ = FACILITIES[facility.toUpperCase()]) !== null && _FACILITIES$facility$ !== void 0 ? _FACILITIES$facility$ : FACILITIES.LOCAL0; } if (typeof severity === 'string') { var _SEVERITIES$severity$; severity = (_SEVERITIES$severity$ = SEVERITIES[severity.toUpperCase()]) !== null && _SEVERITIES$severity$ !== void 0 ? _SEVERITIES$severity$ : SEVERITIES.DEBUG; } if (isObject(structuredData) === true) { structuredData = parseStructuredData(structuredData); } var priority = Math.imul(facility, 8) + severity; return Buffer.from("<".concat(priority, ">1 ").concat(timestamp, " ").concat(hostname, " ").concat(appName, " ").concat(procId, " ").concat(msgId, " ").concat(structuredData, " ").concat(message).concat(eol)); }; // sync -> async exports.rfc5424 = rfc5424; var rfc5425 = function rfc5425(_ref2) { var defaultAppName = _ref2.defaultAppName, defaultEol = _ref2.defaultEol, defaultFacility = _ref2.defaultFacility, defaultHostname = _ref2.defaultHostname, defaultMsgId = _ref2.defaultMsgId, defaultProcId = _ref2.defaultProcId, defaultSeverity = _ref2.defaultSeverity, defaultStructuredData = _ref2.defaultStructuredData, ca = _ref2.ca, cert = _ref2.cert, checkServerIdentity = _ref2.checkServerIdentity, family = _ref2.family, host = _ref2.host, key = _ref2.key, port = _ref2.port; return function (_ref3) { var _ref3$appName = _ref3.appName, appName = _ref3$appName === void 0 ? defaultAppName : _ref3$appName, _ref3$eol = _ref3.eol, eol = _ref3$eol === void 0 ? defaultEol : _ref3$eol, _ref3$facility = _ref3.facility, facility = _ref3$facility === void 0 ? defaultFacility : _ref3$facility, _ref3$hostname = _ref3.hostname, hostname = _ref3$hostname === void 0 ? defaultHostname : _ref3$hostname, message = _ref3.message, _ref3$msgId = _ref3.msgId, msgId = _ref3$msgId === void 0 ? defaultMsgId : _ref3$msgId, _ref3$procId = _ref3.procId, procId = _ref3$procId === void 0 ? defaultProcId : _ref3$procId, _ref3$severity = _ref3.severity, severity = _ref3$severity === void 0 ? defaultSeverity : _ref3$severity, _ref3$structuredData = _ref3.structuredData, structuredData = _ref3$structuredData === void 0 ? defaultStructuredData : _ref3$structuredData, _ref3$timestamp = _ref3.timestamp, timestamp = _ref3$timestamp === void 0 ? new Date().toISOString() : _ref3$timestamp; return new Promise(function (resolve, reject) { var options = { ca: ca, cert: cert, family: family, host: host, key: key, port: port }; if (typeof checkServerIdentity === 'function') { options.checkServerIdentity = checkServerIdentity; } var socket = (0, _tls.connect)(options); socket.once('error', reject); socket.once('end', resolve); socket.once('connect', function () { socket.end(rfc5424({ appName: appName, eol: eol, facility: facility, hostname: hostname, message: message, msgId: msgId, procId: procId, severity: severity, structuredData: structuredData, timestamp: timestamp })); }); }); }; }; // async -> sync exports.rfc5425 = rfc5425; var rfc5426 = function rfc5426(_ref4) { var defaultAppName = _ref4.defaultAppName, defaultEol = _ref4.defaultEol, defaultFacility = _ref4.defaultFacility, defaultHostname = _ref4.defaultHostname, defaultMsgId = _ref4.defaultMsgId, defaultProcId = _ref4.defaultProcId, defaultSeverity = _ref4.defaultSeverity, defaultStructuredData = _ref4.defaultStructuredData, family = _ref4.family, host = _ref4.host, port = _ref4.port; return new Promise(function (resolve, reject) { var options = { 0: { type: 'udp6' }, 4: { type: 'udp4' }, 6: { ipv6Only: true, type: 'udp6' } }; var socket = (0, _dgram.createSocket)(options[family]); socket.connect(port, host); socket.once('error', reject); socket.once('connect', function () { resolve(function (_ref5) { var _ref5$appName = _ref5.appName, appName = _ref5$appName === void 0 ? defaultAppName : _ref5$appName, _ref5$eol = _ref5.eol, eol = _ref5$eol === void 0 ? defaultEol : _ref5$eol, _ref5$facility = _ref5.facility, facility = _ref5$facility === void 0 ? defaultFacility : _ref5$facility, _ref5$hostname = _ref5.hostname, hostname = _ref5$hostname === void 0 ? defaultHostname : _ref5$hostname, message = _ref5.message, _ref5$msgId = _ref5.msgId, msgId = _ref5$msgId === void 0 ? defaultMsgId : _ref5$msgId, _ref5$procId = _ref5.procId, procId = _ref5$procId === void 0 ? defaultProcId : _ref5$procId, _ref5$severity = _ref5.severity, severity = _ref5$severity === void 0 ? defaultSeverity : _ref5$severity, _ref5$structuredData = _ref5.structuredData, structuredData = _ref5$structuredData === void 0 ? defaultStructuredData : _ref5$structuredData, _ref5$timestamp = _ref5.timestamp, timestamp = _ref5$timestamp === void 0 ? new Date().toISOString() : _ref5$timestamp; socket.send(rfc5424({ appName: appName, eol: eol, facility: facility, hostname: hostname, message: message, msgId: msgId, procId: procId, severity: severity, structuredData: structuredData, timestamp: timestamp })); }); }); }); }; // sync -> async exports.rfc5426 = rfc5426; var rfc6587 = function rfc6587(_ref6) { var defaultAppName = _ref6.defaultAppName, defaultEol = _ref6.defaultEol, defaultFacility = _ref6.defaultFacility, defaultHostname = _ref6.defaultHostname, defaultMsgId = _ref6.defaultMsgId, defaultProcId = _ref6.defaultProcId, defaultSeverity = _ref6.defaultSeverity, defaultStructuredData = _ref6.defaultStructuredData, family = _ref6.family, host = _ref6.host, port = _ref6.port; return function (_ref7) { var _ref7$appName = _ref7.appName, appName = _ref7$appName === void 0 ? defaultAppName : _ref7$appName, _ref7$eol = _ref7.eol, eol = _ref7$eol === void 0 ? defaultEol : _ref7$eol, _ref7$facility = _ref7.facility, facility = _ref7$facility === void 0 ? defaultFacility : _ref7$facility, _ref7$hostname = _ref7.hostname, hostname = _ref7$hostname === void 0 ? defaultHostname : _ref7$hostname, message = _ref7.message, _ref7$msgId = _ref7.msgId, msgId = _ref7$msgId === void 0 ? defaultMsgId : _ref7$msgId, _ref7$procId = _ref7.procId, procId = _ref7$procId === void 0 ? defaultProcId : _ref7$procId, _ref7$severity = _ref7.severity, severity = _ref7$severity === void 0 ? defaultSeverity : _ref7$severity, _ref7$structuredData = _ref7.structuredData, structuredData = _ref7$structuredData === void 0 ? defaultStructuredData : _ref7$structuredData, _ref7$timestamp = _ref7.timestamp, timestamp = _ref7$timestamp === void 0 ? new Date().toISOString() : _ref7$timestamp; return new Promise(function (resolve, reject) { var socket = (0, _net.createConnection)({ family: family, host: host, port: port }); socket.once('error', reject); socket.once('end', resolve); socket.once('connect', function () { socket.end(rfc5424({ appName: appName, eol: eol, facility: facility, hostname: hostname, message: message, msgId: msgId, procId: procId, severity: severity, structuredData: structuredData, timestamp: timestamp })); }); }); }; }; exports.rfc6587 = rfc6587; var syslog = function syslog(_ref8) { var ca = _ref8.ca, cert = _ref8.cert, checkServerIdentity = _ref8.checkServerIdentity, _ref8$defaultAppName = _ref8.defaultAppName, defaultAppName = _ref8$defaultAppName === void 0 ? process.argv[process.argv.length - 1] : _ref8$defaultAppName, _ref8$defaultEol = _ref8.defaultEol, defaultEol = _ref8$defaultEol === void 0 ? '\0' : _ref8$defaultEol, _ref8$defaultFacility = _ref8.defaultFacility, defaultFacility = _ref8$defaultFacility === void 0 ? FACILITIES.LOCAL0 : _ref8$defaultFacility, _ref8$defaultHostname = _ref8.defaultHostname, defaultHostname = _ref8$defaultHostname === void 0 ? (0, _os.hostname)() : _ref8$defaultHostname, _ref8$defaultMsgId = _ref8.defaultMsgId, defaultMsgId = _ref8$defaultMsgId === void 0 ? '-' : _ref8$defaultMsgId, _ref8$defaultProcId = _ref8.defaultProcId, defaultProcId = _ref8$defaultProcId === void 0 ? process.pid : _ref8$defaultProcId, _ref8$defaultSeverity = _ref8.defaultSeverity, defaultSeverity = _ref8$defaultSeverity === void 0 ? SEVERITIES.DEBUG : _ref8$defaultSeverity, _ref8$defaultStructur = _ref8.defaultStructuredData, defaultStructuredData = _ref8$defaultStructur === void 0 ? '-' : _ref8$defaultStructur, _ref8$host = _ref8.host, host = _ref8$host === void 0 ? 'localhost' : _ref8$host, _ref8$port = _ref8.port, port = _ref8$port === void 0 ? 514 : _ref8$port, key = _ref8.key, _ref8$protocol = _ref8.protocol, protocol = _ref8$protocol === void 0 ? 'tcp' : _ref8$protocol; switch (protocol) { case 'tls': { return rfc5425({ ca: ca, cert: cert, checkServerIdentity: checkServerIdentity, defaultAppName: defaultAppName, defaultEol: defaultEol, defaultFacility: defaultFacility, defaultHostname: defaultHostname, defaultMsgId: defaultMsgId, defaultProcId: defaultProcId, defaultSeverity: defaultSeverity, defaultStructuredData: defaultStructuredData, family: 0, host: host, hostname: _os.hostname, key: key, port: port }); } case 'tls4': { return rfc5425({ ca: ca, cert: cert, checkServerIdentity: checkServerIdentity, defaultAppName: defaultAppName, defaultEol: defaultEol, defaultFacility: defaultFacility, defaultHostname: defaultHostname, defaultMsgId: defaultMsgId, defaultProcId: defaultProcId, defaultSeverity: defaultSeverity, defaultStructuredData: defaultStructuredData, family: 4, host: host, hostname: _os.hostname, key: key, port: port }); } case 'tls6': { return rfc5425({ ca: ca, cert: cert, checkServerIdentity: checkServerIdentity, defaultAppName: defaultAppName, defaultEol: defaultEol, defaultFacility: defaultFacility, defaultHostname: defaultHostname, defaultMsgId: defaultMsgId, defaultProcId: defaultProcId, defaultSeverity: defaultSeverity, defaultStructuredData: defaultStructuredData, family: 6, host: host, hostname: _os.hostname, key: key, port: port }); } case 'tcp': { return rfc6587({ defaultAppName: defaultAppName, defaultEol: defaultEol, defaultFacility: defaultFacility, defaultHostname: defaultHostname, defaultMsgId: defaultMsgId, defaultProcId: defaultProcId, defaultSeverity: defaultSeverity, defaultStructuredData: defaultStructuredData, family: 0, host: host, hostname: _os.hostname, port: port }); } case 'tcp4': { return rfc6587({ defaultAppName: defaultAppName, defaultEol: defaultEol, defaultFacility: defaultFacility, defaultHostname: defaultHostname, defaultMsgId: defaultMsgId, defaultProcId: defaultProcId, defaultSeverity: defaultSeverity, defaultStructuredData: defaultStructuredData, family: 4, host: host, hostname: _os.hostname, port: port }); } case 'tcp6': { return rfc6587({ defaultAppName: defaultAppName, defaultEol: defaultEol, defaultFacility: defaultFacility, defaultHostname: defaultHostname, defaultMsgId: defaultMsgId, defaultProcId: defaultProcId, defaultSeverity: defaultSeverity, defaultStructuredData: defaultStructuredData, family: 6, host: host, hostname: _os.hostname, port: port }); } case 'udp': { return rfc5426({ defaultAppName: defaultAppName, defaultEol: defaultEol, defaultFacility: defaultFacility, defaultHostname: defaultHostname, defaultMsgId: defaultMsgId, defaultProcId: defaultProcId, defaultSeverity: defaultSeverity, defaultStructuredData: defaultStructuredData, family: 0, host: host, hostname: _os.hostname, port: port }); } case 'udp4': { return rfc5426({ defaultAppName: defaultAppName, defaultEol: defaultEol, defaultFacility: defaultFacility, defaultHostname: defaultHostname, defaultMsgId: defaultMsgId, defaultProcId: defaultProcId, defaultSeverity: defaultSeverity, defaultStructuredData: defaultStructuredData, family: 4, host: host, hostname: _os.hostname, port: port }); } case 'udp6': { return rfc5426({ defaultAppName: defaultAppName, defaultEol: defaultEol, defaultFacility: defaultFacility, defaultHostname: defaultHostname, defaultMsgId: defaultMsgId, defaultProcId: defaultProcId, defaultSeverity: defaultSeverity, defaultStructuredData: defaultStructuredData, family: 6, host: host, hostname: _os.hostname, port: port }); } default: { throw Error('Unsupported protocol'); } } }; exports.syslog = syslog;