Compare commits
9 Commits
2e585e16ed
...
e31789704d
| Author | SHA1 | Date |
|---|---|---|
|
|
e31789704d | |
|
|
0d68c9cc82 | |
|
|
7c569ca4f6 | |
|
|
f0b03255b8 | |
|
|
c4a030e6e6 | |
|
|
5f91a81545 | |
|
|
7ed4515139 | |
|
|
87e3f98e17 | |
|
|
11c3e1df77 |
1
Makefile
1
Makefile
|
|
@ -3,6 +3,7 @@ PACKAGE=asteroid
|
|||
PACKAGEUTILS=asteroid.app-utils
|
||||
OUT=asteroid
|
||||
ENTRY=-main
|
||||
BROWN_MM="Nil"
|
||||
|
||||
.PHONY: $(OUT)
|
||||
$(OUT): clean
|
||||
|
|
|
|||
17
asteroid.asd
17
asteroid.asd
|
|
@ -11,25 +11,28 @@
|
|||
:class "radiance:virtual-module"
|
||||
:depends-on (:slynk
|
||||
:lparallel
|
||||
:alexandria
|
||||
:cl-json
|
||||
:radiance
|
||||
:i-log4cl
|
||||
:r-clip
|
||||
:r-simple-rate
|
||||
:r-simple-profile
|
||||
:lass
|
||||
:parenscript
|
||||
:cl-json
|
||||
:alexandria
|
||||
:local-time
|
||||
:taglib
|
||||
:r-data-model
|
||||
:ironclad
|
||||
:babel
|
||||
:cl-fad
|
||||
:bordeaux-threads
|
||||
:drakma
|
||||
;; radiance interfaces
|
||||
:i-log4cl
|
||||
;; :i-postmodern
|
||||
:r-clip
|
||||
:r-data-model
|
||||
:r-simple-profile
|
||||
:r-simple-rate
|
||||
(:interface :auth)
|
||||
(:interface :database)
|
||||
(:interface :relational-database)
|
||||
(:interface :user))
|
||||
:pathname "./"
|
||||
:components ((:file "app-utils")
|
||||
|
|
|
|||
|
|
@ -924,11 +924,10 @@
|
|||
(compile-styles) ; Generate CSS file using LASS
|
||||
|
||||
;; Ensure RADIANCE environment is properly set before startup
|
||||
(unless (radiance:environment)
|
||||
(setf (radiance:environment) "default"))
|
||||
;; (unless (radiance:environment)
|
||||
;; (setf (radiance:environment) "asteroid"))
|
||||
|
||||
(radiance:startup)
|
||||
(format t "Server started! Visit http://localhost:~a/asteroid/~%" port))
|
||||
(radiance:startup))
|
||||
|
||||
(defun stop-server ()
|
||||
"Stop the Asteroid Radio RADIANCE server"
|
||||
|
|
@ -950,13 +949,19 @@
|
|||
(defun ensure-radiance-environment ()
|
||||
"Ensure RADIANCE environment is properly configured for persistence"
|
||||
(unless (radiance:environment)
|
||||
(setf (radiance:environment) "default"))
|
||||
|
||||
;; Ensure the database directory exists
|
||||
(let ((db-dir (merge-pathnames ".config/radiance/default/i-lambdalite/radiance.db/"
|
||||
(user-homedir-pathname))))
|
||||
(ensure-directories-exist db-dir)
|
||||
(format t "Database directory: ~a~%" db-dir)))
|
||||
(setf (radiance:environment) "asteroid"))
|
||||
|
||||
(log:info "~2&~15A - ~A~%~15A - ~A~%~15A - ~A~%~15A - ~A~%~15A - ~A~2%"
|
||||
":configuration"
|
||||
(radiance:environment-directory (radiance-core:environment) :configuration)
|
||||
":cache"
|
||||
(radiance:environment-directory (radiance-core:environment) :cache)
|
||||
":data"
|
||||
(radiance:environment-directory (radiance-core:environment) :data)
|
||||
":template"
|
||||
(radiance:environment-directory (radiance-core:environment) :template)
|
||||
":static"
|
||||
(radiance:environment-directory (radiance-core:environment) :static)))
|
||||
|
||||
(defun -main (&optional args (debug t))
|
||||
(declare (ignorable args))
|
||||
|
|
|
|||
|
|
@ -22,9 +22,9 @@
|
|||
(user-role (if (listp user-role-raw) (first user-role-raw) user-role-raw))
|
||||
(redirect-path (cond
|
||||
;; Admin users go to admin dashboard
|
||||
((string-equal user-role "admin") "/asteroid/admin")
|
||||
((string-equal user-role "admin") "/admin")
|
||||
;; All other users go to their profile
|
||||
(t "/asteroid/profile"))))
|
||||
(t "/profile"))))
|
||||
(format t "User ID from DB: ~a~%" user-id)
|
||||
(format t "User role: ~a, redirecting to: ~a~%" user-role redirect-path)
|
||||
(setf (session:field "user-id") (if (listp user-id) (first user-id) user-id))
|
||||
|
|
|
|||
|
|
@ -1,36 +1,65 @@
|
|||
;; -*-lisp-*-
|
||||
|
||||
(unless *load-pathname*
|
||||
(error "Please LOAD this file."))
|
||||
|
||||
;; Commented out to allow building with Quicklisp already loaded
|
||||
;; (when (find-package :quicklisp)
|
||||
;; (error "Please run this file as a script or from the Makefile."))
|
||||
|
||||
(defpackage #:asteroid-bootstrap
|
||||
(:nicknames #:ab)
|
||||
(:use #:cl)
|
||||
(:export #:*root* #:path))
|
||||
|
||||
(in-package #:asteroid-bootstrap)
|
||||
|
||||
(defvar *root* (make-pathname :name NIL :type NIL :defaults *load-pathname*))
|
||||
|
||||
(defun path (pathname)
|
||||
(merge-pathnames pathname *root*))
|
||||
|
||||
;; we require quicklisp to load our transitive dependencies.
|
||||
(load "~/quicklisp/setup.lisp")
|
||||
|
||||
|
||||
;; Build script for creating asteroid executable using save-lisp-and-die
|
||||
;; ASDF will automatically find the project via source-registry.conf
|
||||
|
||||
;; Load RADIANCE first, then handle environment
|
||||
(ql:quickload :radiance)
|
||||
|
||||
;; (defmethod radiance:environment-directory (environment (kind (eql :configuration)))
|
||||
;; (ab:path (make-pathname :directory `(:relative "config" ,environment))))
|
||||
|
||||
;; (defmethod radiance:environment-directory (environment (kind (eql :cache)))
|
||||
;; (ab:path (make-pathname :directory `(:relative "cache" ,environment))))
|
||||
|
||||
;; (defmethod radiance:environment-directory (environment (kind (eql :data)))
|
||||
;; (ab:path (make-pathname :directory `(:relative "data" ,environment))))
|
||||
|
||||
;; (defmethod radiance:environment-directory (environment (kind (eql :template)))
|
||||
;; (ab:path (make-pathname :directory `(:relative "override" ,environment "template"))))
|
||||
|
||||
;; (defmethod radiance:environment-directory (environment (kind (eql :static)))
|
||||
;; (ab:path (make-pathname :directory `(:relative "override" ,environment "static"))))
|
||||
|
||||
;; Ensure RADIANCE environment is set before loading
|
||||
(unless (radiance:environment)
|
||||
(setf (radiance:environment) "default"))
|
||||
(setf (radiance:environment) "asteroid"))
|
||||
|
||||
;; Load the system with RADIANCE environment handling
|
||||
(handler-bind ((radiance-core:environment-not-set
|
||||
(lambda (c)
|
||||
(declare (ignore c))
|
||||
(invoke-restart 'continue))))
|
||||
(lambda (c)
|
||||
(declare (ignore c))
|
||||
(invoke-restart 'continue))))
|
||||
(ql:quickload :asteroid))
|
||||
|
||||
(log:info "~2&~15A - ~A~%~15A - ~A~%~15A - ~A~%~15A - ~A~%~15A - ~A~2%"
|
||||
":configuration"
|
||||
(radiance:environment-directory (radiance-core:environment) :configuration)
|
||||
":cache"
|
||||
(radiance:environment-directory (radiance-core:environment) :cache)
|
||||
":data"
|
||||
(radiance:environment-directory (radiance-core:environment) :data)
|
||||
":template"
|
||||
(radiance:environment-directory (radiance-core:environment) :template)
|
||||
":static"
|
||||
(radiance:environment-directory (radiance-core:environment) :static))
|
||||
|
||||
;; Define the main function for the executable
|
||||
(defun main ()
|
||||
(asteroid:-main))
|
||||
|
|
@ -39,4 +68,5 @@
|
|||
(sb-ext:save-lisp-and-die "asteroid"
|
||||
:toplevel #'main
|
||||
:executable t
|
||||
:compression 22)
|
||||
:compression 12)
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 111 KiB |
162
stream-queue.m3u
162
stream-queue.m3u
|
|
@ -1 +1,163 @@
|
|||
#EXTM3U
|
||||
#EXTINF:370,Vector Lovers - City Lights From a Train
|
||||
/app/music/Vector Lovers/City Lights From a Train.flac
|
||||
#EXTINF:400,The Black Dog - Psil-Cosyin
|
||||
/app/music/The Black Dog/Psil-Cosyin.flac
|
||||
#EXTINF:320,Plaid - Eyen
|
||||
/app/music/Plaid/Eyen.flac
|
||||
#EXTINF:330,ISAN - Birds Over Barges
|
||||
/app/music/ISAN/Birds Over Barges.flac
|
||||
#EXTINF:360,Ochre - Bluebottle Farm
|
||||
/app/music/Ochre/Bluebottle Farm.flac
|
||||
#EXTINF:390,Arovane - Theme
|
||||
/app/music/Arovane/Theme.flac
|
||||
#EXTINF:380,Proem - Deep Like Airline Failure
|
||||
/app/music/Proem/Deep Like Airline Failure.flac
|
||||
#EXTINF:310,Solvent - My Radio (Remix)
|
||||
/app/music/Solvent/My Radio (Remix).flac
|
||||
#EXTINF:350,Bochum Welt - Marylebone (7th)
|
||||
/app/music/Bochum Welt/Marylebone (7th).flac
|
||||
#EXTINF:290,Mrs Jynx - Shibuya Lullaby
|
||||
/app/music/Mrs Jynx/Shibuya Lullaby.flac
|
||||
#EXTINF:340,Kettel - Whisper Me Wishes
|
||||
/app/music/Kettel/Whisper Me Wishes.flac
|
||||
#EXTINF:360,Christ. - Perlandine Friday
|
||||
/app/music/Christ./Perlandine Friday.flac
|
||||
#EXTINF:330,Cepia - Ithaca
|
||||
/app/music/Cepia/Ithaca.flac
|
||||
#EXTINF:340,Datassette - Vacuform
|
||||
/app/music/Datassette/Vacuform.flac
|
||||
#EXTINF:390,Plant43 - Dreams of the Sentient City
|
||||
/app/music/Plant43/Dreams of the Sentient City.flac
|
||||
#EXTINF:410,Claro Intelecto - Peace of Mind (Electrosoul)
|
||||
/app/music/Claro Intelecto/Peace of Mind (Electrosoul).flac
|
||||
#EXTINF:430,E.R.P. - Evoked
|
||||
/app/music/E.R.P./Evoked.flac
|
||||
#EXTINF:310,Der Zyklus - Formenverwandler
|
||||
/app/music/Der Zyklus/Formenverwandler.flac
|
||||
#EXTINF:330,Dopplereffekt - Infophysix
|
||||
/app/music/Dopplereffekt/Infophysix.flac
|
||||
#EXTINF:350,Drexciya - Wavejumper
|
||||
/app/music/Drexciya/Wavejumper.flac
|
||||
#EXTINF:375,The Other People Place - Sorrow & A Cup of Joe
|
||||
/app/music/The Other People Place/Sorrow & A Cup of Joe.flac
|
||||
#EXTINF:340,Arpanet - Wireless Internet
|
||||
/app/music/Arpanet/Wireless Internet.flac
|
||||
#EXTINF:380,Legowelt - Sturmvogel
|
||||
/app/music/Legowelt/Sturmvogel.flac
|
||||
#EXTINF:310,DMX Krew - Space Paranoia
|
||||
/app/music/DMX Krew/Space Paranoia.flac
|
||||
#EXTINF:360,Skywave Theory - Nova Drift
|
||||
/app/music/Skywave Theory/Nova Drift.flac
|
||||
#EXTINF:460,Pye Corner Audio - Transmission Four
|
||||
/app/music/Pye Corner Audio/Transmission Four.flac
|
||||
#EXTINF:390,B12 - Heaven Sent
|
||||
/app/music/B12/Heaven Sent.flac
|
||||
#EXTINF:450,Higher Intelligence Agency - Tortoise
|
||||
/app/music/Higher Intelligence Agency/Tortoise.flac
|
||||
#EXTINF:420,Biosphere - Kobresia
|
||||
/app/music/Biosphere/Kobresia.flac
|
||||
#EXTINF:870,Global Communication - 14:31
|
||||
/app/music/Global Communication/14:31.flac
|
||||
#EXTINF:500,Monolake - Cyan
|
||||
/app/music/Monolake/Cyan.flac
|
||||
#EXTINF:660,Deepchord - Electromagnetic
|
||||
/app/music/Deepchord/Electromagnetic.flac
|
||||
#EXTINF:1020,GAS - Pop 4
|
||||
/app/music/GAS/Pop 4.flac
|
||||
#EXTINF:600,Yagya - Rigning Nýju
|
||||
/app/music/Yagya/Rigning Nýju.flac
|
||||
#EXTINF:990,Voices From The Lake - Velo di Maya
|
||||
/app/music/Voices From The Lake/Velo di Maya.flac
|
||||
#EXTINF:3720,ASC - Time Heals All
|
||||
/app/music/ASC/Time Heals All.flac
|
||||
#EXTINF:540,36 - Room 237
|
||||
/app/music/36/Room 237.flac
|
||||
#EXTINF:900,Loscil - Endless Falls
|
||||
/app/music/Loscil/Endless Falls.flac
|
||||
#EXTINF:450,Kiasmos - Looped
|
||||
/app/music/Kiasmos/Looped.flac
|
||||
#EXTINF:590,Underworld - Rez
|
||||
/app/music/Underworld/Rez.flac
|
||||
#EXTINF:570,Orbital - Halcyon + On + On
|
||||
/app/music/Orbital/Halcyon + On + On.flac
|
||||
#EXTINF:1080,The Orb - A Huge Ever Growing Pulsating Brain
|
||||
/app/music/The Orb/A Huge Ever Growing Pulsating Brain.flac
|
||||
#EXTINF:360,Autechre - Slip
|
||||
/app/music/Autechre/Slip.flac
|
||||
#EXTINF:400,Labradford - S (Mi Media Naranja)
|
||||
/app/music/Labradford/S (Mi Media Naranja).flac
|
||||
#EXTINF:350,Vector Lovers - Rusting Cars and Wildflowers
|
||||
/app/music/Vector Lovers/Rusting Cars and Wildflowers.flac
|
||||
#EXTINF:390,The Black Dog - Raxmus
|
||||
/app/music/The Black Dog/Raxmus.flac
|
||||
#EXTINF:315,Plaid - Hawkmoth
|
||||
/app/music/Plaid/Hawkmoth.flac
|
||||
#EXTINF:320,ISAN - What This Button Did
|
||||
/app/music/ISAN/What This Button Did.flac
|
||||
#EXTINF:370,Ochre - Circadies
|
||||
/app/music/Ochre/Circadies.flac
|
||||
#EXTINF:420,Arovane - Tides
|
||||
/app/music/Arovane/Tides.flac
|
||||
#EXTINF:370,Proem - Nothing is as It Seems
|
||||
/app/music/Proem/Nothing is as It Seems.flac
|
||||
#EXTINF:300,Solvent - Loss For Words
|
||||
/app/music/Solvent/Loss For Words.flac
|
||||
#EXTINF:340,Bochum Welt - Saint (77sunset)
|
||||
/app/music/Bochum Welt/Saint (77sunset).flac
|
||||
#EXTINF:280,Mrs Jynx - Stay Home
|
||||
/app/music/Mrs Jynx/Stay Home.flac
|
||||
#EXTINF:330,Kettel - Church
|
||||
/app/music/Kettel/Church.flac
|
||||
#EXTINF:370,Christ. - Cordate
|
||||
/app/music/Christ./Cordate.flac
|
||||
#EXTINF:350,Datassette - Computers Elevate
|
||||
/app/music/Datassette/Computers Elevate.flac
|
||||
#EXTINF:420,Plant43 - The Cold Surveyor
|
||||
/app/music/Plant43/The Cold Surveyor.flac
|
||||
#EXTINF:380,Claro Intelecto - Section
|
||||
/app/music/Claro Intelecto/Section.flac
|
||||
#EXTINF:440,E.R.P. - Vox Automaton
|
||||
/app/music/E.R.P./Vox Automaton.flac
|
||||
#EXTINF:300,Dopplereffekt - Z-Boson
|
||||
/app/music/Dopplereffekt/Z-Boson.flac
|
||||
#EXTINF:380,Drexciya - Digital Tsunami
|
||||
/app/music/Drexciya/Digital Tsunami.flac
|
||||
#EXTINF:350,The Other People Place - You Said You Want Me
|
||||
/app/music/The Other People Place/You Said You Want Me.flac
|
||||
#EXTINF:370,Legowelt - Star Gazing
|
||||
/app/music/Legowelt/Star Gazing.flac
|
||||
#EXTINF:440,Pye Corner Audio - Electronic Rhythm Number 3
|
||||
/app/music/Pye Corner Audio/Electronic Rhythm Number 3.flac
|
||||
#EXTINF:460,B12 - Infinite Lites (Classic Mix)
|
||||
/app/music/B12/Infinite Lites (Classic Mix).flac
|
||||
#EXTINF:390,Biosphere - The Things I Tell You
|
||||
/app/music/Biosphere/The Things I Tell You.flac
|
||||
#EXTINF:580,Global Communication - 9:39
|
||||
/app/music/Global Communication/9:39.flac
|
||||
#EXTINF:460,Monolake - T-Channel
|
||||
/app/music/Monolake/T-Channel.flac
|
||||
#EXTINF:690,Deepchord - Vantage Isle (Variant)
|
||||
/app/music/Deepchord/Vantage Isle (Variant).flac
|
||||
#EXTINF:840,GAS - Königsforst 5
|
||||
/app/music/GAS/Königsforst 5.flac
|
||||
#EXTINF:520,Yagya - The Salt on Her Cheeks
|
||||
/app/music/Yagya/The Salt on Her Cheeks.flac
|
||||
#EXTINF:720,Voices From The Lake - Dream State
|
||||
/app/music/Voices From The Lake/Dream State.flac
|
||||
#EXTINF:510,36 - Night Rain
|
||||
/app/music/36/Night Rain.flac
|
||||
#EXTINF:470,Loscil - First Narrows
|
||||
/app/music/Loscil/First Narrows.flac
|
||||
#EXTINF:400,Kiasmos - Burnt
|
||||
/app/music/Kiasmos/Burnt.flac
|
||||
#EXTINF:570,Underworld - Jumbo (Extended)
|
||||
/app/music/Underworld/Jumbo (Extended).flac
|
||||
#EXTINF:480,Orbital - Belfast
|
||||
/app/music/Orbital/Belfast.flac
|
||||
#EXTINF:540,The Orb - Little Fluffy Clouds (Ambient Mix)
|
||||
/app/music/The Orb/Little Fluffy Clouds (Ambient Mix).flac
|
||||
#EXTINF:390,Autechre - Nine
|
||||
/app/music/Autechre/Nine.flac
|
||||
#EXTINF:380,Labradford - G (Mi Media Naranja)
|
||||
/app/music/Labradford/G (Mi Media Naranja).flac
|
||||
|
|
|
|||
Loading…
Reference in New Issue