DEVessi/devops_sandbox
0
1/**2 * Simple in-memory rate limiter middleware.3 * Tracks request counts per IP within a sliding window.4 */5const requestCounts = new Map();6 7function rateLimiter(req, res, next) {8 const ip = req.ip || req.connection.remoteAddress || 'unknown';9 const now = Date.now();10 const windowMs = 60000; // 1 minute window11 const maxRequests = 100;12 13 if (!requestCounts.has(ip)) {14 requestCounts.set(ip, { count: 1, windowStart: now });15 return next();16 }17 18 const record = requestCounts.get(ip);19 20 if (now - record.windowStart > windowMs) {21 // Reset window22 record.count = 1;23 record.windowStart = now;24 return next();25 }26 27 record.count++;28 29 if (record.count > maxRequests) {30 return res.status(429).json({31 error: 'Too many requests',32 retryAfter: Math.ceil((record.windowStart + windowMs - now) / 1000)33 });34 }35 36 next();37}38 39module.exports = { rateLimiter };40 