lifted out siteconfig loading to separate script
authorRalph Ronnquist <ralph.ronnquist@gmail.com>
Sun, 2 Jan 2022 01:47:44 +0000 (12:47 +1100)
committerRalph Ronnquist <ralph.ronnquist@gmail.com>
Sun, 2 Jan 2022 01:47:44 +0000 (12:47 +1100)
command.lsp
manager/Makefile
manager/basic_login.lsp
manager/hourglass-web
manager/install.lsp
siteconfig.lsp [new file with mode: 0644]

index 8751fc3082e4c5de8571b94d06f5787d22e62c4d..6045386816eae39d3657562acc8f869e1f85b0d1 100644 (file)
@@ -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")))
index 5341048f80ad9ef168457147c86823b5e29b5e7f..5de00e015d7b00ba8afb07520a57b547220742da 100644 (file)
@@ -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 $@ $^
index f491a9eee47ead9952defe603dd782c9f6792e76..8ca9920882219ae4895b247b59b63097403d375a 100644 (file)
@@ -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)
index b8a4e56f64f058469dfc3a33c5de0934a9658ee2..42cbd571876026fa2e5119f3f423834e1295ef20 100755 (executable)
Binary files a/manager/hourglass-web and b/manager/hourglass-web differ
index c4193bea8cb792abe0388212c20eb253e9e76bd7..6cf0c8790fe8e7be743bf49946e4f821d19a97d9 100644 (file)
@@ -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 (file)
index 0000000..a3bb7b6
--- /dev/null
@@ -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"