From d44fa1775c2c6f5e5cfa7e1e7e59a6b54ea3e06c Mon Sep 17 00:00:00 2001 From: beyondkmp Date: Thu, 7 Aug 2025 15:18:53 +0800 Subject: [PATCH] refactor(ProxyManager): don't filter proxy in system proxy (#8919) refactor(ProxyManager): streamline proxy configuration and bypass rules handling - Simplified proxy configuration logic in registerIpc by directly assigning bypass rules. - Removed redundant bypass rules assignment in ProxyManager, initializing it as an empty array. - Updated GeneralSettings to conditionally render based on custom proxy mode only. --- src/main/ipc.ts | 7 ++----- src/main/services/ProxyManager.ts | 11 +++++++---- src/renderer/src/pages/settings/GeneralSettings.tsx | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/ipc.ts b/src/main/ipc.ts index e4db5ec210..e337d0d247 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -94,17 +94,14 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) { let proxyConfig: ProxyConfig if (proxy === 'system') { + // system proxy will use the system filter by themselves proxyConfig = { mode: 'system' } } else if (proxy) { - proxyConfig = { mode: 'fixed_servers', proxyRules: proxy } + proxyConfig = { mode: 'fixed_servers', proxyRules: proxy, proxyBypassRules: bypassRules } } else { proxyConfig = { mode: 'direct' } } - if (bypassRules) { - proxyConfig.proxyBypassRules = bypassRules - } - await proxyManager.configureProxy(proxyConfig) }) diff --git a/src/main/services/ProxyManager.ts b/src/main/services/ProxyManager.ts index 48b6da6fa7..620a6a5fef 100644 --- a/src/main/services/ProxyManager.ts +++ b/src/main/services/ProxyManager.ts @@ -1,5 +1,4 @@ import { loggerService } from '@logger' -import { defaultByPassRules } from '@shared/config/constant' import axios from 'axios' import { app, ProxyConfig, session } from 'electron' import { socksDispatcher } from 'fetch-socks' @@ -10,9 +9,13 @@ import { ProxyAgent } from 'proxy-agent' import { Dispatcher, EnvHttpProxyAgent, getGlobalDispatcher, setGlobalDispatcher } from 'undici' const logger = loggerService.withContext('ProxyManager') -let byPassRules = defaultByPassRules.split(',') +let byPassRules: string[] = [] const isByPass = (hostname: string) => { + if (byPassRules.length === 0) { + return false + } + return byPassRules.includes(hostname) } @@ -98,7 +101,7 @@ export class ProxyManager { await this.configureProxy({ mode: 'system', proxyRules: currentProxy?.proxyUrl.toLowerCase(), - proxyBypassRules: this.config.proxyBypassRules + proxyBypassRules: undefined }) }, 1000 * 60) } @@ -131,7 +134,7 @@ export class ProxyManager { this.monitorSystemProxy() } - byPassRules = config.proxyBypassRules?.split(',') || defaultByPassRules.split(',') + byPassRules = config.proxyBypassRules?.split(',') || [] this.setGlobalProxy(this.config) } catch (error) { logger.error('Failed to config proxy:', error as Error) diff --git a/src/renderer/src/pages/settings/GeneralSettings.tsx b/src/renderer/src/pages/settings/GeneralSettings.tsx index 9f1f82f56c..7437c9c714 100644 --- a/src/renderer/src/pages/settings/GeneralSettings.tsx +++ b/src/renderer/src/pages/settings/GeneralSettings.tsx @@ -229,7 +229,7 @@ const GeneralSettings: FC = () => { )} - {(storeProxyMode === 'custom' || storeProxyMode === 'system') && ( + {storeProxyMode === 'custom' && ( <>