2 # Should load from "ipset.cfg"
3 (constant 'IPSET SITE:ipset.bin 'TABLE SITE:ipset.table NET SITE:control.net)
5 ;; Return current low-leve "close" or "open" status
6 (define (current-status)
7 (if (member NET (exec (format "%s list %s" IPSET TABLE))) "close" "open"))
9 ;; Ensure low-level setting is "close" or "open" as given
10 (define (control cmd reason)
11 (when (!= cmd (current-status))
12 (let ((todo (case cmd ("open" "del") ("close" "add") (true "XXX"))))
13 (! (println (date-value)
14 (format " ipset-control (%s): " reason)
15 (format "%s %s %s %s" IPSET todo TABLE NET)))))