summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace>2013-05-15 00:57:07 +1200
committerFreeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace>2013-05-15 00:57:07 +1200
commita2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3 (patch)
tree7e6089f73d73232fa9f113198673524744e711fe
parent0d9c66a773813fb4ba523324a3699b8be9e6625d (diff)
downloadmanavis-a2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3.tar.gz
manavis-a2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3.tar.bz2
manavis-a2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3.tar.xz
manavis-a2cb6ef6b7ebea41223f9a9a2cfb810d93ece1b3.zip
Log proxied IPs, make log format JSON
Easier to make things easily parseable now than have to deal with logs later.
-rw-r--r--index.js28
m---------public/js/dc0
2 files changed, 20 insertions, 8 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
-Subproject eae4725f5d2fbd2445f5b51f5f5af319d56fda5
+Subproject 649860c7f007ae41a89e1d6236748ba36292288