From 4c5aa7084e3529321c409f2a9c1946a499138dd7 Mon Sep 17 00:00:00 2001 From: GyDi Date: Thu, 10 Mar 2022 02:19:06 +0800 Subject: [PATCH] fix: external-controller --- src-tauri/src/core/clash.rs | 10 +++++++++- src/services/api.ts | 8 +++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/core/clash.rs b/src-tauri/src/core/clash.rs index 6e200d0..a8699db 100644 --- a/src-tauri/src/core/clash.rs +++ b/src-tauri/src/core/clash.rs @@ -258,8 +258,16 @@ impl Clash { config::save_yaml(temp_path.clone(), &config, Some("# Clash Verge Temp File"))?; tauri::async_runtime::spawn(async move { + // `external-controller` could be + // "127.0.0.1:9090" or ":9090" + // Todo: maybe it could support single port let server = info.server.unwrap(); - let server = format!("http://{server}/configs"); + let server = match server.starts_with(":") { + true => format!("http://127.0.0.1{server}/configs"), + false => format!("http://{server}/configs"), + }; + + dbg!(&server); let mut headers = HeaderMap::new(); headers.insert("Content-Type", "application/json".parse().unwrap()); diff --git a/src/services/api.ts b/src/services/api.ts index d5c96c3..192a8a8 100644 --- a/src/services/api.ts +++ b/src/services/api.ts @@ -14,7 +14,13 @@ export async function getAxios(force: boolean = false) { try { const info = await getClashInfo(); - if (info?.server) server = info?.server; + if (info?.server) { + server = info.server; + + // compatible width `external-controller` + if (server.startsWith(":")) server = `127.0.0.1${server}`; + else if (/^\d+$/.test(server)) server = `127.0.0.1:${server}`; + } if (info?.secret) secret = info?.secret; } catch {}