mirror of
https://github.com/wukko/cobalt.git
synced 2025-04-29 22:14:26 +02:00
api/core: customizable session rate limit params
This commit is contained in:
parent
59665af44a
commit
f70f88bc4c
@ -28,6 +28,9 @@ const env = {
|
|||||||
rateLimitWindow: (process.env.RATELIMIT_WINDOW && parseInt(process.env.RATELIMIT_WINDOW)) || 60,
|
rateLimitWindow: (process.env.RATELIMIT_WINDOW && parseInt(process.env.RATELIMIT_WINDOW)) || 60,
|
||||||
rateLimitMax: (process.env.RATELIMIT_MAX && parseInt(process.env.RATELIMIT_MAX)) || 20,
|
rateLimitMax: (process.env.RATELIMIT_MAX && parseInt(process.env.RATELIMIT_MAX)) || 20,
|
||||||
|
|
||||||
|
sessionRateLimitWindow: (process.env.SESSION_RATELIMIT_WINDOW && parseInt(process.env.SESSION_RATELIMIT_WINDOW)) || 60,
|
||||||
|
sessionRateLimit: (process.env.SESSION_RATELIMIT && parseInt(process.env.SESSION_RATELIMIT)) || 10,
|
||||||
|
|
||||||
durationLimit: (process.env.DURATION_LIMIT && parseInt(process.env.DURATION_LIMIT)) || 10800,
|
durationLimit: (process.env.DURATION_LIMIT && parseInt(process.env.DURATION_LIMIT)) || 10800,
|
||||||
streamLifespan: (process.env.TUNNEL_LIFESPAN && parseInt(process.env.TUNNEL_LIFESPAN)) || 90,
|
streamLifespan: (process.env.TUNNEL_LIFESPAN && parseInt(process.env.TUNNEL_LIFESPAN)) || 90,
|
||||||
|
|
||||||
|
@ -74,8 +74,8 @@ export const runAPI = async (express, app, __dirname, isPrimary = true) => {
|
|||||||
const keyGenerator = (req) => hashHmac(getIP(req), 'rate').toString('base64url');
|
const keyGenerator = (req) => hashHmac(getIP(req), 'rate').toString('base64url');
|
||||||
|
|
||||||
const sessionLimiter = rateLimit({
|
const sessionLimiter = rateLimit({
|
||||||
windowMs: 60000,
|
windowMs: env.sessionRateLimitWindow * 1000,
|
||||||
limit: 10,
|
limit: env.sessionRateLimit,
|
||||||
standardHeaders: 'draft-6',
|
standardHeaders: 'draft-6',
|
||||||
legacyHeaders: false,
|
legacyHeaders: false,
|
||||||
keyGenerator,
|
keyGenerator,
|
||||||
@ -91,7 +91,7 @@ export const runAPI = async (express, app, __dirname, isPrimary = true) => {
|
|||||||
keyGenerator: req => req.rateLimitKey || keyGenerator(req),
|
keyGenerator: req => req.rateLimitKey || keyGenerator(req),
|
||||||
store: await createStore('api'),
|
store: await createStore('api'),
|
||||||
handler: handleRateExceeded
|
handler: handleRateExceeded
|
||||||
})
|
});
|
||||||
|
|
||||||
const apiTunnelLimiter = rateLimit({
|
const apiTunnelLimiter = rateLimit({
|
||||||
windowMs: env.rateLimitWindow * 1000,
|
windowMs: env.rateLimitWindow * 1000,
|
||||||
@ -103,7 +103,7 @@ export const runAPI = async (express, app, __dirname, isPrimary = true) => {
|
|||||||
handler: (_, res) => {
|
handler: (_, res) => {
|
||||||
return res.sendStatus(429)
|
return res.sendStatus(429)
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
app.set('trust proxy', ['loopback', 'uniquelocal']);
|
app.set('trust proxy', ['loopback', 'uniquelocal']);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user