From 38c320d2c9a2da90f59bc8cd58c55db20a5146e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 29 Jan 2026 20:39:07 +0800 Subject: [PATCH] Revert "Add image download proxy support to OneBot" This reverts commit 0779628be56a89ec7d3a470565ec2cf5c9920c14. --- packages/napcat-common/package.json | 49 ++++++------- packages/napcat-common/src/file.ts | 26 +------ packages/napcat-onebot/api/msg.ts | 3 +- packages/napcat-onebot/config/config.ts | 1 - .../napcat-webui-backend/src/onebot/config.ts | 1 - .../src/pages/dashboard/config/onebot.tsx | 18 ----- .../src/store/modules/config.ts | 3 +- .../src/types/onebot_conf.d.ts | 73 +++++++++---------- pnpm-lock.yaml | 9 --- 9 files changed, 64 insertions(+), 119 deletions(-) diff --git a/packages/napcat-common/package.json b/packages/napcat-common/package.json index c26b39dd..44b76115 100644 --- a/packages/napcat-common/package.json +++ b/packages/napcat-common/package.json @@ -1,29 +1,28 @@ { - "name": "napcat-common", - "version": "0.0.1", - "private": true, - "type": "module", - "main": "src/index.ts", - "scripts": { - "typecheck": "tsc --noEmit --skipLibCheck -p tsconfig.json" - }, - "exports": { - ".": { - "import": "./src/index.ts" + "name": "napcat-common", + "version": "0.0.1", + "private": true, + "type": "module", + "main": "src/index.ts", + "scripts": { + "typecheck": "tsc --noEmit --skipLibCheck -p tsconfig.json" }, - "./src/*": { - "import": "./src/*" + "exports": { + ".": { + "import": "./src/index.ts" + }, + "./src/*": { + "import": "./src/*" + } + }, + "dependencies": { + "ajv": "^8.13.0", + "file-type": "^21.0.0" + }, + "devDependencies": { + "@types/node": "^22.0.1" + }, + "engines": { + "node": ">=18.0.0" } - }, - "dependencies": { - "ajv": "^8.13.0", - "file-type": "^21.0.0", - "undici": "^6.19.0" - }, - "devDependencies": { - "@types/node": "^22.0.1" - }, - "engines": { - "node": ">=18.0.0" - } } \ No newline at end of file diff --git a/packages/napcat-common/src/file.ts b/packages/napcat-common/src/file.ts index 79e65aa1..20748f16 100644 --- a/packages/napcat-common/src/file.ts +++ b/packages/napcat-common/src/file.ts @@ -7,7 +7,6 @@ import { solveProblem } from '@/napcat-common/src/helper'; export interface HttpDownloadOptions { url: string; headers?: Record | string; - proxy?: string; } type Uri2LocalRes = { @@ -97,7 +96,6 @@ export function calculateFileMD5 (filePath: string): Promise { async function tryDownload (options: string | HttpDownloadOptions, useReferer: boolean = false): Promise { let url: string; - let proxy: string | undefined; let headers: Record = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', }; @@ -106,7 +104,6 @@ async function tryDownload (options: string | HttpDownloadOptions, useReferer: b headers['Host'] = new URL(url).hostname; } else { url = options.url; - proxy = options.proxy; if (options.headers) { if (typeof options.headers === 'string') { headers = JSON.parse(options.headers); @@ -118,25 +115,6 @@ async function tryDownload (options: string | HttpDownloadOptions, useReferer: b if (useReferer && !headers['Referer']) { headers['Referer'] = url; } - - // 如果配置了代理,使用代理下载 - if (proxy) { - try { - // Node.js 18+ 内置 undici,使用动态导入 - const undici = await import('undici'); - const dispatcher = new undici.ProxyAgent(proxy); - const response = await undici.fetch(url, { - headers, - redirect: 'follow', - dispatcher, - }); - return response as unknown as Response; - } catch (proxyError) { - // 如果代理失败,记录错误并尝试直接下载 - console.error('代理下载失败,尝试直接下载:', proxyError); - } - } - const fetchRes = await fetch(url, { headers, redirect: 'follow' }).catch((err) => { if (err.cause) { throw err.cause; @@ -198,7 +176,7 @@ export async function checkUriType (Uri: string) { return { Uri, Type: FileUriType.Unknown }; } -export async function uriToLocalFile (dir: string, uri: string, filename: string = randomUUID(), headers?: Record, proxy?: string): Promise { +export async function uriToLocalFile (dir: string, uri: string, filename: string = randomUUID(), headers?: Record): Promise { const { Uri: HandledUri, Type: UriType } = await checkUriType(uri); const filePath = path.join(dir, filename); @@ -213,7 +191,7 @@ export async function uriToLocalFile (dir: string, uri: string, filename: string } case FileUriType.Remote: { - const buffer = await httpDownload({ url: HandledUri, headers: headers ?? {}, proxy }); + const buffer = await httpDownload({ url: HandledUri, headers: headers ?? {} }); fs.writeFileSync(filePath, buffer); return { success: true, errMsg: '', fileName: filename, path: filePath }; } diff --git a/packages/napcat-onebot/api/msg.ts b/packages/napcat-onebot/api/msg.ts index 57b1dd38..4ef362c7 100644 --- a/packages/napcat-onebot/api/msg.ts +++ b/packages/napcat-onebot/api/msg.ts @@ -1288,8 +1288,7 @@ export class OneBotMsgApi { } realUri = await this.handleObfuckName(realUri) ?? realUri; try { - const proxy = this.obContext.configLoader.configData.imageDownloadProxy || undefined; - const { path, fileName, errMsg, success } = await uriToLocalFile(this.core.NapCatTempPath, realUri, undefined, undefined, proxy); + const { path, fileName, errMsg, success } = await uriToLocalFile(this.core.NapCatTempPath, realUri); if (!success) { this.core.context.logger.logError('文件处理失败', errMsg); throw new Error('文件处理失败: ' + errMsg); diff --git a/packages/napcat-onebot/config/config.ts b/packages/napcat-onebot/config/config.ts index f3db9e30..189d61ad 100644 --- a/packages/napcat-onebot/config/config.ts +++ b/packages/napcat-onebot/config/config.ts @@ -82,7 +82,6 @@ export const OneBotConfigSchema = Type.Object({ musicSignUrl: Type.String({ default: '' }), enableLocalFile2Url: Type.Boolean({ default: false }), parseMultMsg: Type.Boolean({ default: false }), - imageDownloadProxy: Type.String({ default: '' }), }); export type OneBotConfig = Static; diff --git a/packages/napcat-webui-backend/src/onebot/config.ts b/packages/napcat-webui-backend/src/onebot/config.ts index 164d7b8d..b43c2c49 100644 --- a/packages/napcat-webui-backend/src/onebot/config.ts +++ b/packages/napcat-webui-backend/src/onebot/config.ts @@ -82,7 +82,6 @@ export const OneBotConfigSchema = Type.Object({ musicSignUrl: Type.String({ default: '' }), enableLocalFile2Url: Type.Boolean({ default: false }), parseMultMsg: Type.Boolean({ default: false }), - imageDownloadProxy: Type.String({ default: '' }), }); export type OneBotConfig = Static; diff --git a/packages/napcat-webui-frontend/src/pages/dashboard/config/onebot.tsx b/packages/napcat-webui-frontend/src/pages/dashboard/config/onebot.tsx index d9a0e34a..6c9c4551 100644 --- a/packages/napcat-webui-frontend/src/pages/dashboard/config/onebot.tsx +++ b/packages/napcat-webui-frontend/src/pages/dashboard/config/onebot.tsx @@ -22,14 +22,12 @@ const OneBotConfigCard = () => { musicSignUrl: '', enableLocalFile2Url: false, parseMultMsg: false, - imageDownloadProxy: '', }, }); const reset = () => { setOnebotValue('musicSignUrl', config.musicSignUrl); setOnebotValue('enableLocalFile2Url', config.enableLocalFile2Url); setOnebotValue('parseMultMsg', config.parseMultMsg); - setOnebotValue('imageDownloadProxy', config.imageDownloadProxy); }; const onSubmit = handleOnebotSubmit(async (data) => { @@ -106,22 +104,6 @@ const OneBotConfigCard = () => { /> )} /> - ( - - )} - /> ; - httpClients: Array; - httpSseServers: Array; - websocketServers: Array; - websocketClients: Array; + httpServers: Array + httpClients: Array + httpSseServers: Array + websocketServers: Array + websocketClients: Array } interface OneBotConfig { - network: NetworkConfig; // 网络配置 - musicSignUrl: string; // 音乐签名地址 - enableLocalFile2Url: boolean; - parseMultMsg: boolean; - imageDownloadProxy: string; // 图片下载代理地址 + network: NetworkConfig // 网络配置 + musicSignUrl: string // 音乐签名地址 + enableLocalFile2Url: boolean + parseMultMsg: boolean } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca6cc03e..b079825e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,9 +51,6 @@ importers: file-type: specifier: ^21.0.0 version: 21.1.0 - undici: - specifier: ^6.19.0 - version: 6.23.0 devDependencies: '@types/node': specifier: ^22.0.1 @@ -6608,10 +6605,6 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@6.23.0: - resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} - engines: {node: '>=18.17'} - unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -14161,8 +14154,6 @@ snapshots: undici-types@6.21.0: {} - undici@6.23.0: {} - unified@11.0.5: dependencies: '@types/unist': 3.0.3