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()}