From 718d601c5b4a8037006905a521771cd399c19035 Mon Sep 17 00:00:00 2001 From: ChrisChrome Date: Sun, 1 Jan 2023 20:11:04 -0700 Subject: [PATCH] Just goes to show, test locally --- index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 6f098f1..6dc14b9 100644 --- a/index.js +++ b/index.js @@ -344,6 +344,8 @@ setInterval(() => { }, config.updateInterval * 1000); updateMasterList(); if (config.rateLimiterEnabled) { + const rateLimiterWarnings = new Set(); + app.use(rateLimit({ windowMs: config.rateLimitWindow * 60 * 1000, // X minutes max: config.rateLimitMax, // limit each IP to X requests per windowMs. @@ -352,19 +354,22 @@ if (config.rateLimiterEnabled) { }, skipFailedRequests: true, handler: function (req, res /*, next*/ ) { + const ip = config.behindProxy ? req.headers['x-real-ip'] : req.ip; const remainingTime = Math.round((req.rateLimit.resetTime - Date.now()) / 1000); res.status(429).json({ error: 'Too Many Requests', message: `You have exceeded the rate limit. Please try again in ${remainingTime} seconds.`, remainingTime: remainingTime }); - if (!req.rateLimit.remaining) { - console.log(`${colors.red(`[ERROR ${new Date()}]`)} ${req.headers["user-agent"]}@${config.behindProxy ? req.headers['x-real-ip'] : req.ip} exceeded rate limit!`); + if (req.rateLimit.remaining === 0 && !rateLimiterWarnings.has(ip)) { + rateLimiterWarnings.add(ip); + console.log(`${colors.red(`[ERROR ${new Date()}]`)} ${req.headers["user-agent"]}@${ip} exceeded rate limit!`); } } })); } + app.get('/check', (req, res) => { // Check that all required parameters are present if (!req.query.address) {