Bläddra i källkod

fix: improve external-controller parse and log

GyDi 3 år sedan
förälder
incheckning
6d0625c409
2 ändrade filer med 14 tillägg och 9 borttagningar
  1. 9 8
      src-tauri/src/core/clash.rs
  2. 5 1
      src-tauri/src/core/service.rs

+ 9 - 8
src-tauri/src/core/clash.rs

@@ -49,15 +49,16 @@ impl ClashInfo {
 
     // `external-controller` could be
     // "127.0.0.1:9090" or ":9090"
-    // "9090" or 9090 (clash do not support this)
     let server = match config.get(&key_server) {
-      Some(value) => match value {
-        Value::String(val_str) => match val_str.starts_with(":") {
-          true => Some(format!("127.0.0.1{val_str}")),
-          false => Some(val_str.clone()),
-        },
-        _ => None,
-      },
+      Some(value) => {
+        let val_str = value.as_str().unwrap_or("");
+
+        if val_str.starts_with(":") {
+          Some(format!("127.0.0.1{val_str}"))
+        } else {
+          Some(val_str.into())
+        }
+      }
       _ => None,
     };
 

+ 5 - 1
src-tauri/src/core/service.rs

@@ -139,7 +139,11 @@ impl Service {
     config::save_yaml(temp_path.clone(), &config, Some("# Clash Verge Temp File"))?;
 
     if info.server.is_none() {
-      bail!("failed to parse the server");
+      if info.port.is_none() {
+        bail!("failed to parse config.yaml file");
+      } else {
+        bail!("failed to parse the server");
+      }
     }
 
     let server = info.server.unwrap();