From 0342477733e9a8a5bd9cdf0b77eade52b1aae7c0 Mon Sep 17 00:00:00 2001 From: MystiPanda Date: Wed, 19 Jun 2024 10:43:58 +0800 Subject: [PATCH] fix: runtime error --- src-tauri/src/core/clash_api.rs | 1 + src-tauri/src/core/core.rs | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/core/clash_api.rs b/src-tauri/src/core/clash_api.rs index 79a5e55e..67fc112d 100644 --- a/src-tauri/src/core/clash_api.rs +++ b/src-tauri/src/core/clash_api.rs @@ -85,6 +85,7 @@ fn clash_client_info() -> Result<(String, HeaderMap)> { } /// 缩短clash的日志 +#[allow(dead_code)] pub fn parse_log(log: String) -> String { if log.starts_with("time=") && log.len() > 33 { return (log[33..]).to_owned(); diff --git a/src-tauri/src/core/core.rs b/src-tauri/src/core/core.rs index 8f8ca517..a1707630 100644 --- a/src-tauri/src/core/core.rs +++ b/src-tauri/src/core/core.rs @@ -76,7 +76,24 @@ impl CoreManager { None => false, }; - self.stop_core()?; // 先停止 + // 关闭tun模式 + let mut disable = Mapping::new(); + let mut tun = Mapping::new(); + tun.insert("enable".into(), false.into()); + disable.insert("tun".into(), tun.into()); + log::debug!(target: "app", "disable tun mode"); + let _ = clash_api::patch_configs(&disable).await; + + let mut system = System::new(); + system.refresh_all(); + let procs = system.processes_by_name("verge-mihomo"); + for proc in procs { + log::debug!(target: "app", "kill all clash process"); + #[cfg(target_os = "windows")] + proc.kill(); + #[cfg(not(target_os = "windows"))] + proc.kill_with(sysinfo::Signal::Interrupt); + } if *self.use_service_mode.lock() { log::debug!(target: "app", "stop the core by service"); @@ -232,7 +249,10 @@ impl CoreManager { let procs = system.processes_by_name("verge-mihomo"); for proc in procs { log::debug!(target: "app", "kill all clash process"); + #[cfg(target_os = "windows")] proc.kill(); + #[cfg(not(target_os = "windows"))] + proc.kill_with(sysinfo::Signal::Interrupt); } Ok(()) }