X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=ipset-control.lsp;h=cd813840eb3fbe52300b75b1e7aa5ad2a7499a22;hb=36d9d2fd887f26b87c5d20527fcb741540a2aae1;hp=9c9bf9393d378051677d6aa34f2f0a11bb913b8c;hpb=05a9c528d8aee0373f52fa1bc72250e7f3625e76;p=rrq%2Fhourglass.git diff --git a/ipset-control.lsp b/ipset-control.lsp index 9c9bf93..cd81384 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"