chatweb / server /src /middleware /rateLimiter.ts
cnmksjs's picture
Upload 60 files
e3eb984 verified
import rateLimit from 'express-rate-limit'
// General rate limiter
export const rateLimiter = rateLimit({
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS || '900000'), // 15 minutes
max: parseInt(process.env.RATE_LIMIT_MAX_REQUESTS || '100'), // limit each IP to 100 requests per windowMs
message: {
success: false,
error: 'Too many requests, please try again later',
code: 'RATE_LIMIT_EXCEEDED'
},
standardHeaders: true,
legacyHeaders: false,
})
// Strict rate limiter for auth endpoints
export const authRateLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 5, // limit each IP to 5 requests per windowMs
message: {
success: false,
error: 'Too many authentication attempts, please try again later',
code: 'AUTH_RATE_LIMIT_EXCEEDED'
},
standardHeaders: true,
legacyHeaders: false,
})
// Message rate limiter
export const messageRateLimiter = rateLimit({
windowMs: 60 * 1000, // 1 minute
max: 30, // limit each IP to 30 messages per minute
message: {
success: false,
error: 'Too many messages, please slow down',
code: 'MESSAGE_RATE_LIMIT_EXCEEDED'
},
standardHeaders: true,
legacyHeaders: false,
})
// File upload rate limiter
export const uploadRateLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 10, // limit each IP to 10 uploads per 15 minutes
message: {
success: false,
error: 'Too many file uploads, please try again later',
code: 'UPLOAD_RATE_LIMIT_EXCEEDED'
},
standardHeaders: true,
legacyHeaders: false,
})