v1.18.x
Julian Lam 8 years ago
parent e5eaab3494
commit 2c2a28c5b6

@ -20,7 +20,7 @@ Blacklist.load = function (callback) {
Blacklist.get, Blacklist.get,
Blacklist.validate, Blacklist.validate,
function (rules, next) { 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) { if (rules.invalid.length) {
winston.warn('[meta/blacklist] ' + rules.invalid.length + ' invalid blacklist rule(s) were ignored.'); 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); db.set('ip-blacklist-rules', rules, next);
}, },
function (next) { function (next) {
Blacklist.load(next);
pubsub.publish('blacklist:reload'); pubsub.publish('blacklist:reload');
setImmediate(next);
}, },
], callback); ], callback);
}; };
@ -101,6 +101,7 @@ Blacklist.validate = function (rules, callback) {
var ipv6 = []; var ipv6 = [];
var cidr = []; var cidr = [];
var invalid = []; var invalid = [];
var duplicateCount = 0;
var inlineCommentMatch = /#.*$/; var inlineCommentMatch = /#.*$/;
var whitelist = ['127.0.0.1', '::1', '::ffff:0:127.0.0.1']; 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; return rule.length && !rule.startsWith('#') ? rule : null;
}).filter(Boolean); }).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 // Filter out invalid rules
rules = rules.filter(function (rule) { rules = rules.filter(function (rule) {
var addr; var addr;
@ -157,6 +168,7 @@ Blacklist.validate = function (rules, callback) {
cidr: cidr, cidr: cidr,
valid: rules, valid: rules,
invalid: invalid, invalid: invalid,
duplicateCount: duplicateCount,
}); });
}; };

Loading…
Cancel
Save