diff --git a/src/meta/blacklist.js b/src/meta/blacklist.js index 4a1eeeb71f..20f0e441ff 100644 --- a/src/meta/blacklist.js +++ b/src/meta/blacklist.js @@ -41,7 +41,7 @@ pubsub.on('blacklist:reload', Blacklist.load); Blacklist.save = function (rules, callback) { async.waterfall([ function (next) { - db.set('ip-blacklist-rules', rules, next); + db.setObject('ip-blacklist-rules', { rules: rules }, next); }, function (next) { Blacklist.load(next); @@ -51,7 +51,14 @@ Blacklist.save = function (rules, callback) { }; Blacklist.get = function (callback) { - db.get('ip-blacklist-rules', callback); + async.waterfall([ + function (next) { + db.getObject('ip-blacklist-rules', next); + }, + function (data, next) { + next(null, data && data.rules); + }, + ], callback); }; Blacklist.test = function (clientIp, callback) { diff --git a/src/upgrades/1.6.0/ipblacklist-fix.js b/src/upgrades/1.6.0/ipblacklist-fix.js new file mode 100644 index 0000000000..27afd49d97 --- /dev/null +++ b/src/upgrades/1.6.0/ipblacklist-fix.js @@ -0,0 +1,25 @@ +'use strict'; + +var async = require('async'); + +var db = require('../../database'); + +module.exports = { + name: 'Changing ip blacklist storage to object', + timestamp: Date.UTC(2017, 8, 7), + method: function (callback) { + var rules; + async.waterfall([ + function (next) { + db.get('ip-blacklist-rules', next); + }, + function (_rules, next) { + rules = _rules; + db.delete('ip-blacklist-rules', rules ? next : callback); + }, + function (next) { + db.setObject('ip-blacklist-rules', { rules: rules }, next); + }, + ], callback); + }, +};