From c18821288ec38e61af77b04a519682f79002f486 Mon Sep 17 00:00:00 2001 From: Slinetrac Date: Sat, 3 Jan 2026 17:05:54 +0800 Subject: [PATCH] feat(sysproxy-viewer): make proxy bypass validation optional #4012 --- Changelog.md | 1 + src-tauri/src/config/verge.rs | 5 +++ .../setting/mods/sysproxy-viewer.tsx | 36 +++++++++++++++++-- src/locales/ar/settings.json | 1 + src/locales/de/settings.json | 1 + src/locales/en/settings.json | 1 + src/locales/es/settings.json | 1 + src/locales/fa/settings.json | 1 + src/locales/id/settings.json | 1 + src/locales/jp/settings.json | 1 + src/locales/ko/settings.json | 1 + src/locales/ru/settings.json | 1 + src/locales/tr/settings.json | 1 + src/locales/tt/settings.json | 1 + src/locales/zh/settings.json | 1 + src/locales/zhtw/settings.json | 1 + src/types/generated/i18n-keys.ts | 1 + src/types/generated/i18n-resources.ts | 1 + 18 files changed, 55 insertions(+), 2 deletions(-) diff --git a/Changelog.md b/Changelog.md index 24fce7646..88222c0ea 100644 --- a/Changelog.md +++ b/Changelog.md @@ -19,6 +19,7 @@ - 允许将出站模式显示在托盘一级菜单 - 允许禁用在托盘中显示代理组 - 支持在「编辑节点」中直接导入 AnyTLS URI 配置 +- 支持关闭「验证代理绕过格式」 diff --git a/src-tauri/src/config/verge.rs b/src-tauri/src/config/verge.rs index 66176a9c9..ec03457fa 100644 --- a/src-tauri/src/config/verge.rs +++ b/src-tauri/src/config/verge.rs @@ -94,6 +94,9 @@ pub struct IVerge { /// enable proxy guard pub enable_proxy_guard: Option, + /// enable bypass format check + pub enable_bypass_check: Option, + /// enable dns settings - this controls whether dns_config.yaml is applied pub enable_dns_settings: Option, @@ -415,6 +418,7 @@ impl IVerge { verge_port: Some(7899), verge_http_enabled: Some(false), enable_proxy_guard: Some(false), + enable_bypass_check: Some(true), use_default_bypass: Some(true), proxy_guard_duration: Some(30), auto_close_connection: Some(true), @@ -501,6 +505,7 @@ impl IVerge { patch!(verge_http_enabled); patch!(enable_system_proxy); patch!(enable_proxy_guard); + patch!(enable_bypass_check); patch!(use_default_bypass); patch!(system_proxy_bypass); patch!(proxy_guard_duration); diff --git a/src/components/setting/mods/sysproxy-viewer.tsx b/src/components/setting/mods/sysproxy-viewer.tsx index b647034a2..76bfa03a7 100644 --- a/src/components/setting/mods/sysproxy-viewer.tsx +++ b/src/components/setting/mods/sysproxy-viewer.tsx @@ -104,6 +104,7 @@ export const SysproxyViewer = forwardRef((props, ref) => { proxy_auto_config, pac_file_content, enable_proxy_guard, + enable_bypass_check, use_default_bypass, system_proxy_bypass, proxy_guard_duration, @@ -112,6 +113,7 @@ export const SysproxyViewer = forwardRef((props, ref) => { const [value, setValue] = useState({ guard: enable_proxy_guard, + enable_bypass_check: enable_bypass_check ?? true, bypass: system_proxy_bypass, duration: proxy_guard_duration ?? 10, use_default: use_default_bypass ?? true, @@ -202,6 +204,7 @@ export const SysproxyViewer = forwardRef((props, ref) => { setOpen(true); setValue({ guard: enable_proxy_guard, + enable_bypass_check: enable_bypass_check ?? true, bypass: system_proxy_bypass, duration: proxy_guard_duration ?? 10, use_default: use_default_bypass ?? true, @@ -280,7 +283,13 @@ export const SysproxyViewer = forwardRef((props, ref) => { showNotice.error("settings.modals.sysproxy.messages.durationTooShort"); return; } - if (value.bypass && !validReg.test(value.bypass)) { + if ( + value.enable_bypass_check && + !value.pac && + !value.use_default && + value.bypass && + !validReg.test(value.bypass) + ) { showNotice.error("settings.modals.sysproxy.messages.invalidBypass"); return; } @@ -310,6 +319,9 @@ export const SysproxyViewer = forwardRef((props, ref) => { if (value.guard !== enable_proxy_guard) { patch.enable_proxy_guard = value.guard; } + if (value.enable_bypass_check !== enable_bypass_check) { + patch.enable_bypass_check = value.enable_bypass_check; + } if (value.duration !== proxy_guard_duration) { patch.proxy_guard_duration = value.duration; } @@ -560,13 +572,33 @@ export const SysproxyViewer = forwardRef((props, ref) => { )} + {!value.pac && ( + + + + setValue((v) => ({ ...v, enable_bypass_check: e })) + } + /> + + )} + {!value.pac && !value.use_default && ( <>