From d5956072f0942ba55836ea2f7d870222696288b3 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sat, 14 Sep 2024 10:28:06 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E4=BB=A3=E7=90=86=E5=88=9D=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/pipeline/package.json | 1 + .../core/pipeline/src/utils/util.request.ts | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/core/pipeline/package.json b/packages/core/pipeline/package.json index 8bf5d91b..963fe489 100644 --- a/packages/core/pipeline/package.json +++ b/packages/core/pipeline/package.json @@ -20,6 +20,7 @@ "lodash-es": "^4.17.21", "node-forge": "^1.3.1", "nodemailer": "^6.9.3", + "proxy-agent": "^6.4.0", "qs": "^6.11.2" }, "devDependencies": { diff --git a/packages/core/pipeline/src/utils/util.request.ts b/packages/core/pipeline/src/utils/util.request.ts index 84332a8d..e434de26 100644 --- a/packages/core/pipeline/src/utils/util.request.ts +++ b/packages/core/pipeline/src/utils/util.request.ts @@ -1,6 +1,7 @@ import axios, { AxiosRequestConfig } from "axios"; import { logger } from "./util.log.js"; import { Logger } from "log4js"; +import { ProxyAgent } from "proxy-agent"; export class HttpError extends Error { status?: number; statusText?: string; @@ -41,6 +42,8 @@ export class HttpError extends Error { export function createAxiosService({ logger }: { logger: Logger }) { // 创建一个 axios 实例 const service = axios.create(); + + const defaultAgents = createAgent(); // 请求拦截 service.interceptors.request.use( (config: any) => { @@ -48,6 +51,14 @@ export function createAxiosService({ logger }: { logger: Logger }) { if (config.timeout == null) { config.timeout = 15000; } + let agents = defaultAgents; + if (config.skipSslVerify) { + agents = createAgent({ rejectUnauthorized: config.rejectUnauthorized }); + } + + config.httpsAgent = agents.httpsAgent; + config.httpAgent = agents.httpAgent; + return config; }, (error: Error) => { @@ -118,6 +129,17 @@ export function createAxiosService({ logger }: { logger: Logger }) { export const http = createAxiosService({ logger }) as HttpClient; export type HttpClientResponse = any; +export type HttpRequestConfig = { + skipSslVerify?: boolean; +} & AxiosRequestConfig; export type HttpClient = { - request(config: AxiosRequestConfig): Promise>; + request(config: HttpRequestConfig): Promise>; }; + +export function createAgent(opts: any = {}) { + const httpAgent = new ProxyAgent(opts); + return { + httpAgent, + httpsAgent: httpAgent, + }; +}