include docs in dist
[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   (map (curry set-int K) (clean empty? (parse V "\\s*,?\\s*" 0))))
7
8 (define (set-list K V)
9   (map (curry set K) (clean empty? (parse V "\\s*,?\\s*" 0))))
10
11 (constant
12  'FILE "hourglass.conf"
13  'KEYS '(
14          ("listener.ports" set-ints)
15          ("listener.ip" set)
16          ("listener.activity.dir" set)
17          ("listener.tap" set)
18
19          ("control.action" set)
20          ("control.dat" set)
21          ("control.net" set)
22          ("control.extra.dat" set)
23          ("control.usage.dat" set)
24          ("control.usage.tmp" set)
25          ("control.activity.gap" set-int)
26          ("control.activity.clip" set)
27
28          ("ipset.bin" set)
29          ("ipset.table" set)
30          
31          ("wui.port" set-int)
32          ("wui.passwd" set)
33
34          ("libc" set)
35          ("tundev" set)
36          )
37  )
38
39 (define (setting LINE)
40   (when (regex "^\\s([^;#][^=]*)=(.*)" LINE 0)
41     (let ((KV (map trim (list $1 $2))))
42       (if (lookup (KV 0) KEYS) (apply $it (list (sym (KV 0)) (KV 1)))))))
43
44 (map setting (parse (or (read-file FILE) "") "\n"))
45
46 "siteconfig.lsp"