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' && ( <>