From: Ralph Ronnquist Date: Sun, 2 Jan 2022 01:47:44 +0000 (+1100) Subject: lifted out siteconfig loading to separate script X-Git-Tag: 0.1~24 X-Git-Url: https://git.rrq.au/?a=commitdiff_plain;ds=sidebyside;h=3feeffd680a6d4abfb63b15a40e5246e4969ddf4;p=rrq%2Fhourglass.git lifted out siteconfig loading to separate script --- diff --git a/command.lsp b/command.lsp index 8751fc3..6045386 100644 --- a/command.lsp +++ b/command.lsp @@ -2,45 +2,7 @@ # This script is intended as main script for packnl embedding, it # dispatches to the command of the first argument. -(context 'MAIN:SITE) - -(define (set-int K V) (set K (int V 0 10))) - -(define (set-ints K V) - (map (curry set-int K) (clean empty? (parse V "\\s*,?\\s*" 0)))) - -(define (set-list K V) - (map (curry set K) (clean empty? (parse V "\\s*,?\\s*" 0)))) - -(constant - 'FILE "hourglass.conf" - 'KEYS '( - ("libc" set) - ("listener.ports" set-ints) - ("listener.ip" set) - ("listener.activity.dir" set) - ("control.action" set) - ("control.dat" set) - ("control.net" set) - ("control.extra.dat" set) - ("control.usage.dat" set) - ("control.usage.tmp" set) - - ("wui.port" set-int) - ("wui.roles" set) - ("wui.passwd" set) - ) - ) - -(define (setting LINE) - (when (regex "^\\s([^;#][^=]*)=(.*)" LINE 0) - (let ((KV (map trim (list $1 $2)))) - (if (lookup (KV 0) KEYS) (apply $it (list (sym (KV 0)) (KV 1))))))) - -(map setting (parse (or (read-file FILE) "") "\n")) - -#################### -(context MAIN) +(load "siteconfig.lsp") (if (exists file? (list (main-args 1) (string (main-args 1) ".lsp"))) diff --git a/manager/Makefile b/manager/Makefile index 5341048..5de00e0 100644 --- a/manager/Makefile +++ b/manager/Makefile @@ -5,5 +5,10 @@ MAIN = basic_login.lsp LSP = $(filter-out $(MAIN),$(wildcard *.lsp)) OTHER = www/hourglass.css www/images/hourglass.png +LSP += siteconfig.lsp +.INTERMEDIATE: siteconfig.lsp +siteconfig.lsp: ../siteconfig.lsp + cp $< $@ + hourglass-web: $(MAIN) $(LSP) $(TMPL) $(OTHER) packnl -w $@ $^ diff --git a/manager/basic_login.lsp b/manager/basic_login.lsp index f491a9e..8ca9920 100644 --- a/manager/basic_login.lsp +++ b/manager/basic_login.lsp @@ -8,6 +8,8 @@ ;; name to determine th actual script. That lookup will also use the ;; "role base" as declared in "roles.txt" +(load "siteconfig.lsp") + (write-line 2 (string (date-value) " " (main-args))) (unless (ends-with (main-args 0) ".cgi") (if (exists file? (list (main-args 1) diff --git a/manager/hourglass-web b/manager/hourglass-web index b8a4e56..42cbd57 100755 Binary files a/manager/hourglass-web and b/manager/hourglass-web differ diff --git a/manager/install.lsp b/manager/install.lsp index c4193be..6cf0c87 100644 --- a/manager/install.lsp +++ b/manager/install.lsp @@ -6,6 +6,12 @@ (write-line 2 "** directory www exists. aborting") (exit 1)) +(unless (directory? SITE:listener.activity.dir) + (write-line 2 (format "** directory %s doesn't exists. aborting" + SITE:listener.activity.dir + )) + (exit 1)) + (define (copy-out F) (write-file F (read-file F))) @@ -18,3 +24,9 @@ (! "ln -sTf ../hourglass-web www/history.cgi") (! "ln -sTf ../hourglass-web www/usage.cgi") (! "ln -sTf ../hourglass-web www/controls.cgi") + +(define (maybe-touch F (D "")) (unless (file? F) (write-file F D))) + +(maybe-touch SITE:control.dat) +(maybe-touch SITE:control.usage.dat "(0 0)") +(maybe-touch SITE:wui.passwd) diff --git a/siteconfig.lsp b/siteconfig.lsp new file mode 100644 index 0000000..a3bb7b6 --- /dev/null +++ b/siteconfig.lsp @@ -0,0 +1,38 @@ +(context 'MAIN:SITE) + +(define (set-int K V) (set K (int V 0 10))) + +(define (set-ints K V) + (map (curry set-int K) (clean empty? (parse V "\\s*,?\\s*" 0)))) + +(define (set-list K V) + (map (curry set K) (clean empty? (parse V "\\s*,?\\s*" 0)))) + +(constant + 'FILE "hourglass.conf" + 'KEYS '( + ("libc" set) + ("listener.ports" set-ints) + ("listener.ip" set) + ("listener.activity.dir" set) + ("control.action" set) + ("control.dat" set) + ("control.net" set) + ("control.extra.dat" set) + ("control.usage.dat" set) + ("control.usage.tmp" set) + + ("wui.port" set-int) + ("wui.roles" set) + ("wui.passwd" set) + ) + ) + +(define (setting LINE) + (when (regex "^\\s([^;#][^=]*)=(.*)" LINE 0) + (let ((KV (map trim (list $1 $2)))) + (if (lookup (KV 0) KEYS) (apply $it (list (sym (KV 0)) (KV 1))))))) + +(map setting (parse (or (read-file FILE) "") "\n")) + +"siteconfig.lsp"