diff options
| author | bt <bt@rctt.net> | 2026-05-24 18:52:58 +0200 |
|---|---|---|
| committer | bt <bt@rctt.net> | 2026-05-24 18:52:58 +0200 |
| commit | 51c603afe0373f45f8d389c99cac9d3aec959b75 (patch) | |
| tree | 77de75fbfec26c332bcaf79424c66cd0e9615be8 /cmd | |
| parent | cd925e3c7716216902f3a0ef4c333f32e5f1bdb4 (diff) | |
| download | solec-51c603afe0373f45f8d389c99cac9d3aec959b75.tar.gz solec-51c603afe0373f45f8d389c99cac9d3aec959b75.zip | |
[common] Users and permissions database
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/daemon/main.go | 75 |
1 files changed, 73 insertions, 2 deletions
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 <channel>") + 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 <name> <password>") + 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 <name>") + 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 <user> <channel> <read:bool> <write:bool>") + 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) +} |
