feat(proxy): use os-proxy-config to get system proxy info instead of resolveProxy (#5123)

* feat(proxy): integrate os-proxy-config for system proxy management

- Added os-proxy-config dependency to manage system proxy settings.
- Refactored setSystemProxy method to utilize getSystemProxy for improved proxy handling.

* fix lint error
This commit is contained in:
beyondkmp 2025-04-21 12:45:01 +08:00 committed by GitHub
parent 288ebe5222
commit 185900ada6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 141 additions and 11 deletions

View File

@ -94,6 +94,7 @@
"jsdom": "^26.0.0", "jsdom": "^26.0.0",
"markdown-it": "^14.1.0", "markdown-it": "^14.1.0",
"officeparser": "^4.1.1", "officeparser": "^4.1.1",
"os-proxy-config": "^1.1.1",
"proxy-agent": "^6.5.0", "proxy-agent": "^6.5.0",
"tar": "^7.4.3", "tar": "^7.4.3",
"turndown": "^7.2.0", "turndown": "^7.2.0",

View File

@ -1,5 +1,6 @@
import { ProxyConfig as _ProxyConfig, session } from 'electron' import { ProxyConfig as _ProxyConfig, session } from 'electron'
import { socksDispatcher } from 'fetch-socks' import { socksDispatcher } from 'fetch-socks'
import { getSystemProxy } from 'os-proxy-config'
import { ProxyAgent as GeneralProxyAgent } from 'proxy-agent' import { ProxyAgent as GeneralProxyAgent } from 'proxy-agent'
import { ProxyAgent, setGlobalDispatcher } from 'undici' import { ProxyAgent, setGlobalDispatcher } from 'undici'
@ -70,15 +71,14 @@ export class ProxyManager {
private async setSystemProxy(): Promise<void> { private async setSystemProxy(): Promise<void> {
try { try {
await this.setSessionsProxy({ mode: 'system' }) const currentProxy = await getSystemProxy()
const proxyString = await session.defaultSession.resolveProxy('https://dummy.com') if (!currentProxy || currentProxy.proxyUrl === this.config.url) {
const [protocol, address] = proxyString.split(';')[0].split(' ') return
const url = protocol === 'PROXY' ? `http://${address}` : null
if (url && url !== this.config.url) {
this.config.url = url.toLowerCase()
this.setEnvironment(this.config.url)
this.proxyAgent = new GeneralProxyAgent()
} }
await this.setSessionsProxy({ mode: 'system' })
this.config.url = currentProxy.proxyUrl.toLowerCase()
this.setEnvironment(this.config.url)
this.proxyAgent = new GeneralProxyAgent()
} catch (error) { } catch (error) {
console.error('Failed to set system proxy:', error) console.error('Failed to set system proxy:', error)
throw error throw error

View File

@ -18,7 +18,7 @@ import useUpdateHandler from './useUpdateHandler'
export function useAppInit() { export function useAppInit() {
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const { proxyUrl, language, windowStyle, autoCheckUpdate, proxyMode, customCss, enableDataCollection } = useSettings() const { proxyUrl, language, windowStyle, autoCheckUpdate, proxyMode, customCss } = useSettings()
const { minappShow } = useRuntime() const { minappShow } = useRuntime()
const { setDefaultModel, setTopicNamingModel, setTranslateModel } = useDefaultModel() const { setDefaultModel, setTopicNamingModel, setTranslateModel } = useDefaultModel()
const avatar = useLiveQuery(() => db.settings.get('image://avatar')) const avatar = useLiveQuery(() => db.settings.get('image://avatar'))

133
yarn.lock
View File

@ -4317,6 +4317,7 @@ __metadata:
npx-scope-finder: "npm:^1.2.0" npx-scope-finder: "npm:^1.2.0"
officeparser: "npm:^4.1.1" officeparser: "npm:^4.1.1"
openai: "patch:openai@npm%3A4.87.3#~/.yarn/patches/openai-npm-4.87.3-2b30a7685f.patch" openai: "patch:openai@npm%3A4.87.3#~/.yarn/patches/openai-npm-4.87.3-2b30a7685f.patch"
os-proxy-config: "npm:^1.1.1"
p-queue: "npm:^8.1.0" p-queue: "npm:^8.1.0"
posthog-js: "npm:^1.236.2" posthog-js: "npm:^1.236.2"
prettier: "npm:^3.5.3" prettier: "npm:^3.5.3"
@ -6264,6 +6265,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"decompress-response@npm:^4.2.0":
version: 4.2.1
resolution: "decompress-response@npm:4.2.1"
dependencies:
mimic-response: "npm:^2.0.0"
checksum: 10c0/5e4821be332e80e3639acee2441c41d245fc07ac3ee85a6f28893c10c079d66d9bf09e8d84bffeae5656a4625e09e9b93fb4a5705adbe6b07202eea64fae1c8d
languageName: node
linkType: hard
"decompress-response@npm:^6.0.0": "decompress-response@npm:^6.0.0":
version: 6.0.0 version: 6.0.0
resolution: "decompress-response@npm:6.0.0" resolution: "decompress-response@npm:6.0.0"
@ -10861,6 +10871,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"mac-system-proxy@npm:^1.0.0":
version: 1.0.4
resolution: "mac-system-proxy@npm:1.0.4"
checksum: 10c0/5511658640b938f7ef99a42cd551b0143efd5a432caffbe4cb219ab7eaeeb79eb8786e830c73e2652d813d7af81d6aeb5bbb34e957e38754ff51f6a2e5797bad
languageName: node
linkType: hard
"magic-string@npm:^0.30.10, magic-string@npm:^0.30.17": "magic-string@npm:^0.30.10, magic-string@npm:^0.30.17":
version: 0.30.17 version: 0.30.17
resolution: "magic-string@npm:0.30.17" resolution: "magic-string@npm:0.30.17"
@ -12004,6 +12021,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"mimic-response@npm:^2.0.0":
version: 2.1.0
resolution: "mimic-response@npm:2.1.0"
checksum: 10c0/717475c840f20deca87a16cb2f7561f9115f5de225ea2377739e09890c81aec72f43c81fd4984650c4044e66be5a846fa7a517ac7908f01009e1e624e19864d5
languageName: node
linkType: hard
"mimic-response@npm:^3.1.0": "mimic-response@npm:^3.1.0":
version: 3.1.0 version: 3.1.0
resolution: "mimic-response@npm:3.1.0" resolution: "mimic-response@npm:3.1.0"
@ -12296,6 +12320,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"napi-build-utils@npm:^1.0.1":
version: 1.0.2
resolution: "napi-build-utils@npm:1.0.2"
checksum: 10c0/37fd2cd0ff2ad20073ce78d83fd718a740d568b225924e753ae51cb69d68f330c80544d487e5e5bd18e28702ed2ca469c2424ad948becd1862c1b0209542b2e9
languageName: node
linkType: hard
"napi-build-utils@npm:^2.0.0": "napi-build-utils@npm:^2.0.0":
version: 2.0.0 version: 2.0.0
resolution: "napi-build-utils@npm:2.0.0" resolution: "napi-build-utils@npm:2.0.0"
@ -12351,6 +12382,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"node-abi@npm:^2.7.0":
version: 2.30.1
resolution: "node-abi@npm:2.30.1"
dependencies:
semver: "npm:^5.4.1"
checksum: 10c0/baddd9799ae3f9ad085695cd6545438a76f5a8deb47976daf06b13ee90e9dab5463de145b703aca38a5afb627c038e85d5f8a4ba2f31ec678a68366cb6daf76f
languageName: node
linkType: hard
"node-abi@npm:^3.3.0, node-abi@npm:^3.45.0": "node-abi@npm:^3.3.0, node-abi@npm:^3.45.0":
version: 3.74.0 version: 3.74.0
resolution: "node-abi@npm:3.74.0" resolution: "node-abi@npm:3.74.0"
@ -12369,6 +12409,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"node-addon-api@npm:^3.1.0":
version: 3.2.1
resolution: "node-addon-api@npm:3.2.1"
dependencies:
node-gyp: "npm:latest"
checksum: 10c0/41f21c9d12318875a2c429befd06070ce367065a3ef02952cfd4ea17ef69fa14012732f510b82b226e99c254da8d671847ea018cad785f839a5366e02dd56302
languageName: node
linkType: hard
"node-addon-api@npm:^7.0.0": "node-addon-api@npm:^7.0.0":
version: 7.1.1 version: 7.1.1
resolution: "node-addon-api@npm:7.1.1" resolution: "node-addon-api@npm:7.1.1"
@ -12485,6 +12534,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"noop-logger@npm:^0.1.1":
version: 0.1.1
resolution: "noop-logger@npm:0.1.1"
checksum: 10c0/7319a3f1dcfaca9d066e1786ad13c2209891226e29dc4a4ce6dbaafb0cc6efeeb8dc78414fcf630d7f4f3964a5a69cda8b815a165d034f2de9142632b8c8ac20
languageName: node
linkType: hard
"nopt@npm:^4.0.1": "nopt@npm:^4.0.1":
version: 4.0.3 version: 4.0.3
resolution: "nopt@npm:4.0.3" resolution: "nopt@npm:4.0.3"
@ -12570,7 +12626,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"npmlog@npm:^4.0.2": "npmlog@npm:^4.0.1, npmlog@npm:^4.0.2":
version: 4.1.2 version: 4.1.2
resolution: "npmlog@npm:4.1.2" resolution: "npmlog@npm:4.1.2"
dependencies: dependencies:
@ -12902,6 +12958,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"os-proxy-config@npm:^1.1.1":
version: 1.1.1
resolution: "os-proxy-config@npm:1.1.1"
dependencies:
mac-system-proxy: "npm:^1.0.0"
windows-system-proxy: "npm:^1.0.0"
checksum: 10c0/87f493e73e3daa91c908d7a9d7271e768ca3f3267adc77a2423bc71af536ec3ee78d16b8e34e647bae1225893c0e0ccf30be8d0b3e7a6d2bf58876c5a701813d
languageName: node
linkType: hard
"os-tmpdir@npm:^1.0.0": "os-tmpdir@npm:^1.0.0":
version: 1.0.2 version: 1.0.2
resolution: "os-tmpdir@npm:1.0.2" resolution: "os-tmpdir@npm:1.0.2"
@ -13601,6 +13667,31 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"prebuild-install@npm:^5.3.5":
version: 5.3.6
resolution: "prebuild-install@npm:5.3.6"
dependencies:
detect-libc: "npm:^1.0.3"
expand-template: "npm:^2.0.3"
github-from-package: "npm:0.0.0"
minimist: "npm:^1.2.3"
mkdirp-classic: "npm:^0.5.3"
napi-build-utils: "npm:^1.0.1"
node-abi: "npm:^2.7.0"
noop-logger: "npm:^0.1.1"
npmlog: "npm:^4.0.1"
pump: "npm:^3.0.0"
rc: "npm:^1.2.7"
simple-get: "npm:^3.0.3"
tar-fs: "npm:^2.0.0"
tunnel-agent: "npm:^0.6.0"
which-pm-runs: "npm:^1.0.0"
bin:
prebuild-install: bin.js
checksum: 10c0/e24b7ea6c12fffdccad3fa40bb999277216081cbf96b768b34417aec773e9df2242df22c4529d47263713a1f02db16f5a89e909b24020c47232fe98b7efb7037
languageName: node
linkType: hard
"prebuild-install@npm:^7.1.1": "prebuild-install@npm:^7.1.1":
version: 7.1.3 version: 7.1.3
resolution: "prebuild-install@npm:7.1.3" resolution: "prebuild-install@npm:7.1.3"
@ -14750,6 +14841,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"registry-js@npm:^1.15.1":
version: 1.16.0
resolution: "registry-js@npm:1.16.0"
dependencies:
node-addon-api: "npm:^3.1.0"
node-gyp: "npm:latest"
prebuild-install: "npm:^5.3.5"
checksum: 10c0/654e9e780648da40099f198f1ea1ddcdecb65c5162103c86b27c021a5e3ee66a6141f0209eb7054b5832bc7f34502d6f28f9ce419fabf434452604d207f36be4
languageName: node
linkType: hard
"rehype-katex@npm:^7.0.1": "rehype-katex@npm:^7.0.1":
version: 7.0.1 version: 7.0.1
resolution: "rehype-katex@npm:7.0.1" resolution: "rehype-katex@npm:7.0.1"
@ -15389,7 +15491,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.3.0, semver@npm:^5.5.0": "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.3.0, semver@npm:^5.4.1, semver@npm:^5.5.0":
version: 5.7.2 version: 5.7.2
resolution: "semver@npm:5.7.2" resolution: "semver@npm:5.7.2"
bin: bin:
@ -15592,6 +15694,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"simple-get@npm:^3.0.3":
version: 3.1.1
resolution: "simple-get@npm:3.1.1"
dependencies:
decompress-response: "npm:^4.2.0"
once: "npm:^1.3.1"
simple-concat: "npm:^1.0.0"
checksum: 10c0/438c78844ea1b1e7268d13ee0b3a39c7d644183367aec916aed3b676b45d3037a61d9f975c200a49b42eb851f29f03745118af1e13c01e60a7b4044f2fd60be7
languageName: node
linkType: hard
"simple-get@npm:^4.0.0": "simple-get@npm:^4.0.0":
version: 4.0.1 version: 4.0.1
resolution: "simple-get@npm:4.0.1" resolution: "simple-get@npm:4.0.1"
@ -17554,6 +17667,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"which-pm-runs@npm:^1.0.0":
version: 1.1.0
resolution: "which-pm-runs@npm:1.1.0"
checksum: 10c0/b8f2f230aa49babe21cb93f169f5da13937f940b8cc7a47d2078d9d200950c0dba5ac5659bc01bdbe401e6db3adec6a97b6115215a4ca8e87fd714aebd0cabc6
languageName: node
linkType: hard
"which@npm:^1.2.10": "which@npm:^1.2.10":
version: 1.3.1 version: 1.3.1
resolution: "which@npm:1.3.1" resolution: "which@npm:1.3.1"
@ -17604,6 +17724,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"windows-system-proxy@npm:^1.0.0":
version: 1.0.0
resolution: "windows-system-proxy@npm:1.0.0"
dependencies:
registry-js: "npm:^1.15.1"
checksum: 10c0/f3712938ce0786c359f171c40cc40df37448e06feeaaddd056312dcc93caff02c1eac9df6f0fac162ec99ac1f23dffb70bf19fe08fac097fed3c32b7ae95f6aa
languageName: node
linkType: hard
"word-wrap@npm:^1.2.5": "word-wrap@npm:^1.2.5":
version: 1.2.5 version: 1.2.5
resolution: "word-wrap@npm:1.2.5" resolution: "word-wrap@npm:1.2.5"