MCPcopy
hub / github.com/docmirror/dev-sidecar / windows

Function windows

packages/core/src/shell/scripts/set-system-proxy/index.js:333–453  ·  view source on GitHub ↗
(exec, params = {})

Source from the content-addressed store, hash-verified

331
332const executor = {
333 async windows (exec, params = {}) {
334 const { ip, port, setEnv, setCaBundle } = params
335 if (ip != null) { // 设置代理
336 // 延迟加载config
337 loadConfig()
338
339 log.info('开始设置windows系统代理:', ip, port, setEnv)
340
341 // https
342 let proxyAddr = `https=http://${ip}:${port}`
343 // http
344 if (config.get().proxy.proxyHttp) {
345 proxyAddr = `http=http://${ip}:${port - 1};${proxyAddr}`
346 }
347
348 // 读取排除域名
349 const excludeIpStr = getProxyExcludeIpStr(';')
350 // 设置代理,同时设置排除域名
351 try {
352 require('@starknt/sysproxy').triggerManualProxyByUrl(true, proxyAddr, excludeIpStr, true)
353 log.info(`设置windows系统代理成功: ${proxyAddr} ......(省略排除IP列表)`)
354 } catch (e1) {
355 log.warn('设置windows系统代理失败:执行 `@starknt/sysproxy` 失败,现尝试通过执行 `sysproxy.exe global ...` 来设置系统代理!\r\n捕获的异常:', e1)
356
357 const proxyPath = extraPath.getProxyExePath()
358 const execFun = 'global'
359 try {
360 await execFile(proxyPath, [execFun, proxyAddr, excludeIpStr])
361 log.info(`设置windows系统代理成功,执行的命令:${proxyPath} ${execFun} ${proxyAddr} ......(省略排除IP列表)`)
362 } catch (e2) {
363 log.error(`设置windows系统代理失败,执行的命令:${proxyPath} ${execFun} ${proxyAddr} ......(省略排除IP列表), error:`, e2)
364 throw e1 // 将上面的异常抛出
365 }
366 }
367
368 if (setEnv) {
369 // 设置全局代理所需的环境变量
370 try {
371 await exec(`echo '设置环境变量 HTTPS_PROXY${config.get().proxy.proxyHttp ? '、HTTP_PROXY' : ''}${setCaBundle ? '、REQUEST_CA_BUNDLE' : ''}'`)
372
373 log.info(`开启系统代理的同时设置环境变量:HTTPS_PROXY = "http://${ip}:${port}/"`)
374 await exec(`setx HTTPS_PROXY "http://${ip}:${port}/"`)
375
376 if (config.get().proxy.proxyHttp) {
377 log.info(`开启系统代理的同时设置环境变量:HTTP_PROXY = "http://${ip}:${port - 1}/"`)
378 await exec(`setx HTTP_PROXY "http://${ip}:${port - 1}/"`)
379 }
380
381 if (setCaBundle) {
382 const caCertPath = config.get().server.setting.rootCaFile.certPath
383 log.info(`开启系统代理的同时设置环境变量:REQUEST_CA_BUNDLE = "${caCertPath}"`)
384 await exec(`setx REQUEST_CA_BUNDLE "${caCertPath}"`)
385 }
386
387 // await addClearScriptIni()
388 } catch (e) {
389 log.error('设置环境变量 HTTPS_PROXY、HTTP_PROXY、REQUEST_CA_BUNDLE 失败:', e)
390 }

Callers

nothing calls this directly

Calls 5

loadConfigFunction · 0.85
getProxyExcludeIpStrFunction · 0.85
execFileFunction · 0.85
execFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected