diff --git a/.env b/.env index 2128631..5be4214 100644 --- a/.env +++ b/.env @@ -3,6 +3,7 @@ PORT=8080 ELECTRUMX_PORT=50010 ELECTRUMX_HOST=127.0.0.1 TRUST_PROXY=true +RATE_LIMIT_STATUS=true RATE_LIMIT_WINDOW_SECONDS=60 RATE_LIMIT_DELAY_AFTER=15 RATE_LIMIT_DELAY_MS=300 diff --git a/.env.sample b/.env.sample index 9f4b0ab..8316d09 100644 --- a/.env.sample +++ b/.env.sample @@ -3,6 +3,7 @@ PORT=8080 ELECTRUMX_PORT=50010 ELECTRUMX_HOST=127.0.0.1 TRUST_PROXY=true +RATE_LITMITS_STATUS=true RATE_LIMIT_WINDOW_SECONDS=900 RATE_LIMIT_DELAY_AFTER=100 -RATE_LIMIT_DELAY_MS=500 \ No newline at end of file +RATE_LIMIT_DELAY_MS=500 diff --git a/src/app.ts b/src/app.ts index d420976..3cf906a 100644 --- a/src/app.ts +++ b/src/app.ts @@ -109,14 +109,16 @@ if (process.env.TRUST_PROXY === 'true') { app.enable('trust proxy'); // only if you're behind a reverse proxy (Heroku, Bluemix, AWS if you use an ELB, custom Nginx setup, etc) } -const speedLimiter = slowDown({ - windowMs: process.env.RATE_LIMIT_WINDOW_SECONDS ? parseInt(process.env.RATE_LIMIT_WINDOW_SECONDS, 10) * 1000 : 15 * 60 * 1000, // 15 minutes - delayAfter: process.env.RATE_LIMIT_DELAY_AFTER ? parseInt(process.env.RATE_LIMIT_DELAY_AFTER, 10) : 100, // allow 100 requests per 15 minutes, then... - delayMs: process.env.RATE_LIMIT_DELAY_MS ? parseInt(process.env.RATE_LIMIT_DELAY_MS, 10) : 500, // begin adding 500ms of delay per request above 100: -}); - -// apply to all requests -app.use(speedLimiter); +if (process.env.RATE_LIMIT_STATUS === 'true'){ + const speedLimiter = slowDown({ + windowMs: process.env.RATE_LIMIT_WINDOW_SECONDS ? parseInt(process.env.RATE_LIMIT_WINDOW_SECONDS, 10) * 1000 : 15 * 60 * 1000, // 15 minutes + delayAfter: process.env.RATE_LIMIT_DELAY_AFTER ? parseInt(process.env.RATE_LIMIT_DELAY_AFTER, 10) : 100, // allow 100 requests per 15 minutes, then... + delayMs: process.env.RATE_LIMIT_DELAY_MS ? parseInt(process.env.RATE_LIMIT_DELAY_MS, 10) : 500, // begin adding 500ms of delay per request above 100: + }); + + // apply to all requests + app.use(speedLimiter); +} console.log('process.env.ELECTRUMX_PORT', process.env.ELECTRUMX_PORT);