From 51c603afe0373f45f8d389c99cac9d3aec959b75 Mon Sep 17 00:00:00 2001 From: bt Date: Sun, 24 May 2026 18:52:58 +0200 Subject: [common] Users and permissions database --- cmd/daemon/main.go | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 2 deletions(-) (limited to 'cmd') diff --git a/cmd/daemon/main.go b/cmd/daemon/main.go index aebc085..a118df3 100644 --- a/cmd/daemon/main.go +++ b/cmd/daemon/main.go @@ -8,9 +8,11 @@ import ( "maps" "os" "slices" + "strconv" "strings" "time" + "go.rctt.net/solec/core" "go.rctt.net/solec/server" "go.rctt.net/solec/storage" @@ -21,6 +23,9 @@ var ( cmds = map[string]func(args []string){ "broadcast": sendBroadcast, "read": readHistory, + "user_set": setUser, + "user_del": delUser, + "perm_set": setPerm, "exit": exit, } serv *server.Server @@ -107,17 +112,83 @@ func sendBroadcast(args []string) { func readHistory(args []string) { if len(args) != 1 { fmt.Println("usage: read ") + return } - hist, err := serv.Storage.Read(args[0], time.Time{}, 999999, 0) + hist, err := serv.Storage.GetHistory(args[0], time.Time{}, 999999, 0) if err != nil { - fmt.Println(err) + printErr(err) return } fmt.Println(hist) } +func setUser(args []string) { + if len(args) != 2 { + fmt.Println("usage: user_set ") + return + } + + pass, err := core.HashPass(args[1]) + if err != nil { + printErr(err) + return + } + + user := core.UserData{ + Name: args[0], + Pass: pass, + } + + if err := serv.Storage.SetUser(user); err != nil { + printErr(err) + } +} + +func delUser(args []string) { + if len(args) != 1 { + fmt.Println("usage: user_del ") + return + } + + if err := serv.Storage.DelUser(args[0]); err != nil { + printErr(err) + } +} + +func setPerm(args []string) { + if len(args) != 4 { + fmt.Println("usage: perm_set ") + return + } + + perm := core.PermissionData{ + User: args[0], + Channel: args[1], + } + + var err error + + if perm.Read, err = strconv.ParseBool(args[2]); err != nil { + printErr(err) + return + } + + if perm.Write, err = strconv.ParseBool(args[3]); err != nil { + printErr(err) + return + } + + if err := serv.Storage.SetPermission(perm); err != nil { + printErr(err) + } +} + func exit(args []string) { os.Exit(0) } + +func printErr(err error) { + fmt.Println("error:", err) +} -- cgit v1.2.3