Fix managed proxy TLS hostname validation

This commit is contained in:
clawsweeper
2026-05-03 08:52:30 +00:00
parent 128aa6699a
commit 80282afa05

View File

@@ -72,7 +72,10 @@ type GlobalAgentConnectConfiguration = Record<string, unknown> & {
host: string;
tls: Record<string, unknown>;
};
type GlobalAgentCreateConnection = (configuration: unknown, callback: unknown) => unknown;
type GlobalAgentCreateConnection = typeof https.globalAgent.createConnection;
type GlobalAgentCreateConnectionConfiguration = Parameters<GlobalAgentCreateConnection>[0];
type GlobalAgentCreateConnectionCallback = Parameters<GlobalAgentCreateConnection>[1];
type GlobalAgentCreateConnectionResult = ReturnType<GlobalAgentCreateConnection>;
type GlobalAgentHttpsAgent = {
createConnection: GlobalAgentCreateConnection;
};
@@ -258,7 +261,9 @@ function isGlobalAgentHttpsAgent(value: unknown): value is GlobalAgentHttpsAgent
return typeof value["createConnection"] === "function";
}
function withTlsTargetHost(configuration: unknown): unknown {
function withTlsTargetHost(
configuration: GlobalAgentCreateConnectionConfiguration,
): GlobalAgentCreateConnectionConfiguration {
if (!isGlobalAgentConnectConfiguration(configuration)) {
return configuration;
}
@@ -277,7 +282,7 @@ function withTlsTargetHost(configuration: unknown): unknown {
return {
...configuration,
tls: tlsOptions,
};
} as GlobalAgentCreateConnectionConfiguration;
}
function patchGlobalAgentHttpsConnectTlsTargetHost(): void {
@@ -286,13 +291,13 @@ function patchGlobalAgentHttpsConnectTlsTargetHost(): void {
return;
}
const createConnection = agent.createConnection;
const createConnection = agent.createConnection.bind(agent);
agent.createConnection = function createConnectionWithTlsTargetHost(
this: unknown,
configuration: unknown,
callback: unknown,
): unknown {
return createConnection.call(this, withTlsTargetHost(configuration), callback);
configuration: GlobalAgentCreateConnectionConfiguration,
callback?: GlobalAgentCreateConnectionCallback,
): GlobalAgentCreateConnectionResult {
return createConnection(withTlsTargetHost(configuration), callback);
};
patchedGlobalAgentHttpsAgents.add(agent);
}