From ac3e9d1e67cdb8e4cca89f95add693b7ff02125c Mon Sep 17 00:00:00 2001 From: jessop Date: Wed, 3 Jul 2019 17:21:58 -0400 Subject: [PATCH] adds ip whitelist --- .../middleware/autoblockPublishMiddleware.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/server/middleware/autoblockPublishMiddleware.js b/server/middleware/autoblockPublishMiddleware.js index 5238280b..dcd856fb 100644 --- a/server/middleware/autoblockPublishMiddleware.js +++ b/server/middleware/autoblockPublishMiddleware.js @@ -5,11 +5,13 @@ const { publishing: { publishingChannelWhitelist }, } = require('@config/siteConfig'); const ipBanFile = './site/config/ipBan.txt'; +const ipWhitelist = './site/config/ipWhitelist.txt'; const forbiddenMessage = '

Forbidden

If you are seeing this by mistake, please contact us using https://chat.lbry.com/'; const maxPublishesInTenMinutes = 20; let ipCounts = {}; let blockedAddresses = []; +let whitelistedAddresses = []; if (fs.existsSync(ipBanFile)) { const lineReader = require('readline').createInterface({ @@ -23,9 +25,28 @@ if (fs.existsSync(ipBanFile)) { }); } +// If a file called ipWhitelist.txt exists +// Please comment above each whitelisted IP why/who/when etc +// # Jim because he's awesome - January 2018 +if (fs.existsSync(ipWhitelist)) { + const lineReader = require('readline').createInterface({ + input: require('fs').createReadStream(ipWhitelist), + }); + + lineReader.on('line', line => { + if (line && line !== '' && line[0] !== '#') { + whitelistedAddresses.push(line); + } + }); +} + const autoblockPublishMiddleware = (req, res, next) => { let ip = (req.headers['x-forwarded-for'] || req.connection.remoteAddress).split(/,\s?/)[0]; + if (whitelistedAddresses.indexOf(ip) !== -1) { + next(); + return; + } if (blockedAddresses.indexOf(ip) !== -1) { res.status(403).send(forbiddenMessage); res.end();