diff --git a/config/admin_service_cmd_runner.go b/config/admin_service_cmd_runner.go index 146bb0e..0541fb7 100644 --- a/config/admin_service_cmd_runner.go +++ b/config/admin_service_cmd_runner.go @@ -9,13 +9,17 @@ import ( "path/filepath" ) -func ExecuteCmd(executablePath, args string) (string, error) { +func ExecuteCmd(executablePath, args string, background bool) (string, error) { cwd := filepath.Dir(executablePath) - background := false if appimage := os.Getenv("APPIMAGE"); appimage != "" { executablePath = appimage + " HiddifyService" - args = "" - background = true + if !background { + return nil, fmt.Errorf("Appimage can not have service") + } + } + + if err := execCmdImp([]string{"cocoasudo", "--prompt=Hiddify needs root for tunneling.", executablePath, args}, cwd, background); err == nil { + return "Ok", nil } if err := execCmdImp([]string{"gksu", executablePath, args}, cwd, background); err == nil { return "Ok", nil diff --git a/config/admin_service_cmd_runner_windows.go b/config/admin_service_cmd_runner_windows.go index e01b704..f02f8c2 100644 --- a/config/admin_service_cmd_runner_windows.go +++ b/config/admin_service_cmd_runner_windows.go @@ -9,7 +9,7 @@ import ( "golang.org/x/sys/windows" ) -func ExecuteCmd(exe string, args string) (string, error) { +func ExecuteCmd(exe string, args string, background bool) (string, error) { verb := "runas" cwd, _ := os.Getwd() diff --git a/config/admin_service_commander.go b/config/admin_service_commander.go index 11deb4d..5385374 100644 --- a/config/admin_service_commander.go +++ b/config/admin_service_commander.go @@ -12,7 +12,6 @@ import ( "github.com/sagernet/sing-box/option" dns "github.com/sagernet/sing-dns" - E "github.com/sagernet/sing/common/exceptions" ) const ( @@ -25,10 +24,10 @@ func isSupportedOS() bool { return runtime.GOOS == "windows" || runtime.GOOS == "linux" } func ActivateTunnelService(opt ConfigOptions) (bool, error) { - if !isSupportedOS() { - return false, E.New("Unsupported OS: " + runtime.GOOS) - } - + // if !isSupportedOS() { + // return false, E.New("Unsupported OS: " + runtime.GOOS) + // } + go startTunnelRequest(opt, true) return true, nil } @@ -93,9 +92,13 @@ func stopTunnelRequest() (bool, error) { func runTunnelService(opt ConfigOptions) (bool, error) { executablePath := getTunnelServicePath() - fmt.Printf("Executable path is %s",executablePath) - out, err := ExecuteCmd(executablePath, "install") + fmt.Printf("Executable path is %s", executablePath) + out, err := ExecuteCmd(executablePath, "install", false) fmt.Println("Shell command executed:", out, err) + if err != nil { + out, err := ExecuteCmd(executablePath, "", true) + fmt.Println("Shell command executed without flag:", out, err) + } return startTunnelRequest(opt, false) } @@ -112,6 +115,6 @@ func getTunnelServicePath() string { fullPath = "HiddifyService" } - abspath,_:=filepath.Abs(filepath.Join(binFolder, fullPath)) + abspath, _ := filepath.Abs(filepath.Join(binFolder, fullPath)) return abspath }