summaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-05-24 18:52:58 +0200
committerbt <bt@rctt.net>2026-05-24 18:52:58 +0200
commit51c603afe0373f45f8d389c99cac9d3aec959b75 (patch)
tree77de75fbfec26c332bcaf79424c66cd0e9615be8 /cmd
parentcd925e3c7716216902f3a0ef4c333f32e5f1bdb4 (diff)
downloadsolec-51c603afe0373f45f8d389c99cac9d3aec959b75.tar.gz
solec-51c603afe0373f45f8d389c99cac9d3aec959b75.zip
[common] Users and permissions database
Diffstat (limited to 'cmd')
-rw-r--r--cmd/daemon/main.go75
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)
+}