mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-02-04 21:09:18 +08:00
67 lines
1.5 KiB
JavaScript
67 lines
1.5 KiB
JavaScript
const rateLimit = require("express-rate-limit");
|
|
|
|
let multiplier = process.env.MODE === "dev" ? 100 : 1;
|
|
|
|
exports.limit60perhour = rateLimit({
|
|
windowMs: 60 * 60 * 1000, // 60 min
|
|
max: 60 * multiplier,
|
|
message: {
|
|
message: "Too many requests, please try again later",
|
|
},
|
|
keyGenerator: (req) => {
|
|
return `${
|
|
req.headers["cf-connecting-ip"] ||
|
|
req.headers["x-forwarded-for"] ||
|
|
req.ip ||
|
|
"255.255.255.255"
|
|
}`;
|
|
},
|
|
});
|
|
|
|
exports.limit3perday = rateLimit({
|
|
windowMs: 24 * 60 * 60 * 1000, // 1 day
|
|
max: 3 * multiplier,
|
|
message: {
|
|
message: "Too many requests, please try again later",
|
|
},
|
|
keyGenerator: (req) => {
|
|
return `${
|
|
req.headers["cf-connecting-ip"] ||
|
|
req.headers["x-forwarded-for"] ||
|
|
req.ip ||
|
|
"255.255.255.255"
|
|
}`;
|
|
},
|
|
});
|
|
|
|
exports.limit1persec = rateLimit({
|
|
windowMs: 60 * 1000,
|
|
max: 60 * multiplier,
|
|
message: {
|
|
message: "Too many requests, please try again later",
|
|
},
|
|
keyGenerator: (req) => {
|
|
return `${
|
|
req.headers["cf-connecting-ip"] ||
|
|
req.headers["x-forwarded-for"] ||
|
|
req.ip ||
|
|
"255.255.255.255"
|
|
}`;
|
|
},
|
|
});
|
|
|
|
exports.limit500perhour = rateLimit({
|
|
windowMs: 60 * 60 * 1000,
|
|
max: 500 * multiplier,
|
|
message: {
|
|
message: "Too many requests, please try again later",
|
|
},
|
|
keyGenerator: (req) => {
|
|
return `${
|
|
req.headers["cf-connecting-ip"] ||
|
|
req.headers["x-forwarded-for"] ||
|
|
req.ip ||
|
|
"255.255.255.255"
|
|
}`;
|
|
},
|
|
});
|