diff options
Diffstat (limited to 'api/netbird-nft-sets.nu')
| -rw-r--r-- | api/netbird-nft-sets.nu | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/api/netbird-nft-sets.nu b/api/netbird-nft-sets.nu deleted file mode 100644 index 2187aa6..0000000 --- a/api/netbird-nft-sets.nu +++ /dev/null @@ -1,46 +0,0 @@ -# Usage: -# ^nft --json list sets | nu --stdin api/netbird-nft-sets.nu -# open --raw test-data/nft-sets.json | nu --stdin api/netbird-nft-sets.nu - -use netbird-api.nu - -def mangle-name [prefix: string, name: string] { - $prefix + ($name - | str replace -ar '\s+' '_' - | str replace -ar '\W' '') -} - -def find-changed-sets [] { - let sets = $in # nft_sets - | rename --column { name: nft_name } - let peers = netbird-api peers list - | insert nft_name { mangle-name 'nbp_' $in.name | str downcase } - | insert new_elem { [$in.ip] } - let groups = netbird-api groups list - | where peers != null - | each { update peers { select id | join $peers id } } - | insert nft_name { mangle-name 'nbg_' $in.name } # allow uppercase - | insert new_elem { $in.peers.ip } - - let set_changes = [$peers, $groups] | flatten - | join $sets nft_name - | where { $in.new_elem != $in.elem } - return $set_changes -} - -def generate-nft-commands [] { -# nft add talbe inet <name> # ignore if table already exists -# nft destroy table inet <name> # ignore if table already removed - let set_changes = $in - for $s in $set_changes { - let path = [$s.family $s.table $s.nft_name] | str join ' ' - print $"flush set ($path)" - print $"add element ($path) { ($s.new_elem | str join ', ') }" - } -} - -def main [] { - $in | from json | get nftables | skip 1 | get set - | find-changed-sets - | generate-nft-commands -} |
