Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -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
3 changes: 2 additions & 1 deletion .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -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
RATE_LIMIT_DELAY_MS=500
18 changes: 10 additions & 8 deletions src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down