diff --git a/public/proxy.js b/public/proxy.js index d3353e7..a6508a5 100644 --- a/public/proxy.js +++ b/public/proxy.js @@ -52,6 +52,61 @@ async function handleSetProxyConfig(config, sendResponse) { return; } + // 添加系统代理的处理 + if (config.proxyType === 'system') { + try { + // 先清除当前的代理设置 + await new Promise((resolve) => { + chrome.proxy.settings.clear({ + scope: 'regular' + }, resolve); + }); + + // 然后设置为系统代理 + await new Promise((resolve) => { + chrome.proxy.settings.set({ + value: {mode: "system"}, + scope: 'regular' + }, resolve); + }); + + const settings = await getProxySettings(); + const isSuccess = settings.value.mode === "system"; + + if (isSuccess) { + // 更新存储 + await proxyStore.setCurrentProxy({ + ...config, + timestamp: Date.now() + }); + + // 更新代理列表状态 + const configs = await proxyStore.getProxyConfigs(); + const updatedConfigs = configs.map(c => ({ + ...c, + enabled: c.id === config.id + })); + await proxyStore.saveProxyConfigs(updatedConfigs); + + console.log('System proxy set successfully'); + sendResponse({success: true}); + } else { + console.error('Failed to set system proxy'); + sendResponse({ + success: false, + error: '无法设置系统代理' + }); + } + } catch (error) { + console.error('Error setting system proxy:', error); + sendResponse({ + success: false, + error: error.message || '设置系统代理时发生错误' + }); + } + return; + } + // 处理代理服务器的情况 if (!config || !config.host || !config.port) { sendResponse({ diff --git a/src/components/ProxySwitch/index.tsx b/src/components/ProxySwitch/index.tsx index b08ed56..d3f8600 100644 --- a/src/components/ProxySwitch/index.tsx +++ b/src/components/ProxySwitch/index.tsx @@ -16,7 +16,8 @@ const FIXED_MODES = [ config: { id: 'direct', name: '[直接连接]', - proxyType: 'direct' + proxyType: 'direct', + enabled: false } }, { @@ -27,7 +28,8 @@ const FIXED_MODES = [ config: { id: 'system', name: '[系统代理]', - proxyType: 'system' + proxyType: 'system', + enabled: false } } ]; diff --git a/src/index.tsx b/src/index.tsx index 47aec8d..742b7ff 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -9,9 +9,5 @@ if (!container) throw new Error('Failed to find the root element'); // 创建根 const root = createRoot(container); -// 渲染应用 -root.render( - - - -); \ No newline at end of file +// 渲染应用,移除 StrictMode +root.render(); \ No newline at end of file diff --git a/src/types/proxy.ts b/src/types/proxy.ts index 0bf885c..33ae989 100644 --- a/src/types/proxy.ts +++ b/src/types/proxy.ts @@ -2,7 +2,7 @@ export interface ProxyConfig { id: string; name: string; enabled: boolean; - proxyType: "direct" | "fixed_server" | "pac_script" | "auto_detect" | "bypass_list"; + proxyType: "direct" | "system" | "fixed_servers" | "pac_script" | "auto_detect"; host?: string; port?: number; scheme?: "http" | "https" | "socks4" | "socks5";