mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-28 16:30:52 +08:00
fix: prevent freeze caused by enabling Proxy Guard
This commit is contained in:
@@ -4,9 +4,12 @@ use crate::{config::*, feat, wrap_err};
|
|||||||
/// 获取Verge配置
|
/// 获取Verge配置
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub fn get_verge_config() -> CmdResult<IVergeResponse> {
|
pub fn get_verge_config() -> CmdResult<IVergeResponse> {
|
||||||
let verge = Config::verge();
|
let verge_data = {
|
||||||
let verge_data = verge.data().clone();
|
let verge = Config::verge();
|
||||||
Ok(IVergeResponse::from(*verge_data))
|
let data = verge.data();
|
||||||
|
(**data).clone()
|
||||||
|
};
|
||||||
|
Ok(IVergeResponse::from(verge_data))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 修改Verge配置
|
/// 修改Verge配置
|
||||||
|
|||||||
@@ -426,25 +426,32 @@ impl EventDrivenProxyManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_proxy_config() -> ProxyConfig {
|
fn get_proxy_config() -> ProxyConfig {
|
||||||
let verge_config = Config::verge();
|
let (sys_enabled, pac_enabled, guard_enabled) = {
|
||||||
let verge = verge_config.latest();
|
let verge_config = Config::verge();
|
||||||
|
let verge = verge_config.latest();
|
||||||
|
(
|
||||||
|
verge.enable_system_proxy.unwrap_or(false),
|
||||||
|
verge.proxy_auto_config.unwrap_or(false),
|
||||||
|
verge.enable_proxy_guard.unwrap_or(false),
|
||||||
|
)
|
||||||
|
};
|
||||||
ProxyConfig {
|
ProxyConfig {
|
||||||
sys_enabled: verge.enable_system_proxy.unwrap_or(false),
|
sys_enabled,
|
||||||
pac_enabled: verge.proxy_auto_config.unwrap_or(false),
|
pac_enabled,
|
||||||
guard_enabled: verge.enable_proxy_guard.unwrap_or(false),
|
guard_enabled,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_expected_pac_config() -> Autoproxy {
|
fn get_expected_pac_config() -> Autoproxy {
|
||||||
let verge_config = Config::verge();
|
let proxy_host = {
|
||||||
let verge = verge_config.latest();
|
let verge_config = Config::verge();
|
||||||
let (proxy_host, pac_port) = (
|
let verge = verge_config.latest();
|
||||||
verge
|
verge
|
||||||
.proxy_host
|
.proxy_host
|
||||||
.clone()
|
.clone()
|
||||||
.unwrap_or_else(|| "127.0.0.1".to_string()),
|
.unwrap_or_else(|| "127.0.0.1".to_string())
|
||||||
IVerge::get_singleton_port(),
|
};
|
||||||
);
|
let pac_port = IVerge::get_singleton_port();
|
||||||
Autoproxy {
|
Autoproxy {
|
||||||
enable: true,
|
enable: true,
|
||||||
url: format!("http://{proxy_host}:{pac_port}/commands/pac"),
|
url: format!("http://{proxy_host}:{pac_port}/commands/pac"),
|
||||||
@@ -452,15 +459,19 @@ impl EventDrivenProxyManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_expected_sys_proxy() -> Sysproxy {
|
fn get_expected_sys_proxy() -> Sysproxy {
|
||||||
let verge_config = Config::verge();
|
let (verge_mixed_port, proxy_host) = {
|
||||||
let verge = verge_config.latest();
|
let verge_config = Config::verge();
|
||||||
let port = verge
|
let verge = verge_config.latest();
|
||||||
.verge_mixed_port
|
(
|
||||||
.unwrap_or(Config::clash().data().get_mixed_port());
|
verge.verge_mixed_port,
|
||||||
let proxy_host = verge
|
verge
|
||||||
.proxy_host
|
.proxy_host
|
||||||
.clone()
|
.clone()
|
||||||
.unwrap_or_else(|| "127.0.0.1".to_string());
|
.unwrap_or_else(|| "127.0.0.1".to_string()),
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
let port = verge_mixed_port.unwrap_or_else(|| Config::clash().data().get_mixed_port());
|
||||||
|
|
||||||
Sysproxy {
|
Sysproxy {
|
||||||
enable: true,
|
enable: true,
|
||||||
@@ -471,10 +482,14 @@ impl EventDrivenProxyManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_bypass_config() -> String {
|
fn get_bypass_config() -> String {
|
||||||
let verge_config = Config::verge();
|
let (use_default, custom_bypass) = {
|
||||||
let verge = verge_config.latest();
|
let verge_config = Config::verge();
|
||||||
let use_default = verge.use_default_bypass.unwrap_or(true);
|
let verge = verge_config.latest();
|
||||||
let custom_bypass = verge.system_proxy_bypass.clone().unwrap_or_default();
|
(
|
||||||
|
verge.use_default_bypass.unwrap_or(true),
|
||||||
|
verge.system_proxy_bypass.clone().unwrap_or_default(),
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
let default_bypass = "localhost;127.*;192.168.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;<local>";
|
let default_bypass = "localhost;127.*;192.168.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;<local>";
|
||||||
|
|||||||
Reference in New Issue
Block a user