diff --git a/src/eventlog.js b/src/eventlog.js index 2c8e9b8d5..70ccb8d08 100644 --- a/src/eventlog.js +++ b/src/eventlog.js @@ -25,8 +25,11 @@ exports = module.exports = { ACTION_CERTIFICATE_RENEWAL: 'certificate.renew', - ACTION_MAILBOX_ADD: 'mailbox.add', - ACTION_MAILBOX_REMOVE: 'mailbox.remove', + ACTION_MAIL_MAILBOX_ADD: 'mail.box.add', + ACTION_MAIL_MAILBOX_REMOVE: 'mail.box.remove', + + ACTION_MAIL_LIST_ADD: 'mail.list.add', + ACTION_MAIL_LIST_REMOVE: 'mail.list.remove', ACTION_START: 'cloudron.start', ACTION_UPDATE: 'cloudron.update', diff --git a/src/mail.js b/src/mail.js index d8410094f..10ab57da1 100644 --- a/src/mail.js +++ b/src/mail.js @@ -933,7 +933,7 @@ function addMailbox(name, domain, userId, auditSource, callback) { if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(new MailError(MailError.ALREADY_EXISTS, `mailbox ${name} already exists`)); if (error) return callback(new MailError(MailError.INTERNAL_ERROR, error)); - eventlog.add(eventlog.ACTION_MAILBOX_ADD, auditSource, { name, domain, userId }); + eventlog.add(eventlog.ACTION_MAIL_MAILBOX_ADD, auditSource, { name, domain, userId }); callback(null); }); @@ -968,7 +968,7 @@ function removeMailbox(name, domain, auditSource, callback) { if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new MailError(MailError.NOT_FOUND, 'no such mailbox')); if (error) return callback(new MailError(MailError.INTERNAL_ERROR, error)); - eventlog.add(eventlog.ACTION_MAILBOX_REMOVE, auditSource, { name, domain }); + eventlog.add(eventlog.ACTION_MAIL_MAILBOX_REMOVE, auditSource, { name, domain }); callback(null); }); @@ -1054,10 +1054,11 @@ function getList(domain, listName, callback) { }); } -function addList(name, domain, members, callback) { +function addList(name, domain, members, auditSource, callback) { assert.strictEqual(typeof domain, 'string'); assert.strictEqual(typeof name, 'string'); assert(Array.isArray(members)); + assert.strictEqual(typeof auditSource, 'object'); assert.strictEqual(typeof callback, 'function'); name = name.toLowerCase(); @@ -1076,6 +1077,8 @@ function addList(name, domain, members, callback) { if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(new MailError(MailError.ALREADY_EXISTS, 'list already exits')); if (error) return callback(new MailError(MailError.INTERNAL_ERROR, error)); + eventlog.add(eventlog.ACTION_MAIL_LIST_ADD, auditSource, { name, domain }); + callback(); }); } @@ -1106,15 +1109,18 @@ function updateList(name, domain, members, callback) { }); } -function removeList(domain, listName, callback) { +function removeList(name, domain, auditSource, callback) { + assert.strictEqual(typeof name, 'string'); assert.strictEqual(typeof domain, 'string'); - assert.strictEqual(typeof listName, 'string'); + assert.strictEqual(typeof auditSource, 'object'); assert.strictEqual(typeof callback, 'function'); - mailboxdb.del(listName, domain, function (error) { + mailboxdb.del(name, domain, function (error) { if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new MailError(MailError.NOT_FOUND, 'no such list')); if (error) return callback(new MailError(MailError.INTERNAL_ERROR, error)); + eventlog.add(eventlog.ACTION_MAIL_LIST_ADD, auditSource, { name, domain }); + callback(); }); } diff --git a/src/routes/mail.js b/src/routes/mail.js index 3b72b7da3..d22752b15 100644 --- a/src/routes/mail.js +++ b/src/routes/mail.js @@ -354,7 +354,7 @@ function addList(req, res, next) { if (typeof req.body.members[i] !== 'string') return next(new HttpError(400, 'member must be a string')); } - mail.addList(req.body.name, req.params.domain, req.body.members, function (error) { + mail.addList(req.body.name, req.params.domain, req.body.members, auditSource(req), function (error) { if (error && error.reason === MailError.NOT_FOUND) return next(new HttpError(404, error.message)); if (error && error.reason === MailError.ALREADY_EXISTS) return next(new HttpError(409, 'list already exists')); if (error && error.reason === MailError.BAD_FIELD) return next(new HttpError(400, error.message)); @@ -387,7 +387,7 @@ function removeList(req, res, next) { assert.strictEqual(typeof req.params.domain, 'string'); assert.strictEqual(typeof req.params.name, 'string'); - mail.removeList(req.params.domain, req.params.name, function (error) { + mail.removeList(req.params.name, req.params.domain, auditSource(req), function (error) { if (error && error.reason === MailError.NOT_FOUND) return next(new HttpError(404, error.message)); if (error) return next(new HttpError(500, error));