init
Some checks failed
Build and Release / release (push) Failing after 26s

This commit is contained in:
2025-12-12 17:37:34 +07:00
commit 9d769ed08c
32 changed files with 895 additions and 0 deletions

68
system_proxy_darwin.go Normal file
View File

@@ -0,0 +1,68 @@
//go:build darwin
// +build darwin
package main
import (
"fmt"
"os/exec"
"strings"
)
func parseNetworkServices(out string) []string {
lines := strings.Split(out, "\n")
var result []string
for _, line := range lines {
if strings.Contains(line, "(Hardware Port:") {
start := strings.Index(line, "Hardware Port: ") + len("Hardware Port: ")
end := strings.Index(line[start:], ",")
if end > 0 {
result = append(result, line[start:start+end])
}
}
}
return result
}
func contains(arr []string, v string) bool {
for _, x := range arr {
if x == v {
return true
}
}
return false
}
func setProxy(enable bool, host string, port string) error {
out, err := exec.Command("networksetup", "-listnetworkserviceorder").CombinedOutput()
if err != nil {
return err
}
services := parseNetworkServices(string(out))
active := ""
if contains(services, "Wi-Fi") {
active = "Wi-Fi"
} else if contains(services, "Ethernet") {
active = "Ethernet"
} else {
if len(services) == 0 {
return fmt.Errorf("no network services found")
}
active = services[0]
}
if enable {
exec.Command("networksetup", "-setwebproxy", active, host, port).Run()
exec.Command("networksetup", "-setsecurewebproxy", active, host, port).Run()
exec.Command("networksetup", "-setwebproxystate", active, "on").Run()
exec.Command("networksetup", "-setsecurewebproxystate", active, "on").Run()
} else {
exec.Command("networksetup", "-setwebproxystate", active, "off").Run()
exec.Command("networksetup", "-setsecurewebproxystate", active, "off").Run()
}
return nil
}