revert: Support both registry and api for windows sysproxy

This commit is contained in:
MystiPanda
2024-01-20 12:16:46 +08:00
parent 570c39c20a
commit ebc63f479a
9 changed files with 22 additions and 124 deletions

View File

@@ -58,9 +58,6 @@ pub struct IVerge {
/// set system proxy bypass
pub system_proxy_bypass: Option<String>,
/// set system proxy method
pub system_proxy_registry_mode: Option<bool>,
/// proxy guard duration
pub proxy_guard_duration: Option<u64>,
@@ -161,7 +158,6 @@ impl IVerge {
enable_auto_launch: Some(false),
enable_silent_start: Some(false),
enable_system_proxy: Some(false),
system_proxy_registry_mode: Some(false),
enable_random_port: Some(false),
verge_mixed_port: Some(7897),
enable_proxy_guard: Some(false),
@@ -209,7 +205,6 @@ impl IVerge {
patch!(enable_system_proxy);
patch!(enable_proxy_guard);
patch!(system_proxy_bypass);
patch!(system_proxy_registry_mode);
patch!(proxy_guard_duration);
patch!(theme_setting);

View File

@@ -58,12 +58,6 @@ impl Sysopt {
)
};
let registry_mode = {
let verge = Config::verge();
let verge = verge.latest();
verge.system_proxy_registry_mode.unwrap_or(false)
};
let current = Sysproxy {
enable,
host: String::from("127.0.0.1"),
@@ -73,15 +67,7 @@ impl Sysopt {
if enable {
let old = Sysproxy::get_system_proxy().ok();
if registry_mode {
#[cfg(windows)]
current.set_system_proxy_with_registry()?;
#[cfg(not(windows))]
current.set_system_proxy()?;
} else {
current.set_system_proxy()?;
}
current.set_system_proxy()?;
*self.old_sysproxy.lock() = old;
*self.cur_sysproxy.lock() = Some(current);
@@ -111,13 +97,6 @@ impl Sysopt {
verge.system_proxy_bypass.clone(),
)
};
let registry_mode = {
let verge = Config::verge();
let verge = verge.latest();
verge.system_proxy_registry_mode.unwrap_or(false)
};
let mut sysproxy = cur_sysproxy.take().unwrap();
sysproxy.enable = enable;
@@ -129,14 +108,7 @@ impl Sysopt {
.unwrap_or(Config::clash().data().get_mixed_port());
sysproxy.port = port;
if registry_mode {
#[cfg(windows)]
sysproxy.set_system_proxy_with_registry()?;
#[cfg(not(windows))]
sysproxy.set_system_proxy()?;
} else {
sysproxy.set_system_proxy()?;
}
sysproxy.set_system_proxy()?;
*cur_sysproxy = Some(sysproxy);
Ok(())
@@ -146,11 +118,7 @@ impl Sysopt {
pub fn reset_sysproxy(&self) -> Result<()> {
let mut cur_sysproxy = self.cur_sysproxy.lock();
let mut old_sysproxy = self.old_sysproxy.lock();
let registry_mode = {
let verge = Config::verge();
let verge = verge.latest();
verge.system_proxy_registry_mode.unwrap_or(false)
};
let cur_sysproxy = cur_sysproxy.take();
if let Some(mut old) = old_sysproxy.take() {
@@ -165,26 +133,12 @@ impl Sysopt {
log::info!(target: "app", "reset proxy to the original proxy");
}
if registry_mode {
#[cfg(windows)]
old.set_system_proxy_with_registry()?;
#[cfg(not(windows))]
old.set_system_proxy()?;
} else {
old.set_system_proxy()?;
}
old.set_system_proxy()?;
} else if let Some(mut cur @ Sysproxy { enable: true, .. }) = cur_sysproxy {
// 没有原代理就按现在的代理设置disable即可
log::info!(target: "app", "reset proxy by disabling the current proxy");
cur.enable = false;
if registry_mode {
#[cfg(windows)]
cur.set_system_proxy_with_registry()?;
#[cfg(not(windows))]
cur.set_system_proxy()?;
} else {
cur.set_system_proxy()?;
}
cur.set_system_proxy()?;
} else {
log::info!(target: "app", "reset proxy with no action");
}
@@ -303,11 +257,7 @@ impl Sysopt {
use tokio::time::{sleep, Duration};
let guard_state = self.guard_state.clone();
let registry_mode = {
let verge = Config::verge();
let verge = verge.latest();
verge.system_proxy_registry_mode.unwrap_or(false)
};
tauri::async_runtime::spawn(async move {
// if it is running, exit
let mut state = guard_state.lock().await;
@@ -357,14 +307,8 @@ impl Sysopt {
port,
bypass: bypass.unwrap_or(DEFAULT_BYPASS.into()),
};
if registry_mode {
#[cfg(windows)]
log_err!(sysproxy.set_system_proxy_with_registry());
#[cfg(not(windows))]
log_err!(sysproxy.set_system_proxy());
} else {
log_err!(sysproxy.set_system_proxy());
}
log_err!(sysproxy.set_system_proxy());
}
let mut state = guard_state.lock().await;