Spaces:
Runtime error
Runtime error
| import rateLimit from 'express-rate-limit'; | |
| import Logger from '../services/logger.js'; | |
| const IS_RENDER = process.env.RENDER === 'true' || !!process.env.RENDER_SERVICE_NAME; | |
| const customKeyGenerator = (req) => { | |
| if (IS_RENDER) { | |
| const forwarded = req.headers['x-forwarded-for']; | |
| return forwarded ? forwarded.split(',')[0].trim() : req.connection.remoteAddress; | |
| } | |
| const forwarded = req.headers['x-forwarded-for']; | |
| const ip = forwarded ? forwarded.split(',')[0].trim() : req.connection.remoteAddress; | |
| return ip; | |
| }; | |
| const skip = (req) => { | |
| if (IS_RENDER) return false; | |
| if (process.env.NODE_ENV === 'development') { | |
| const ip = req.ip || req.connection.remoteAddress; | |
| return ip === '127.0.0.1' || ip === '::1' || ip === '::ffff:127.0.0.1'; | |
| } | |
| return false; | |
| }; | |
| export const apiLimiter = rateLimit({ | |
| windowMs: 15 * 60 * 1000, | |
| max: IS_RENDER ? 100 : 200, | |
| keyGenerator: customKeyGenerator, | |
| skip: skip, | |
| standardHeaders: true, | |
| legacyHeaders: false, | |
| validate: { | |
| trustProxy: false, | |
| xForwardedForHeader: false, | |
| } | |
| }); | |
| export const memberLimiter = rateLimit({ | |
| windowMs: 1 * 60 * 1000, | |
| max: IS_RENDER ? 30 : 60, | |
| keyGenerator: customKeyGenerator, | |
| skip: skip, | |
| validate: { | |
| trustProxy: false, | |
| xForwardedForHeader: false, | |
| } | |
| }); | |
| export const scraperLimiter = apiLimiter; | |