we got some dhrek we got some doneky we got some fienona

This commit is contained in:
Sasha Koshka
2023-06-01 03:37:08 -04:00
parent 32bc44c90f
commit 7726d732d4
4 changed files with 85 additions and 58 deletions

View File

@@ -76,6 +76,8 @@ func main () {
delUserCommand := flag.NewFlagSet("deluser", flag.ExitOnError)
delUserService := delUserCommand.String ("s", "router",
"Service to delete the user for")
delUserRmData := delUserCommand.Bool ("rmd", false,
"Whether to remove the service's data directory")
authCommand := flag.NewFlagSet("auth", flag.ExitOnError)
authService := authCommand.String ("s", "router",
@@ -108,7 +110,7 @@ func main () {
execAdduser(*addUserService)
case "deluser":
delUserCommand.Parse(subCommandArgs)
execDeluser(*delUserService)
execDeluser(*delUserService, *delUserRmData)
case "auth":
authCommand.Parse(subCommandArgs)
execAuth(*authService, *authUser)
@@ -144,55 +146,66 @@ func execHash (cost int, key string) {
func execAdduser (service string) {
fullName := cli.ServiceUser(service)
dataDir := cli.ServiceDir(service)
// BUSYBOX
adduser, err := exec.LookPath("adduser")
if err == nil {
if adduser, err := exec.LookPath("adduser"); err == nil {
// BUSYBOX
addgroup, _ := exec.LookPath("addgroup")
tryCommand (exec.Command(addgroup, fullName, "-S"),
"could not add group")
tryCommand (exec.Command(adduser, fullName, "-SHDG", fullName),
"could not add user")
return
}
// GNU
useradd, err := exec.LookPath("useradd")
if err == nil {
} else if useradd, err := exec.LookPath("useradd"); err == nil {
// GNU
tryCommand (exec.Command (
useradd, fullName, "-rUM",
"--shell", "/sbin/nologin"), "could not add user")
return
} else {
cli.Sayf("could not add user: no command adduser or useradd\n")
os.Exit(1)
}
cli.Sayf("could not add user: no command adduser or useradd\n")
os.Exit(1)
// create data directory
uid, gid, err := cli.LookupUID(fullName)
if err != nil {
cli.Sayf("could not create data dir: %v\n", err)
os.Exit(1)
}
err = cli.MkdirFor(dataDir, int(uid), int(gid))
if err != nil {
cli.Sayf("could not create data dir: %v\n", err)
os.Exit(1)
}
}
func execDeluser (service string) {
func execDeluser (service string, rmData bool) {
fullName := cli.ServiceUser(service)
dataDir := cli.ServiceDir(service)
// BUSYBOX
deluser, err := exec.LookPath("deluser")
if err == nil {
if deluser, err := exec.LookPath("deluser"); err == nil {
// BUSYBOX
tryCommand (exec.Command(deluser, fullName, "--remove-home"),
"could not delete user")
return
}
// GNU
userdel, err := exec.LookPath("userdel")
if err == nil {
} else if userdel, err := exec.LookPath("userdel"); err == nil {
// GNU
tryCommand (exec.Command(userdel, fullName, "-r"),
"could not delete user")
groupdel, _ := exec.LookPath("groupdel")
tryCommand (exec.Command(groupdel, fullName),
"could not delete group")
return
} else {
cli.Sayf("could not delete user: no command deluser or userdel\n")
os.Exit(1)
}
cli.Sayf("could not delete user: no command deluser or userdel\n")
os.Exit(1)
// delete data directory
if rmData {
err := os.RemoveAll(dataDir)
if err != nil {
cli.Sayf("could not delete data dir: %v\n", err)
os.Exit(1)
}
}
}
func execAuth (service, user string) {