mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-07-05 07:47:26 +02:00
closes #5919
This commit is contained in:
@@ -20,7 +20,7 @@ Blacklist.load = function (callback) {
|
||||
Blacklist.get,
|
||||
Blacklist.validate,
|
||||
function (rules, next) {
|
||||
winston.verbose('[meta/blacklist] Loading ' + rules.valid.length + ' blacklist rules');
|
||||
winston.verbose('[meta/blacklist] Loading ' + rules.valid.length + ' blacklist rule(s)' + (rules.duplicateCount > 0 ? ', ignored ' + rules.duplicateCount + ' duplicate(s)' : ''));
|
||||
if (rules.invalid.length) {
|
||||
winston.warn('[meta/blacklist] ' + rules.invalid.length + ' invalid blacklist rule(s) were ignored.');
|
||||
}
|
||||
@@ -44,8 +44,8 @@ Blacklist.save = function (rules, callback) {
|
||||
db.set('ip-blacklist-rules', rules, next);
|
||||
},
|
||||
function (next) {
|
||||
Blacklist.load(next);
|
||||
pubsub.publish('blacklist:reload');
|
||||
setImmediate(next);
|
||||
},
|
||||
], callback);
|
||||
};
|
||||
@@ -101,6 +101,7 @@ Blacklist.validate = function (rules, callback) {
|
||||
var ipv6 = [];
|
||||
var cidr = [];
|
||||
var invalid = [];
|
||||
var duplicateCount = 0;
|
||||
|
||||
var inlineCommentMatch = /#.*$/;
|
||||
var whitelist = ['127.0.0.1', '::1', '::ffff:0:127.0.0.1'];
|
||||
@@ -112,6 +113,16 @@ Blacklist.validate = function (rules, callback) {
|
||||
return rule.length && !rule.startsWith('#') ? rule : null;
|
||||
}).filter(Boolean);
|
||||
|
||||
// Filter out duplicates
|
||||
rules = rules.filter(function (rule, index) {
|
||||
const pass = rules.indexOf(rule) === index;
|
||||
if (!pass) {
|
||||
duplicateCount += 1;
|
||||
}
|
||||
|
||||
return pass;
|
||||
});
|
||||
|
||||
// Filter out invalid rules
|
||||
rules = rules.filter(function (rule) {
|
||||
var addr;
|
||||
@@ -157,6 +168,7 @@ Blacklist.validate = function (rules, callback) {
|
||||
cidr: cidr,
|
||||
valid: rules,
|
||||
invalid: invalid,
|
||||
duplicateCount: duplicateCount,
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user