Pārlūkot izejas kodu

fix: external-controller

GyDi 3 gadi atpakaļ
vecāks
revīzija
4c5aa7084e
2 mainītis faili ar 16 papildinājumiem un 2 dzēšanām
  1. 9 1
      src-tauri/src/core/clash.rs
  2. 7 1
      src/services/api.ts

+ 9 - 1
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());

+ 7 - 1
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 {}