diff --git a/packages/cubejs-api-gateway/src/jwk.ts b/packages/cubejs-api-gateway/src/jwk.ts index 06ae30ed6150a..84f31aca63063 100644 --- a/packages/cubejs-api-gateway/src/jwk.ts +++ b/packages/cubejs-api-gateway/src/jwk.ts @@ -1,6 +1,6 @@ /* eslint-disable no-restricted-syntax */ import crypto from 'crypto'; -import { asyncMemoizeBackground, asyncRetry, BackgroundMemoizeOptions } from '@cubejs-backend/shared'; +import { asyncMemoizeBackground, asyncRetry, BackgroundMemoizeOptions, getHttpAgentForProxySettings } from '@cubejs-backend/shared'; import fetch from 'node-fetch'; import jwkToPem from 'jwk-to-pem'; import { JWTOptions } from './interfaces'; @@ -51,7 +51,7 @@ export type JWKsFetcherOptions = Pick, 'onBac export const createJWKsFetcher = (jwtOptions: JWTOptions, options: JWKsFetcherOptions) => { const fetchJwkUrl = asyncMemoizeBackground(async (url: string) => { - const response = await asyncRetry(() => fetch(url), { + const response = await asyncRetry(() => fetch(url, { agent: await getHttpAgentForProxySettings() }), { times: jwtOptions.jwkRetry || 3, }); const json = await response.json(); diff --git a/packages/cubejs-backend-shared/package.json b/packages/cubejs-backend-shared/package.json index 64be9e7a0b8e5..0cd5f2e2f1ca4 100644 --- a/packages/cubejs-backend-shared/package.json +++ b/packages/cubejs-backend-shared/package.json @@ -42,7 +42,7 @@ "decompress": "^4.2.1", "env-var": "^6.3.0", "fs-extra": "^9.1.0", - "http-proxy-agent": "^4.0.1", + "proxy-agent": "^6.4.0", "moment-range": "^4.0.1", "moment-timezone": "^0.5.46", "node-fetch": "^2.6.1", diff --git a/packages/cubejs-backend-shared/src/proxy.ts b/packages/cubejs-backend-shared/src/proxy.ts index 5f7ace5a654ad..923d41b6cf847 100644 --- a/packages/cubejs-backend-shared/src/proxy.ts +++ b/packages/cubejs-backend-shared/src/proxy.ts @@ -1,5 +1,5 @@ import { exec } from 'child_process'; -import HttpsProxyAgent from 'http-proxy-agent'; +import { ProxyAgent } from 'proxy-agent'; function getCommandOutput(command: string) { return new Promise((resolve, reject) => { @@ -14,6 +14,7 @@ function getCommandOutput(command: string) { }); } +// deprecated, use ProxyAgent instead export async function getProxySettings() { const [proxy] = ( await Promise.all([getCommandOutput('npm config -g get https-proxy'), getCommandOutput('npm config -g get proxy')]) @@ -25,7 +26,5 @@ export async function getProxySettings() { } export async function getHttpAgentForProxySettings() { - const proxy = await getProxySettings(); - - return proxy ? HttpsProxyAgent(proxy) : undefined; + return new ProxyAgent(); }