From bd19f477f7835936d42272fc0d0a38abba6ee4f8 Mon Sep 17 00:00:00 2001 From: cherryace Date: Fri, 19 Dec 2025 17:57:33 -0800 Subject: [PATCH 1/2] Using port from req url when creating proxy request instead of hardcoded port 443 --- .../src/registryProxy/mitmRequestHandler.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/safe-chain/src/registryProxy/mitmRequestHandler.js b/packages/safe-chain/src/registryProxy/mitmRequestHandler.js index cf2af5b..6218280 100644 --- a/packages/safe-chain/src/registryProxy/mitmRequestHandler.js +++ b/packages/safe-chain/src/registryProxy/mitmRequestHandler.js @@ -15,7 +15,7 @@ import { gunzipSync, gzipSync } from "zlib"; */ export function mitmConnect(req, clientSocket, interceptor) { ui.writeVerbose(`Safe-chain: Set up MITM tunnel for ${req.url}`); - const { hostname } = new URL(`http://${req.url}`); + const { hostname, port } = new URL(`http://${req.url}`); clientSocket.on("error", (err) => { ui.writeVerbose( @@ -26,7 +26,7 @@ export function mitmConnect(req, clientSocket, interceptor) { // Not subscribing to 'close' event will cause node to throw and crash. }); - const server = createHttpsServer(hostname, interceptor); + const server = createHttpsServer(hostname, port, interceptor); server.on("error", (err) => { ui.writeError(`Safe-chain: HTTPS server error: ${err.message}`); @@ -46,10 +46,11 @@ export function mitmConnect(req, clientSocket, interceptor) { /** * @param {string} hostname + * @param {string} port * @param {Interceptor} interceptor * @returns {import("https").Server} */ -function createHttpsServer(hostname, interceptor) { +function createHttpsServer(hostname, port, interceptor) { const cert = generateCertForHost(hostname); /** @@ -80,7 +81,7 @@ function createHttpsServer(hostname, interceptor) { } // Collect request body - forwardRequest(req, hostname, res, requestInterceptor); + forwardRequest(req, hostname, port, res, requestInterceptor); } const server = https.createServer( @@ -109,11 +110,12 @@ function getRequestPathAndQuery(url) { /** * @param {import("http").IncomingMessage} req * @param {string} hostname + * @param {string} port * @param {import("http").ServerResponse} res * @param {import("./interceptors/interceptorBuilder.js").RequestInterceptionHandler} requestHandler */ -function forwardRequest(req, hostname, res, requestHandler) { - const proxyReq = createProxyRequest(hostname, req, res, requestHandler); +function forwardRequest(req, hostname, port, res, requestHandler) { + const proxyReq = createProxyRequest(hostname, port, req, res, requestHandler); proxyReq.on("error", (err) => { ui.writeVerbose( @@ -144,13 +146,14 @@ function forwardRequest(req, hostname, res, requestHandler) { /** * @param {string} hostname + * @param {string} port * @param {import("http").IncomingMessage} req * @param {import("http").ServerResponse} res * @param {import("./interceptors/interceptorBuilder.js").RequestInterceptionHandler} requestHandler * * @returns {import("http").ClientRequest} */ -function createProxyRequest(hostname, req, res, requestHandler) { +function createProxyRequest(hostname, port, req, res, requestHandler) { /** @type {NodeJS.Dict | undefined} */ let headers = { ...req.headers }; // Remove the host header from the incoming request before forwarding. @@ -163,7 +166,7 @@ function createProxyRequest(hostname, req, res, requestHandler) { /** @type {import("http").RequestOptions} */ const options = { hostname: hostname, - port: 443, + port: port, path: req.url, method: req.method, headers: { ...headers }, From 3b6beb7f1665523132117bbbd1f05068390ad869 Mon Sep 17 00:00:00 2001 From: jassanw Date: Fri, 19 Dec 2025 18:49:58 -0800 Subject: [PATCH 2/2] default to port 443 if port is null or empty --- packages/safe-chain/src/registryProxy/mitmRequestHandler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/safe-chain/src/registryProxy/mitmRequestHandler.js b/packages/safe-chain/src/registryProxy/mitmRequestHandler.js index 6218280..8268559 100644 --- a/packages/safe-chain/src/registryProxy/mitmRequestHandler.js +++ b/packages/safe-chain/src/registryProxy/mitmRequestHandler.js @@ -166,7 +166,7 @@ function createProxyRequest(hostname, port, req, res, requestHandler) { /** @type {import("http").RequestOptions} */ const options = { hostname: hostname, - port: port, + port: port || 443, path: req.url, method: req.method, headers: { ...headers },