71 lines
1.2 KiB
Go
71 lines
1.2 KiB
Go
//go:build linux
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
func getInstallDir() (string, error) {
|
|
return "/opt/logofclient", nil
|
|
}
|
|
|
|
func platformEnsureElevated() error {
|
|
return nil
|
|
}
|
|
|
|
func platformRunPrivileged(config Config, action string) error {
|
|
// Bereits als root gestartet.
|
|
if os.Geteuid() == 0 {
|
|
return runAction(config, action)
|
|
}
|
|
|
|
fmt.Println()
|
|
fmt.Println("Für diese Aktion werden Administratorrechte benötigt.")
|
|
fmt.Print("Jetzt Administratorrechte anfordern? [J/n]: ")
|
|
|
|
var answer string
|
|
|
|
if _, err := fmt.Scanln(&answer); err != nil {
|
|
// Ein leeres Enter kann bei Scanln als Fehler erscheinen.
|
|
// Das behandeln wir als Zustimmung.
|
|
answer = ""
|
|
}
|
|
|
|
answer = strings.ToLower(strings.TrimSpace(answer))
|
|
|
|
if answer != "" && answer != "j" && answer != "ja" {
|
|
fmt.Println("Abgebrochen.")
|
|
return nil
|
|
}
|
|
|
|
exe, err := os.Executable()
|
|
if err != nil {
|
|
return fmt.Errorf(
|
|
"Pfad des Installers konnte nicht ermittelt werden: %w",
|
|
err,
|
|
)
|
|
}
|
|
|
|
cmd := exec.Command(
|
|
"sudo",
|
|
exe,
|
|
action,
|
|
)
|
|
|
|
cmd.Stdin = os.Stdin
|
|
cmd.Stdout = os.Stdout
|
|
cmd.Stderr = os.Stderr
|
|
|
|
if err := cmd.Run(); err != nil {
|
|
return fmt.Errorf(
|
|
"Ausführung mit Administratorrechten fehlgeschlagen: %w",
|
|
err,
|
|
)
|
|
}
|
|
|
|
return nil
|
|
} |