X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=ipset-control.lsp;h=8d931727394da64a567e8bc8aec407093768edfc;hb=a6009c7c04d72e861737a3cdf1e327eada42dcb3;hp=9c9bf9393d378051677d6aa34f2f0a11bb913b8c;hpb=05a9c528d8aee0373f52fa1bc72250e7f3625e76;p=rrq%2Fhourglass.git diff --git a/ipset-control.lsp b/ipset-control.lsp index 9c9bf93..8d93172 100644 --- a/ipset-control.lsp +++ b/ipset-control.lsp @@ -1,15 +1,18 @@ # Should load from "ipset.cfg" -(constant 'TABLE "TIMO" 'NET "192.168.104.0/24" - 'IPSET "/sbin/ipset" ) +(constant 'IPSET SITE:ipset.bin 'TABLE SITE:ipset.table 'NET SITE:control.net) -# Apply "add" or "del" on the controllable as needed, and exit +;; Return current low-leve "close" or "open" status +(define (current-status) + (if (member NET (exec (format "%s list %s" IPSET TABLE))) "close" "open")) + +;; Ensure low-level setting is "close" or "open" as given (define (control cmd reason) - (let ((a (case cmd ("open" "del") ("close" "add") (true "XXX")))) - (when (!= cmd (if (exec (format "%s list %s | grep %s" IPSET TABLE NET)) - "close" "open")) - (! (println (date-value) (format " ipset-control (%s): " reason) - (format "%s %s %s %s" IPSET a TABLE NET))))) - (exit 0)) + (when (!= cmd (current-status)) + (let ((todo (case cmd ("open" "del") ("close" "add") (true "XXX")))) + (! (println (date-value) + (format " ipset-control (%s): " reason) + (format "%s %s %s %s" IPSET todo TABLE NET))))) + ) "ipset-control.lsp"