From e0b27e9c1272fb52af32e60e19fb1cd501ce3706 Mon Sep 17 00:00:00 2001 From: Lukas Braun <lukas.braun@fau.de> Date: Sat, 18 Mar 2017 21:40:42 +0100 Subject: [PATCH] simpler userlist format Just lines of "<username> <secret>" and comments beginning with '#'. --- goatherd.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/goatherd.go b/goatherd.go index 34aa97c..426e177 100644 --- a/goatherd.go +++ b/goatherd.go @@ -13,6 +13,7 @@ import ( "log" "net" "os" + "strings" "sync" "time" @@ -162,11 +163,22 @@ func read_users_from_file(path string) { log.Fatalf("%v: group/other accessible, refusing operation\n", path) } - var users_want map[string]string f, err := os.Open(path) err_fatal(err) - err = json.NewDecoder(f).Decode(&users_want) - if err != nil { log.Fatalf("JSON decode %v: %v", path, err) } + lines := bufio.NewScanner(f) + + users_want := make(map[string]string) + for lines.Scan() { + l := strings.TrimSpace(lines.Text()) + if len(l) == 0 || l[0] == '#' { + continue + } + tokens := strings.SplitN(l, " ", 2) + if len(tokens) != 2 { + log.Fatalf("unexpected input in userlist: %v\n", l) + } + users_want[strings.TrimSpace(tokens[0])] = strings.TrimSpace(tokens[1]) + } // update and delete existing users rows, err := db.Query("SELECT name, secret FROM users") @@ -192,6 +204,7 @@ func read_users_from_file(path string) { } else { log.Printf("remove %v\n", have.name) _, err = db.Exec("DELETE FROM users WHERE name = $1", have.name) + err_fatal(err) } } -- GitLab