aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-07-03 17:50:35 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2023-07-03 17:50:35 +0200
commit2418216388eef71e53dff60d36345fbf1c4db684 (patch)
treeb06bac16c427ac6bc0f6828ce15f6f41c43a4c49 /main.go
parentd05c1f7d4590e3af6eb6ea25be75487a8a706ce0 (diff)
downloadWRMS-2418216388eef71e53dff60d36345fbf1c4db684.tar.gz
WRMS-2418216388eef71e53dff60d36345fbf1c4db684.zip
add admin-password and button to become admin from the client
Diffstat (limited to 'main.go')
-rw-r--r--main.go35
1 files changed, 25 insertions, 10 deletions
diff --git a/main.go b/main.go
index 53abc2f..fd390bf 100644
--- a/main.go
+++ b/main.go
@@ -186,6 +186,30 @@ func nextHandler(w http.ResponseWriter, r *http.Request) {
genericControlHandler(w, r, "next")
}
+func adminHandler(w http.ResponseWriter, r *http.Request) {
+ connId, err := getConnId(w, r)
+ if err != nil {
+ return
+ }
+
+ _pw, err := io.ReadAll(r.Body)
+ if err != nil {
+ llog.Warning("Failed to read admin password from request body")
+ http.Error(w, "Failed to read asdmin password from request body", http.StatusInternalServerError)
+ return
+ }
+
+ pw := string(_pw)
+
+ if pw == wrms.Config.AdminPW {
+ wrms.Config.Admins = append(wrms.Config.Admins, connId)
+ } else {
+ llog.Warning("Wrong admin password: %s", pw)
+ http.Error(w, "Wrong admin password", http.StatusUnauthorized)
+ return
+ }
+}
+
func eventsEndpoint(w http.ResponseWriter, r *http.Request) {
connId, err := getConnId(w, r)
if err != nil {
@@ -227,6 +251,7 @@ func setupRoutes() {
http.HandleFunc("/delete", deleteHandler)
http.HandleFunc("/next", nextHandler)
http.HandleFunc("/playpause", playPauseHandler)
+ http.HandleFunc("/admin", adminHandler)
http.HandleFunc("/events", eventsEndpoint)
}
@@ -239,22 +264,12 @@ func main() {
flag.StringVar(&config.LocalMusicDir,
"serve-music-dir", config.LocalMusicDir, "local music directory to serve")
flag.StringVar(&config.UploadDir, "upload-dir", config.UploadDir, "directory to upload songs to")
- genAdmin := flag.Bool("generate-admin", false, "generate an admin uuid")
flag.Parse()
if *backends != "" {
config.Backends = strings.Split(*backends, " ")
}
- if *genAdmin {
- var err error
- config.Admin, err = uuid.NewRandom()
- if err != nil {
- llog.Fatal("Failed to create random UUID: %v", err)
- }
- llog.Info("Admin uuid: %v", config.Admin)
- }
-
llog.SetLogLevelFromString(config.LogLevel)
config.HasUpload = slices.Contains(config.Backends, "upload")