fix: system proxy cannot be closed on mac

This commit is contained in:
huzibaca 2024-10-16 02:52:48 +08:00
parent f7b1da7557
commit d5d39e1c2a
No known key found for this signature in database
GPG Key ID: D4364EE4851DC302

View File

@ -76,7 +76,7 @@ impl Sysopt {
.unwrap_or(Config::clash().data().get_mixed_port()); .unwrap_or(Config::clash().data().get_mixed_port());
let pac_port = IVerge::get_singleton_port(); let pac_port = IVerge::get_singleton_port();
let (enable, pac) = { let (sys_enable, pac_enable) = {
let verge = Config::verge(); let verge = Config::verge();
let verge = verge.latest(); let verge = verge.latest();
( (
@ -88,25 +88,36 @@ impl Sysopt {
#[cfg(not(target_os = "windows"))] #[cfg(not(target_os = "windows"))]
{ {
let mut sys = Sysproxy { let mut sys = Sysproxy {
enable, enable: false,
host: String::from("127.0.0.1"), host: String::from("127.0.0.1"),
port, port,
bypass: get_bypass(), bypass: get_bypass(),
}; };
let mut auto = Autoproxy { let mut auto = Autoproxy {
enable, enable: false,
url: format!("http://127.0.0.1:{pac_port}/commands/pac"), url: format!("http://127.0.0.1:{pac_port}/commands/pac"),
}; };
if pac {
if !sys_enable && !pac_enable {
sys.set_system_proxy()?;
auto.set_auto_proxy()?;
return Ok(());
}
if pac_enable {
sys.enable = false; sys.enable = false;
auto.enable = true; auto.enable = true;
sys.set_system_proxy()?; sys.set_system_proxy()?;
auto.set_auto_proxy()?; auto.set_auto_proxy()?;
} else { return Ok(());
}
if sys_enable {
auto.enable = false; auto.enable = false;
sys.enable = true; sys.enable = true;
auto.set_auto_proxy()?; auto.set_auto_proxy()?;
sys.set_system_proxy()?; sys.set_system_proxy()?;
return Ok(());
} }
} }
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]