]> code.octet-stream.net Git - broadcaster/blobdiff - server/broadcaster.go
Allow web user to cancel transmission in progress
[broadcaster] / server / broadcaster.go
index d2495fd45e8d8d386197d56b7a21ff2d09769387..e5f992243568cd09f3d0fb842029baf5b177c62e 100644 (file)
@@ -33,6 +33,7 @@ func main() {
        InitDatabase()
        defer db.CloseDatabase()
 
+       InitCommandRouter()
        InitPlaylists()
        InitAudioFiles(config.AudioFilesPath)
        InitServerStatus()
@@ -41,6 +42,7 @@ func main() {
        http.HandleFunc("/login", logInPage)
        http.HandleFunc("/logout", logOutPage)
        http.HandleFunc("/secret", secretPage)
+       http.HandleFunc("/stop", stopPage)
 
        http.HandleFunc("/playlist/", playlistSection)
        http.HandleFunc("/file/", fileSection)
@@ -404,3 +406,19 @@ func logOutPage(w http.ResponseWriter, r *http.Request) {
        tmpl := template.Must(template.ParseFiles("templates/logout.html"))
        tmpl.Execute(w, nil)
 }
+
+func stopPage(w http.ResponseWriter, r *http.Request) {
+       _, err := currentUser(w, r)
+       if err != nil {
+               http.Redirect(w, r, "/login", http.StatusFound)
+               return
+       }
+       r.ParseForm()
+       radioId, err := strconv.Atoi(r.Form.Get("radioId"))
+       if err != nil {
+               http.NotFound(w, r)
+               return
+       }
+       commandRouter.Stop(radioId)
+       http.Redirect(w, r, "/", http.StatusFound)
+}