feat: add originalReq.remoteAddress & originalReq.remotePort

This commit is contained in:
avwo
2021-12-15 00:27:09 +08:00
parent 26e9a01c03
commit cc75c4e181
8 changed files with 41 additions and 13 deletions
+8 -4
View File
@@ -38,11 +38,11 @@ var proxy, server;
function handleWebsocket(socket, clientIp, clientPort) {
var wss = socket.isHttps;
clientIp = util.removeIPV6Prefix(clientIp || socket.remoteAddress);
clientIp = util.removeIPV6Prefix(clientIp || socket._remoteAddr || socket.remoteAddress);
socket.clientIp = clientIp;
socket.method = 'GET';
socket.reqId = util.getReqId();
socket.clientPort = clientPort || socket.remotePort;
socket.clientPort = clientPort || socket._remotePort || socket.remotePort;
rules.initHeaderRules(socket);
pluginMgr.resolvePipePlugin(socket, function() {
socket.rules = rules.initRules(socket);
@@ -745,7 +745,8 @@ function addReqInfo(req) {
if (remoteData) {
req.isHttpH2 = remoteData.isHttpH2;
socket._remoteDataInfo = remoteData;
headers[config.CLIENT_INFO_HEAD] = (remoteData.clientIp || LOCALHOST) + ',' + remoteData.clientPort;
headers[config.CLIENT_INFO_HEAD] = (remoteData.clientIp || LOCALHOST) + ',' + remoteData.clientPort +
',' + remoteData.remoteAddr + ',' + remoteData.remotePort;
var tunnelFirst = remoteData.tunnelFirst;
if (remoteData.clientId) {
headers[config.CLIENT_ID_HEADER] = remoteData.clientId;
@@ -912,7 +913,8 @@ var CONNECT_RE = /^CONNECT$/i;
function addClientInfo(socket, chunk, statusLine, clientIp, clientPort) {
var len = Buffer.byteLength(statusLine);
chunk = chunk.slice(len);
statusLine += '\r\n' + config.CLIENT_INFO_HEAD + ': ' + clientIp + ',' + clientPort;
statusLine += '\r\n' + config.CLIENT_INFO_HEAD + ': ' + clientIp + ',' + clientPort +
',' + socket._remoteAddr + ',' + socket._remotePort;
var clientId = socket.headers[config.CLIENT_ID_HEADER];
if (clientId) {
statusLine += '\r\n' + config.TEMP_CLIENT_ID_HEADER + ': ' + clientId;
@@ -1032,6 +1034,8 @@ module.exports = function(socket, next, isWebPort) {
tunnelTmplData.set(reqSocket.localPort + ':' + reqSocket.remotePort, {
clientIp: clientIp,
clientPort: clientPort,
remoteAddr: socket._remoteAddr,
remotePort: socket._remotePort,
clientId: headers[config.CLIENT_ID_HEADER],
proxyAuth: disable.tunnelAuthHeader ? undefined : headers['proxy-authorization'],
tunnelData: tunnelData,