diff --git a/server/index.js b/server/index.js index fa0742d..ecf2e0a 100644 --- a/server/index.js +++ b/server/index.js @@ -325,9 +325,15 @@ app.use('/', endpoints); */ wss.on('connection', (ws, request) => { const output = serverConfig.xdrd.wirelessConnection ? client : serialport; - const clientIp = request.headers['x-forwarded-for'] || request.connection.remoteAddress; + let clientIp = request.headers['x-forwarded-for'] || request.connection.remoteAddress; - let clientIpTest = clientIp.split(',')[0].trim(); + if (clientIp.includes(',')) { + /** + * if x-forwarded-for contains ',' it means that connection is going through multiple proxies. + * we want first address, which should be IP of the user. + */ + clientIp = clientIp.split(',')[0].trim(); + } if (clientIp !== '::ffff:127.0.0.1' || (request.connection && request.connection.remoteAddress && request.connection.remoteAddress !== '::ffff:127.0.0.1') || (request.headers && request.headers['origin'] && request.headers['origin'].trim() !== '')) { currentUsers++;