thelounge/src/userLog.js
Jérémie Astori 41525ec20c Add hostmasks in logs when possible
This will augment logs for `join`/`part`/`quit` with something similar to:

```
[2016-10-03 23:19:29] * astorije2 (~lounge-us@123.45.67.89) join
[2016-10-03 23:22:04] * foobar (~foo@irc.example.com) join

[2016-10-03 23:22:00] * foo (foo@gateway/web/freenode/ip.12.34.56.789) quit Quit: Page closed
[2016-10-03 23:22:12] * bar (~foo@unaffiliated/bar) quit Ping timeout: 252 seconds

[2016-10-03 23:31:23] * astorije (~astorije@128.30.0.0) part
```
2016-10-03 19:40:26 -04:00

54 lines
1.3 KiB
JavaScript

var fs = require("fs");
var fsextra = require("fs-extra");
var moment = require("moment");
var Helper = require("./helper");
module.exports.write = function(user, network, chan, msg) {
try {
var path = Helper.getUserLogsPath(user, network);
fsextra.ensureDirSync(path);
} catch (e) {
log.error("Unabled to create logs directory", e);
return;
}
var format = Helper.config.logs.format || "YYYY-MM-DD HH:mm:ss";
var tz = Helper.config.logs.timezone || "UTC+00:00";
var time = moment().utcOffset(tz).format(format);
var line = `[${time}] `;
var type = msg.type.trim();
if (type === "message" || type === "highlight") {
// Format:
// [2014-01-01 00:00:00] <Arnold> Put that cookie down.. Now!!
line += `<${msg.from}> ${msg.text}`;
} else {
// Format:
// [2014-01-01 00:00:00] * Arnold quit
line += `* ${msg.from} `;
if (msg.hostmask) {
line += `(${msg.hostmask}) `;
}
line += msg.type;
if (msg.text) {
line += ` ${msg.text}`;
}
}
fs.appendFile(
// Quick fix to escape pre-escape channel names that contain % using %%,
// and / using %. **This does not escape all reserved words**
path + "/" + chan.replace(/%/g, "%%").replace(/\//g, "%") + ".log",
line + "\n",
function(e) {
if (e) {
log.error("Failed to write user log", e);
}
}
);
};