diff --git a/asteroid.lisp b/asteroid.lisp index c9f0b1f..7ea24ae 100644 --- a/asteroid.lisp +++ b/asteroid.lisp @@ -445,8 +445,8 @@ "Main front page" (clip:process-to-string (load-template "front-page") - :title "🎵 ASTEROID RADIO 🎵" - :station-name "🎵 ASTEROID RADIO 🎵" + :title "ASTEROID RADIO" + :station-name "ASTEROID RADIO" :status-message "🟢 LIVE - Broadcasting asteroid music for hackers" :listeners "0" :stream-quality "128kbps MP3" @@ -464,15 +464,15 @@ "Frameset wrapper with persistent audio player" (clip:process-to-string (load-template "frameset-wrapper") - :title "🎵 ASTEROID RADIO 🎵")) + :title "ASTEROID RADIO")) ;; Content frame - front page content without player (define-page front-page-content #@"/content" () "Front page content (displayed in content frame)" (clip:process-to-string (load-template "front-page-content") - :title "🎵 ASTEROID RADIO 🎵" - :station-name "🎵 ASTEROID RADIO 🎵" + :title "ASTEROID RADIO" + :station-name "ASTEROID RADIO" :status-message "🟢 LIVE - Broadcasting asteroid music for hackers" :listeners "0" :stream-quality "128kbps MP3" @@ -597,23 +597,34 @@ ;; Admin page (requires authentication) (define-page admin #@"/admin" () "Admin dashboard" - (require-authentication) - (let ((track-count (handler-case - (length (db:select "tracks" (db:query :all))) - (error () 0)))) - (clip:process-to-string - (load-template "admin") - :title "🎵 ASTEROID RADIO - Admin Dashboard" - :server-status "🟢 Running" - :database-status (handler-case - (if (db:connected-p) "🟢 Connected" "🔴 Disconnected") - (error () "🔴 No Database Backend")) - :liquidsoap-status (check-liquidsoap-status) - :icecast-status (check-icecast-status) - :track-count (format nil "~d" track-count) - :library-path "/home/glenn/Projects/Code/asteroid/music/library/" - :stream-base-url *stream-base-url* - :default-stream-url (format nil "~a/asteroid.aac" *stream-base-url*)))) + (format t "~%=== ADMIN PAGE CALLED ===~%") + (handler-case + (progn + (require-authentication) + (format t "~%=== AUTHENTICATION PASSED ===~%")) + (error (e) + (format t "~%ERROR IN require-authentication: ~a~%" e) + (error e))) + (handler-case + (let ((track-count (handler-case + (length (db:select "tracks" (db:query :all))) + (error () 0)))) + (clip:process-to-string + (load-template "admin") + :title "ASTEROID RADIO - Admin Dashboard" + :server-status "🟢 Running" + :database-status (handler-case + (if (db:connected-p) "🟢 Connected" "🔴 Disconnected") + (error () "🔴 No Database Backend")) + :liquidsoap-status (check-liquidsoap-status) + :icecast-status (check-icecast-status) + :track-count (format nil "~d" track-count) + :library-path "/home/glenn/Projects/Code/asteroid/music/library/" + :stream-base-url *stream-base-url* + :default-stream-url (format nil "~a/asteroid.aac" *stream-base-url*))) + (error (e) + (format t "~%ERROR IN ADMIN PAGE: ~a~%" e) + (error e)))) ;; User Management page (requires authentication) (define-page users-management #@"/admin/user" () @@ -621,7 +632,7 @@ (require-authentication) (clip:process-to-string (load-template "users") - :title "🎵 ASTEROID RADIO - User Management")) + :title "ASTEROID RADIO - User Management")) ;; User Profile page (requires authentication) (define-page user-profile #@"/profile" () diff --git a/auth-routes.lisp b/auth-routes.lisp index 6aa5aec..6c6f503 100644 --- a/auth-routes.lisp +++ b/auth-routes.lisp @@ -47,7 +47,7 @@ (define-page logout #@"/logout" () "Handle user logout" (setf (session:field "user-id") nil) - (radiance:redirect "/asteroid/")) + (radiance:redirect "/")) ;; API: Get all users (admin only) (define-api asteroid/users () () diff --git a/docker/asteroid-radio-docker.liq b/docker/asteroid-radio-docker.liq index 953b67e..60ecacb 100644 --- a/docker/asteroid-radio-docker.liq +++ b/docker/asteroid-radio-docker.liq @@ -23,9 +23,9 @@ settings.server.telnet.bind_addr.set("0.0.0.0") # This file is managed by Asteroid's stream control system # Falls back to directory scan if playlist file doesn't exist radio = playlist( - mode="normal", # Play in order (not randomized) - reload=30, # Check for playlist updates every 30 seconds - reload_mode="seconds", # Reload every N seconds (prevents running out of tracks) + mode="sequential", # Play through playlist in order, then loop + reload=300, # Check for playlist updates every 5 minutes + reload_mode="watch", # Watch file for changes (more efficient than polling) "/app/stream-queue.m3u" ) diff --git a/template/frameset-wrapper.ctml b/template/frameset-wrapper.ctml index 0cf1f2e..648e2b4 100644 --- a/template/frameset-wrapper.ctml +++ b/template/frameset-wrapper.ctml @@ -1,7 +1,7 @@
-
+ ASTEROID RADIO
+
+