Manage DNS servers using Ansible #93
1 changed files with 28 additions and 0 deletions
28
filter_plugins/net_utils.py
Normal file
28
filter_plugins/net_utils.py
Normal file
|
@ -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()}
|
Loading…
Reference in a new issue