fix(desktop): respect proxy environment (#25846)
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import { randomUUID } from "node:crypto"
|
import { randomUUID } from "node:crypto"
|
||||||
import { EventEmitter } from "node:events"
|
import { EventEmitter } from "node:events"
|
||||||
import { existsSync } from "node:fs"
|
import { existsSync } from "node:fs"
|
||||||
|
import * as http from "node:http"
|
||||||
import { createServer } from "node:net"
|
import { createServer } from "node:net"
|
||||||
import { homedir } from "node:os"
|
import { homedir } from "node:os"
|
||||||
import { join } from "node:path"
|
import { join } from "node:path"
|
||||||
@@ -77,6 +78,7 @@ setupApp()
|
|||||||
|
|
||||||
function setupApp() {
|
function setupApp() {
|
||||||
ensureLoopbackNoProxy()
|
ensureLoopbackNoProxy()
|
||||||
|
useEnvProxy()
|
||||||
app.commandLine.appendSwitch("proxy-bypass-list", "<-loopback>")
|
app.commandLine.appendSwitch("proxy-bypass-list", "<-loopback>")
|
||||||
if (!app.isPackaged) app.commandLine.appendSwitch("remote-debugging-port", "9222")
|
if (!app.isPackaged) app.commandLine.appendSwitch("remote-debugging-port", "9222")
|
||||||
|
|
||||||
@@ -133,6 +135,15 @@ function useSystemCertificates() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function useEnvProxy() {
|
||||||
|
try {
|
||||||
|
// Electron 41.2 runs Node 24.14.1; latest @types/node@24 is 24.12.2.
|
||||||
|
;(http as any).setGlobalProxyFromEnv()
|
||||||
|
} catch (error) {
|
||||||
|
logger.warn("failed to load proxy environment", error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function emitDeepLinks(urls: string[]) {
|
function emitDeepLinks(urls: string[]) {
|
||||||
if (urls.length === 0) return
|
if (urls.length === 0) return
|
||||||
pendingDeepLinks.push(...urls)
|
pendingDeepLinks.push(...urls)
|
||||||
@@ -189,7 +200,10 @@ async function initialize() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
logger.log("spawning sidecar", { url })
|
logger.log("spawning sidecar", { url })
|
||||||
const { listener, health } = await spawnLocalServer(hostname, port, password)
|
const { listener, health } = await spawnLocalServer(hostname, port, password, () => {
|
||||||
|
ensureLoopbackNoProxy()
|
||||||
|
useEnvProxy()
|
||||||
|
})
|
||||||
server = listener
|
server = listener
|
||||||
serverReady.resolve({
|
serverReady.resolve({
|
||||||
url,
|
url,
|
||||||
|
|||||||
@@ -30,8 +30,9 @@ export function setWslConfig(config: WslConfig) {
|
|||||||
getStore().set(WSL_ENABLED_KEY, config.enabled)
|
getStore().set(WSL_ENABLED_KEY, config.enabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function spawnLocalServer(hostname: string, port: number, password: string) {
|
export async function spawnLocalServer(hostname: string, port: number, password: string, configureEnv?: () => void) {
|
||||||
prepareServerEnv(password)
|
prepareServerEnv(password)
|
||||||
|
configureEnv?.()
|
||||||
const { Log, Server } = await import("virtual:opencode-server")
|
const { Log, Server } = await import("virtual:opencode-server")
|
||||||
await Log.init({ level: "WARN" })
|
await Log.init({ level: "WARN" })
|
||||||
const listener = await Server.listen({
|
const listener = await Server.listen({
|
||||||
|
|||||||
Reference in New Issue
Block a user