]> git.openstreetmap.org Git - chef.git/commitdiff
networking: ensure nftables script checks input
authorGrant Slater <github@firefishy.com>
Wed, 20 Mar 2024 10:32:54 +0000 (10:32 +0000)
committerGrant Slater <github@firefishy.com>
Wed, 20 Mar 2024 10:35:28 +0000 (10:35 +0000)
Ensure the nftables script does not prematurely exit on any invalid input.
eg: If unblocking a set of IPs skip any not currently blocked instead of premature exit.

Signed-off-by: Grant Slater <github@firefishy.com>
cookbooks/networking/templates/default/nftables.erb

index 7484877d562eeb057eac2084917fde220b145fb5..363e846565253191c03f50aa160cc9d02192e74a 100644 (file)
@@ -24,8 +24,8 @@ block() {
   for address in "$@"
   do
     case "$address" in
-      *.*) /usr/sbin/nft add element inet chef-filter ip-blocklist "{ $address }";;
-      *:*) /usr/sbin/nft add element inet chef-filter ip6-blocklist "{ $address }";;
+      *.*) /usr/sbin/nft --check add element inet chef-filter ip-blocklist "{ $address }" && /usr/sbin/nft add element inet chef-filter ip-blocklist "{ $address }" ;;
+      *:*) /usr/sbin/nft --check add element inet chef-filter ip6-blocklist "{ $address }" && /usr/sbin/nft add element inet chef-filter ip6-blocklist "{ $address }" ;;
     esac
   done
 }
@@ -34,15 +34,15 @@ unblock() {
   for address in "$@"
   do
     case "$address" in
-      *.*) /usr/sbin/nft delete element inet chef-filter ip-blocklist "{ $address }";;
-      *:*) /usr/sbin/nft delete element inet chef-filter ip6-blocklist "{ $address }";;
+      *.*) /usr/sbin/nft --check delete element inet chef-filter ip-blocklist "{ $address }" && /usr/sbin/nft delete element inet chef-filter ip-blocklist "{ $address }" ;;
+      *:*) /usr/sbin/nft --check delete element inet chef-filter ip6-blocklist "{ $address }" && /usr/sbin/nft delete element inet chef-filter ip6-blocklist "{ $address }" ;;
     esac
   done
 }
 
 flush() {
-  /usr/sbin/nft flush set inet chef-filter ip-blocklist
-  /usr/sbin/nft flush set inet chef-filter ip6-blocklist
+  /usr/sbin/nft --check flush set inet chef-filter ip-blocklist && /usr/sbin/nft flush set inet chef-filter ip-blocklist
+  /usr/sbin/nft --check flush set inet chef-filter ip6-blocklist && /usr/sbin/nft flush set inet chef-filter ip6-blocklist
 }
 
 command=$1