From b635e64803c75c6ae99ae26476be480b568d27ec Mon Sep 17 00:00:00 2001 From: GyDi <segydi@foxmail.com> Date: Thu, 27 Oct 2022 21:14:14 +0800 Subject: [PATCH] fix: adjust reset proxy --- src-tauri/src/core/sysopt.rs | 45 ++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/src-tauri/src/core/sysopt.rs b/src-tauri/src/core/sysopt.rs index afbe0de..b3b95f9 100644 --- a/src-tauri/src/core/sysopt.rs +++ b/src-tauri/src/core/sysopt.rs @@ -68,7 +68,7 @@ impl Sysopt { self.cur_sysproxy.as_ref().unwrap().set_system_proxy()?; } - // launchs the system proxy guard + // run the system proxy guard self.guard_proxy(); Ok(()) } @@ -99,29 +99,28 @@ impl Sysopt { /// reset the sysproxy pub fn reset_sysproxy(&mut self) -> Result<()> { - if self.cur_sysproxy.is_none() { - return Ok(()); - } - - let mut cur = self.cur_sysproxy.take().unwrap(); - - match self.old_sysproxy.take() { - Some(old) => { - // 如果原代ç†è®¾ç½®å’Œå½“å‰çš„è®¾ç½®æ˜¯ä¸€æ ·çš„ï¼Œéœ€è¦å…³é— - // å¦åˆ™å°±æ¢å¤åŽŸä»£ç†è®¾ç½® - if old.enable && old.host == cur.host && old.port == cur.port { - cur.enable = false; - cur.set_system_proxy()?; - } else { - old.set_system_proxy()?; - } - } - None => { - if cur.enable { - cur.enable = false; - cur.set_system_proxy()?; - } + let cur = self.cur_sysproxy.take(); + + if let Some(mut old) = self.old_sysproxy.take() { + // 如果原代ç†å’Œå½“å‰ä»£ç† 端å£ä¸€è‡´ï¼Œå°±disableå…³é—,å¦åˆ™å°±æ¢å¤åŽŸä»£ç†è®¾ç½® + // 当å‰æ²¡æœ‰è®¾ç½®ä»£ç†çš„时候,ä¸ç¡®å®šæ—§è®¾ç½®æ˜¯å¦å’Œå½“å‰ä¸€è‡´ï¼Œå…¨å…³äº† + let port_same = cur.map_or(true, |cur| old.port == cur.port); + + if old.enable && port_same { + old.enable = false; + log::info!(target: "app", "reset proxy by disabling the original proxy"); + } else { + log::info!(target: "app", "reset proxy to the original proxy"); } + + old.set_system_proxy()?; + } else if let Some(mut cur) = cur { + // 没有原代ç†ï¼Œå°±æŒ‰çŽ°åœ¨çš„代ç†è®¾ç½®disableå³å¯ + log::info!(target: "app", "reset proxy by disabling the current proxy"); + cur.enable = false; + cur.set_system_proxy()?; + } else { + log::info!(target: "app", "reset proxy with no action"); } Ok(()) -- GitLab