wsDuplex.setClient() must be called after the proxy headers and proxied is set so its set during constructor call or the proxy headers will not be applied

This commit is contained in:
Notepid
2024-03-19 14:33:01 +01:00
committed by GitHub
parent 4133d16290
commit 2042fe27d7

View File

@@ -71,6 +71,25 @@ class WebSocketClient extends TelnetClient {
})(ws);
super(wsDuplex);
Log.trace({ headers: req.headers }, 'WebSocket connection headers');
//
// If the config allows it, look for 'x-forwarded-proto' as "https"
// to override |isSecure|
//
if (
true === _.get(Config(), 'loginServers.webSocket.proxied') &&
'https' === req.headers['x-forwarded-proto']
) {
Log.debug(
`Assuming secure connection due to X-Forwarded-Proto of "${req.headers['x-forwarded-proto']}"`
);
this.proxied = true;
} else {
this.proxied = false;
}
wsDuplex.setClient(this, req);
// fudge remoteAddress on socket, which is now TelnetSocket
@@ -91,24 +110,6 @@ class WebSocketClient extends TelnetClient {
ws.isConnectionAlive = true;
});
Log.trace({ headers: req.headers }, 'WebSocket connection headers');
//
// If the config allows it, look for 'x-forwarded-proto' as "https"
// to override |isSecure|
//
if (
true === _.get(Config(), 'loginServers.webSocket.proxied') &&
'https' === req.headers['x-forwarded-proto']
) {
Log.debug(
`Assuming secure connection due to X-Forwarded-Proto of "${req.headers['x-forwarded-proto']}"`
);
this.proxied = true;
} else {
this.proxied = false;
}
// start handshake process
this.banner();
}