mirror of
https://github.com/MasterAcnolo/Freedom-Loader.git
synced 2026-11-13 15:09:20 +01:00
42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
const RateLimit = require("express-rate-limit");
|
|
|
|
/**
|
|
* Rate limiter middleware used to protect public endpoints
|
|
* against abusive or excessive requests.
|
|
*
|
|
* Restrictions:
|
|
* - 5 requests per IP address
|
|
* - 15-minute sliding window
|
|
*
|
|
* When the limit is exceeded, a HTTP 429 (Too Many Requests)
|
|
* response is returned.
|
|
*/
|
|
const rateLimit = RateLimit({
|
|
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
max: 5,
|
|
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,
|
|
downloadRateLimit,
|
|
infoRateLimit,
|
|
}; |