Files
umbrix-libcore/config/admin_service_cmd_runner.go

57 lines
1.3 KiB
Go
Raw Normal View History

//go:build !windows
package config
import (
"fmt"
"os"
"os/exec"
2024-02-09 16:20:40 +01:00
"path/filepath"
)
func ExecuteCmd(executablePath, args string) (string, error) {
2024-02-09 23:36:44 +01:00
cwd := filepath.Dir(executablePath)
background := false
if appimage := os.Getenv("APPIMAGE"); appimage != "" {
executablePath = appimage + " HiddifyService"
args = ""
background = true
2024-02-09 16:20:40 +01:00
}
if err := execCmdImp([]string{"gksu", executablePath, args}, cwd, background); err == nil {
return "Ok", nil
}
if err := execCmdImp([]string{"pkexec", executablePath, args}, cwd, background); err == nil {
return "Ok", nil
}
2024-02-09 23:36:44 +01:00
if err := execCmdImp([]string{"xterm", "-e", "sudo " + executablePath + " " + args}, cwd, background); err == nil {
return "Ok", nil
}
2024-02-09 23:36:44 +01:00
if err := execCmdImp([]string{"sudo", executablePath, args}, cwd, background); err == nil {
return "Ok", nil
}
2024-02-09 23:36:44 +01:00
2024-02-05 20:22:42 +01:00
return "", fmt.Errorf("Error executing run as root shell command")
}
2024-02-09 23:36:44 +01:00
func execCmdImp(commands []string, cwd string, background bool) error {
2024-02-05 20:22:42 +01:00
cmd := exec.Command(commands[0], commands[1:]...)
2024-02-09 16:20:40 +01:00
cmd.Dir = cwd
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
2024-02-05 20:22:42 +01:00
fmt.Printf("Running command: %v", commands)
2024-02-09 23:36:44 +01:00
if background {
2024-02-09 16:20:40 +01:00
if err := cmd.Start(); err != nil {
fmt.Printf("Error: %v\n", err)
return err
}
2024-02-09 23:36:44 +01:00
} else {
2024-02-09 16:20:40 +01:00
if err := cmd.Run(); err != nil {
fmt.Printf("Error: %v\n", err)
return err
}
}
return nil
}