flosight-api/plugins/ratelimiter.js
2015-08-13 10:58:42 -03:00

36 lines
912 B
JavaScript

var logger = require('../lib/logger').logger;
var preconditions = require('preconditions').singleton();
var limiter = require('connect-ratelimit');
var THREE_HOURS = 3* 60 * 60 * 1000;
module.exports.init = function(app, config) {
preconditions.checkArgument(app);
logger.info('Using ratelimiter plugin');
config = config || {};
config.whitelistRPH = config.whitelistRPH || 3*60*60*10;
config.normalRPH = config.normalRPH || 3*60*60;
config.blacklistRPH = config.blacklistRPH || 0;
app.use(limiter({
whitelist: [],
end: true,
blacklist: [], // 'example.com'
categories: {
whitelist: {
totalRequests: config.whitelistRPH,
every: THREE_HOURS
},
blacklist: {
totalRequests: config.blacklistRPH,
every: THREE_HOURS
},
normal: {
totalRequests: config.normalRPH,
every: THREE_HOURS
}
}
}));
};