diff --git a/filter_plugins/net_utils.py b/filter_plugins/net_utils.py new file mode 100644 index 0000000..2fd4560 --- /dev/null +++ b/filter_plugins/net_utils.py @@ -0,0 +1,28 @@ +import ipaddress + +import dns.name + + +class FilterModule: + def filters(self): + return { + "add_origin": add_origin, + "add_origin_keys": add_origin_keys, + "ip_filter": ip_filter, + } + + +def ip_filter(addresses, networks): + if isinstance(addresses, dict): + return {k: ip_filter(v, networks) for k, v in addresses.items()} + ip_networks = [ipaddress.ip_network(n) for n in networks] + ip_addresses = [ipaddress.ip_address(a) for a in addresses] + return [str(a) for a in ip_addresses if any(a in n for n in ip_networks)] + + +def add_origin(name, origin="."): + return dns.name.from_text(name, dns.name.from_text(origin)).to_text() + + +def add_origin_keys(dct, origin="."): + return {add_origin(k, origin): v for k, v in dct.items()}