mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-15 16:07:03 +03:00
Add vote rate limit
This commit is contained in:
@@ -3,8 +3,11 @@ var express = require('express');
|
||||
var app = express();
|
||||
var config = require('./config.js');
|
||||
var redis = require('./utils/redis.js');
|
||||
const getIP = require('./utils/getIP.js');
|
||||
const getHash = require('./utils/getHash.js');
|
||||
|
||||
// Middleware
|
||||
const voteRateLimitMiddleware = require('./middleware/voteRateLimit.js');
|
||||
var corsMiddleware = require('./middleware/cors.js');
|
||||
var loggerMiddleware = require('./middleware/logger.js');
|
||||
const userCounter = require('./middleware/userCounter.js');
|
||||
@@ -59,8 +62,8 @@ app.post('/api/skipSegments', postSkipSegments);
|
||||
app.get('/api/skipSegments/:prefix', getSkipSegmentsByHash);
|
||||
|
||||
//voting endpoint
|
||||
app.get('/api/voteOnSponsorTime', voteOnSponsorTime.endpoint);
|
||||
app.post('/api/voteOnSponsorTime', voteOnSponsorTime.endpoint);
|
||||
app.get('/api/voteOnSponsorTime', voteRateLimitMiddleware, voteOnSponsorTime.endpoint);
|
||||
app.post('/api/voteOnSponsorTime', voteRateLimitMiddleware, voteOnSponsorTime.endpoint);
|
||||
|
||||
//Endpoint when a sponsorTime is used up
|
||||
app.get('/api/viewedVideoSponsorTime', viewedVideoSponsorTime);
|
||||
|
||||
18
src/middleware/voteRateLimit.js
Normal file
18
src/middleware/voteRateLimit.js
Normal file
@@ -0,0 +1,18 @@
|
||||
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,
|
||||
headers: false,
|
||||
keyGenerator: (req /*, res*/) => {
|
||||
return getHash(req.ip, 1);
|
||||
},
|
||||
skip: (/*req, res*/) => {
|
||||
// skip rate limit if running in test mode
|
||||
return process.env.npm_lifecycle_script === 'node test.js';
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user