fixes; first version
[rrq/hourglass.git] / siteconfig.lsp
1 (context 'MAIN:SITE)
2
3 (define (set-int K V) (set K (int V 0 10)))
4
5 (define (set-ints K V)
6   (set K (map int (clean empty? (parse V "(\\s+|\\s*,\\s*)" 0)))))
7
8 (define (set-list K V)
9   (set K (clean empty? (parse V "(\\s+|\\s*,\\s*)" 0))))
10
11 (constant
12  'FILE "hourglass.conf"
13  'KEYS '(
14          ("listener.ports" set-ints)
15          ("listener.net" set)
16          ("listener.log.ip" set)
17          ("listener.activity.dir" set)
18          ("listener.tap" set)
19
20          ("control.action" set)
21          ("control.dat" set)
22          ("control.net" set)
23          ("control.extra.dat" set)
24          ("control.usage.dat" set)
25          ("control.usage.tmp" set)
26          ("control.activity.gap" set-int)
27          ("control.activity.clip" set)
28
29          ("ipset.bin" set)
30          ("ipset.table" set)
31          
32          ("wui.port" set-int)
33          ("wui.passwd" set)
34
35          ("libc" set)
36          ("tundev" set)
37          )
38  )
39
40 (define (setting LINE)
41   (when (regex "^\\s*([^;#][^=]*)=(.*)" LINE 0)
42     (let ((KV (map trim (list $1 $2))))
43       (if (lookup (KV 0) KEYS)
44           (let ((SET $it) (K (sym (KV 0))) (V (KV 1)))
45             ;(write-line 2 (string (list K V)))
46             (apply SET (list K V)))))))
47
48 (map setting (parse (or (read-file FILE) "") "\n"))
49
50 "siteconfig.lsp"