Setup different ratelimit for views and votes

This commit is contained in:
Ajay Ramachandran
2020-10-11 13:07:57 -04:00
parent 73b7332639
commit a5f5f72346
4 changed files with 38 additions and 18 deletions

View File

@@ -1,15 +1,15 @@
const config = require('../config.js');
const getIP = require('../utils/getIP.js');
const getHash = require('../utils/getHash.js');
const rateLimit = require('express-rate-limit');
module.exports = rateLimit({
windowMs: config.rateLimit.vote.windowMs,
max: config.rateLimit.vote.max,
message: config.rateLimit.vote.message,
module.exports = (limitConfig) => rateLimit({
windowMs: limitConfig.windowMs,
max: limitConfig.max,
message: limitConfig.message,
statusCode: limitConfig.statusCode,
headers: false,
keyGenerator: (req /*, res*/) => {
return getHash(req.ip, 1);
return getHash(getIP(req), 1);
},
skip: (/*req, res*/) => {
// skip rate limit if running in test mode