feat: implement rate limits for downloads and info requests

This commit is contained in:
MasterAcnolo
2026-10-28 21:43:31 +01:00
parent 0da6df03cb
commit fbe30f7ee2
3 changed files with 37 additions and 9 deletions

View File

@@ -1,6 +1,5 @@
const RateLimit = require("express-rate-limit");
/**
* Rate limiter middleware used to protect public endpoints
* against abusive or excessive requests.
@@ -15,10 +14,29 @@ const RateLimit = require("express-rate-limit");
const rateLimit = RateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 5,
message: "Too many requests, please try again later.",
statusCode: 429,
message: {error: {code: "RATE_LIMITED", message: "Too many requests, please try again later."}},
standardHeaders: true,
legacyHeaders: false,
});
const downloadRateLimit = RateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100,
message: {error: {code: "RATE_LIMITED", message: "Too many download requests, please try again later."}},
standardHeaders: true,
legacyHeaders: false,
});
const infoRateLimit = RateLimit({
windowMs: 60 * 1000, // 1 minute
max: 60,
message: {error: {code: "RATE_LIMITED", message: "Too many info requests, please try again later."}},
standardHeaders: true,
legacyHeaders: false,
});
module.exports = {
rateLimit
}
rateLimit,
downloadRateLimit,
infoRateLimit,
};