From a2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3 Mon Sep 17 00:00:00 2001 From: Freeyorp Date: Wed, 15 May 2013 00:57:07 +1200 Subject: Log proxied IPs, make log format JSON Easier to make things easily parseable now than have to deal with logs later. --- index.js | 28 ++++++++++++++++++++-------- public/js/dc | 2 +- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index 8116dfb..339422a 100644 --- a/index.js +++ b/index.js @@ -28,7 +28,10 @@ var server = http.createServer(app) /* Only one level is logged, and numerical timestamps are easier to compare. */ logger.format = function(level, date, message) { - return (+date) + ":" + message; + return JSON.stringify({ + date: +date, + data: JSON.parse(message) /* TODO: Get rid of encoding/decoding hack (write own logger?) */ + }); } /* Number of sessions we've seen. */ @@ -44,6 +47,8 @@ var channelCount = 0; /* Channel ID -> { usernum, filters } */ var channels = {}; +var logServerAction = entityLogger(0); + sessionSockets.on('connection', function (err, socket, session) { /* * Don't do anything until they send a login message. @@ -51,6 +56,7 @@ sessionSockets.on('connection', function (err, socket, session) { */ socket.on('login', function() { /* Someone new connected. Restore or initialise their session data. */ + var logAction = entityLogger(session.nid); session.nid = session.nid || (++count); session.nick = session.nick || null; session.save(); @@ -62,7 +68,7 @@ sessionSockets.on('connection', function (err, socket, session) { } sockets[session.nid] = socket; /* New user! */ - logAction("CONNECT", socket.handshake.address.address); + logAction("CONNECT", { "ip": socket.handshake.address.address, "proxied-ip": socket.handshake.headers['x-forwarded-for'] }); users[session.nid] = { nick: session.nick, filters: {} }; /* Let them know of their data. */ socket.emit('selflogin', { @@ -174,14 +180,20 @@ sessionSockets.on('connection', function (err, socket, session) { }); }); }); - function logAction(action, content) { +}); + +function entityLogger(id) { + return function(action, content) { + var message = { + user:id, + action:action + }; if (arguments.length > 1) { - logger.info(session.nid, action, content); - } else { - logger.info(session.nid, action); + message.content = content; } + logger.info(JSON.stringify(message)); } -}); +} -logger.info(0, "STARTUP"); +logServerAction(0, "STARTUP"); server.listen(3000); diff --git a/public/js/dc b/public/js/dc index eae4725..649860c 160000 --- a/public/js/dc +++ b/public/js/dc @@ -1 +1 @@ -Subproject commit eae4725f5d2fbd2445f5b51f5f5af319d56fda52 +Subproject commit 649860c7f007ae41a89e1d6236748ba36292288f -- cgit v1.2.3-60-g2f50