feat: close all connections when disable sysporxy

This commit is contained in:
wonfen
2025-04-19 15:10:49 +08:00
parent 41629df189
commit 05b910dc17
7 changed files with 40 additions and 6 deletions

View File

@@ -10,8 +10,22 @@ use tauri_plugin_clipboard_manager::ClipboardExt;
pub fn toggle_system_proxy() {
let enable = Config::verge().draft().enable_system_proxy;
let enable = enable.unwrap_or(false);
let auto_close_connection = Config::verge()
.data()
.auto_close_connection
.unwrap_or(false);
AsyncHandler::spawn(move || async move {
// 如果当前系统代理即将关闭且自动关闭连接设置为true则关闭所有连接
if enable && auto_close_connection {
if let Err(err) = crate::module::mihomo::MihomoManager::global()
.close_all_connections()
.await
{
log::error!(target: "app", "Failed to close all connections: {}", err);
}
}
match super::patch_verge(
IVerge {
enable_system_proxy: Some(!enable),

View File

@@ -95,6 +95,19 @@ impl MihomoManager {
self.update_providers_proxies(providers_proxies);
Ok(self)
}
pub async fn close_all_connections(&self) -> Result<(), String> {
let url = format!("{}/connections", self.mihomo_server);
let response = self.send_request(Method::DELETE, url, None).await?;
if response["code"] == 204 {
Ok(())
} else {
Err(response["message"]
.as_str()
.unwrap_or("unknown error")
.to_string())
}
}
}
impl MihomoManager {