summaryrefslogtreecommitdiff
path: root/QoL/switch-proxy.clj
diff options
context:
space:
mode:
authoreltrac <hi@eltr.ac>2026-04-13 16:31:18 +0800
committereltrac <hi@eltr.ac>2026-04-13 16:31:18 +0800
commit9ea85cb928724bfe75fc08c8f2095e6f3427a862 (patch)
tree11ded82054b7cc4881555ee937bbec154b56ec3d /QoL/switch-proxy.clj
parentf03170a7250011c1e4929bda198ed872935c116c (diff)
[script] swich proxy babashka scriptHEADmaster
Diffstat (limited to 'QoL/switch-proxy.clj')
-rw-r--r--QoL/switch-proxy.clj33
1 files changed, 33 insertions, 0 deletions
diff --git a/QoL/switch-proxy.clj b/QoL/switch-proxy.clj
new file mode 100644
index 0000000..4911b71
--- /dev/null
+++ b/QoL/switch-proxy.clj
@@ -0,0 +1,33 @@
+#!/usr/bin/env bb
+
+(require '[clojure.java.shell :refer [sh]]
+ '[babashka.process :refer [process tokenize]])
+
+(defn process-running? [name]
+ (let [{:keys [exit]} (sh "pgrep" "-x" name)]
+ (= exit 0)))
+
+(defn kill-process [name]
+ (when (process-running? name)
+ (println (str "Stopping " name "..."))
+ (sh "pkill" "-x" name)))
+
+(defn start-daemon [cmd-str]
+ (println (str "Starting " cmd-str "..."))
+ (process (tokenize cmd-str) {:out :discard :err :discard :detach true}))
+
+(let [sb-running (process-running? "sing-box")
+ mi-running (process-running? "mihomo")]
+
+ (cond
+ mi-running
+ (do
+ (kill-process "mihomo")
+ (start-daemon "sing-box run -c /Users/eltrac/.config/sing-box/config.json"))
+
+ :else
+ (do
+ (kill-process "sing-box")
+ (start-daemon "mihomo")))
+
+ (println "Switch complete."))