From 8df6838561d003bbee169143516f7c10ac8e1e26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 4 Oct 2018 15:09:18 -0400 Subject: [PATCH] closes #6816 --- src/events.js | 2 ++ src/socket.io/blacklist.js | 30 ++++++++++++++++-------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/events.js b/src/events.js index 5ba1546a40..34dcf15ec4 100644 --- a/src/events.js +++ b/src/events.js @@ -36,6 +36,8 @@ events.types = [ 'password-change', 'email-change', 'username-change', + 'ip-blacklist-save', + 'ip-blacklist-addRule', 'registration-approved', 'registration-rejected', 'accept-membership', diff --git a/src/socket.io/blacklist.js b/src/socket.io/blacklist.js index d4f1481508..a44b5fef18 100644 --- a/src/socket.io/blacklist.js +++ b/src/socket.io/blacklist.js @@ -5,6 +5,7 @@ var async = require('async'); var user = require('../user'); var meta = require('../meta'); +var events = require('../events'); var SocketBlacklist = module.exports; @@ -13,21 +14,14 @@ SocketBlacklist.validate = function (socket, data, callback) { }; SocketBlacklist.save = function (socket, rules, callback) { - async.waterfall([ - function (next) { - user.isAdminOrGlobalMod(socket.uid, next); - }, - function (isAdminOrGlobalMod, next) { - if (!isAdminOrGlobalMod) { - return callback(new Error('[[error:no-privileges]]')); - } - - meta.blacklist.save(rules, next); - }, - ], callback); + blacklist(socket, 'save', rules, callback); }; SocketBlacklist.addRule = function (socket, rule, callback) { + blacklist(socket, 'addRule', rule, callback); +}; + +function blacklist(socket, method, rule, callback) { async.waterfall([ function (next) { user.isAdminOrGlobalMod(socket.uid, next); @@ -37,7 +31,15 @@ SocketBlacklist.addRule = function (socket, rule, callback) { return callback(new Error('[[error:no-privileges]]')); } - meta.blacklist.addRule(rule, next); + meta.blacklist[method](rule, next); + }, + function (next) { + events.log({ + type: 'ip-blacklist-' + method, + uid: socket.uid, + ip: socket.ip, + rule: rule, + }, next); }, ], callback); -}; +} \ No newline at end of file