mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-01-12 02:58:34 +08:00
76 lines
2.0 KiB
TypeScript
76 lines
2.0 KiB
TypeScript
|
|
import { app } from "electron"
|
||
|
|
import * as fs from "fs"
|
||
|
|
import * as path from "path"
|
||
|
|
import type { ProxyConfig } from "../electron.d"
|
||
|
|
|
||
|
|
export type { ProxyConfig }
|
||
|
|
|
||
|
|
const CONFIG_FILE = "proxy-config.json"
|
||
|
|
|
||
|
|
function getConfigPath(): string {
|
||
|
|
return path.join(app.getPath("userData"), CONFIG_FILE)
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Load proxy configuration from JSON file
|
||
|
|
*/
|
||
|
|
export function loadProxyConfig(): ProxyConfig {
|
||
|
|
try {
|
||
|
|
const configPath = getConfigPath()
|
||
|
|
if (fs.existsSync(configPath)) {
|
||
|
|
const data = fs.readFileSync(configPath, "utf-8")
|
||
|
|
return JSON.parse(data) as ProxyConfig
|
||
|
|
}
|
||
|
|
} catch (error) {
|
||
|
|
console.error("Failed to load proxy config:", error)
|
||
|
|
}
|
||
|
|
return {}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Save proxy configuration to JSON file
|
||
|
|
*/
|
||
|
|
export function saveProxyConfig(config: ProxyConfig): void {
|
||
|
|
try {
|
||
|
|
const configPath = getConfigPath()
|
||
|
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf-8")
|
||
|
|
} catch (error) {
|
||
|
|
console.error("Failed to save proxy config:", error)
|
||
|
|
throw error
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Apply proxy configuration to process.env
|
||
|
|
* Must be called BEFORE starting the Next.js server
|
||
|
|
*/
|
||
|
|
export function applyProxyToEnv(): void {
|
||
|
|
const config = loadProxyConfig()
|
||
|
|
|
||
|
|
if (config.httpProxy) {
|
||
|
|
process.env.HTTP_PROXY = config.httpProxy
|
||
|
|
process.env.http_proxy = config.httpProxy
|
||
|
|
} else {
|
||
|
|
delete process.env.HTTP_PROXY
|
||
|
|
delete process.env.http_proxy
|
||
|
|
}
|
||
|
|
|
||
|
|
if (config.httpsProxy) {
|
||
|
|
process.env.HTTPS_PROXY = config.httpsProxy
|
||
|
|
process.env.https_proxy = config.httpsProxy
|
||
|
|
} else {
|
||
|
|
delete process.env.HTTPS_PROXY
|
||
|
|
delete process.env.https_proxy
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get current proxy configuration (from process.env)
|
||
|
|
*/
|
||
|
|
export function getProxyConfig(): ProxyConfig {
|
||
|
|
return {
|
||
|
|
httpProxy: process.env.HTTP_PROXY || process.env.http_proxy || "",
|
||
|
|
httpsProxy: process.env.HTTPS_PROXY || process.env.https_proxy || "",
|
||
|
|
}
|
||
|
|
}
|