47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
/* eslint no-unused-expressions: ["error", { "allowShortCircuit": true, "allowTernary": true }],
|
|
no-console: ["error", { allow: ["warn", "error", "info"] }] */
|
|
/* jshint esversion: 6, asi: true, node: true */
|
|
// logging.js
|
|
// private
|
|
|
|
const debug = require('debug');
|
|
const util = require('util');
|
|
|
|
/**
|
|
* generate consistent prefix for log messages
|
|
* with epress session id and socket session id
|
|
* @param {object} socket Socket information
|
|
*/
|
|
function prefix(socket) {
|
|
return `(${socket.request.sessionID}/${socket.id})`;
|
|
}
|
|
|
|
// public
|
|
function webssh2debug(socket, msg) {
|
|
debug('WebSSH2')(`${prefix(socket)} ${msg}`);
|
|
}
|
|
|
|
/**
|
|
* audit log to console
|
|
* @param {object} socket Socket information
|
|
* @param {object} msg log message
|
|
*/
|
|
function auditLog(socket, msg) {
|
|
console.info(`WebSSH2 ${prefix(socket)} AUDIT: ${msg}`);
|
|
}
|
|
|
|
/**
|
|
* logs error to socket client (if connected)
|
|
* and console.
|
|
* @param {object} socket Socket information
|
|
* @param {string} myFunc Function calling this function
|
|
* @param {object} err error object or error message
|
|
*/
|
|
function logError(socket, myFunc, err) {
|
|
console.error(`WebSSH2 ${prefix(socket)} ERROR: ${myFunc}: ${err}`);
|
|
webssh2debug(socket, `logError: ${myFunc}: ${util.inspect(err)}`);
|
|
if (!socket.request.session) return;
|
|
socket.emit('ssherror', `SSH ${myFunc}: ${err}`);
|
|
}
|
|
|
|
module.exports = { logError, auditLog, webssh2debug };
|