30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import rateLimit from 'express-rate-limit';
|
|
|
|
// General API rate limit
|
|
export const apiLimiter = rateLimit({
|
|
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
max: 100, // Limit each IP to 100 requests per windowMs
|
|
message: { error: 'rate_limit_exceeded', message: 'Too many requests, please try again later.' },
|
|
standardHeaders: true,
|
|
legacyHeaders: false,
|
|
});
|
|
|
|
// Strict rate limit for auth endpoints (prevent brute force)
|
|
export const authLimiter = rateLimit({
|
|
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
max: 5, // Limit each IP to 5 requests per windowMs
|
|
message: { error: 'rate_limit_exceeded', message: 'Too many authentication attempts, please try again later.' },
|
|
standardHeaders: true,
|
|
legacyHeaders: false,
|
|
skipSuccessfulRequests: true, // Don't count successful logins
|
|
});
|
|
|
|
// Moderate rate limit for monitor checks
|
|
export const checkLimiter = rateLimit({
|
|
windowMs: 5 * 60 * 1000, // 5 minutes
|
|
max: 20, // Limit each IP to 20 manual checks per 5 minutes
|
|
message: { error: 'rate_limit_exceeded', message: 'Too many manual checks, please wait before trying again.' },
|
|
standardHeaders: true,
|
|
legacyHeaders: false,
|
|
});
|