# 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")))
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 $@ $^
;; 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)
(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)))
(! "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)
--- /dev/null
+(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"