Major changes around events, event log, etc.

* User event log is now functional & attached to various events
* Add additional missing system events
* Completely re-write last_callers to have new functionality, etc.
* Events.addListenerMultipleEvents()
* New 'moduleInitialize' export for module init vs Event specific registerEvents
* Add docs on last_callers mod
This commit is contained in:
Bryan Ashby 2018-07-21 14:32:06 -06:00
parent c1ae3d88ba
commit 52585c78f0
16 changed files with 392 additions and 171 deletions

View file

@ -252,10 +252,16 @@ class StatLog {
appendUserLogEntry(user, logName, logValue, keepDays, cb) {
sysDb.run(
`INSERT INTO user_event_log (timestamp, user_id, log_name, log_value)
VALUES (?, ?, ?, ?);`,
[ this.now, user.userId, logName, logValue ],
() => {
`INSERT INTO user_event_log (timestamp, user_id, session_id, log_name, log_value)
VALUES (?, ?, ?, ?, ?);`,
[ this.now, user.userId, user.sessionId, logName, logValue ],
err => {
if(err) {
if(cb) {
cb(err);
}
return;
}
//
// Handle keepDays
//
@ -280,6 +286,33 @@ class StatLog {
}
);
}
initUserEvents(cb) {
//
// We map some user events directly to user stat log entries such that they
// are persisted for a time.
//
const Events = require('./events.js');
const systemEvents = Events.getSystemEvents();
const interestedEvents = [
systemEvents.NewUser,
systemEvents.UserUpload, systemEvents.UserDownload,
systemEvents.UserPostMessage, systemEvents.UserSendMail,
systemEvents.UserRunDoor,
];
Events.addListenerMultipleEvents(interestedEvents, (eventName, event) => {
this.appendUserLogEntry(
event.user,
'system_event',
eventName.replace(/^codes\.l33t\.enigma\.system\./, ''), // strip package name prefix
90
);
});
return cb(null);
}
}
module.exports = new StatLog();