zonename = os.path.basename(filename)
zone = dns.zone.from_file(filename, zonename, relativize=False)
for name, ttl, rdata in zone.iterate_rdatas(ip_family):
- if name[:-1] == fqdn: # [:-1] removes trailing dot
+ if str(name)[:-1] == fqdn: # [:-1] removes trailing dot
return ipaddr.IPAddress(rdata.address)
check_call(command)
-def blockip_whitelist_delete_if_unused(ip):
- if ipfamily_by_ip(args.ip) == 'A':
- sync_dynamic_zones()
- if len(list(reverse_lookup(ip))) == 0:
- blockip_whitelist_delete(ip)
-
-
def main(args):
try:
if args.delete:
nsupdate_delete(args.fqdn, 'A')
nsupdate_delete(args.fqdn, 'AAAA')
else:
+ ipfamily = ipfamily_by_ip(args.ip)
+ sync_dynamic_zones()
+ old_ip = forward_lookup(args.fqdn, ipfamily)
nsupdate_delete(args.fqdn, ipfamily_by_ip(args.ip))
- blockip_whitelist_delete_if_unused(args.ip)
+ if old_ip is not None:
+ blockip_whitelist_delete(old_ip)
else:
ipfamily = ipfamily_by_ip(args.ip)
+ sync_dynamic_zones()
old_ip = forward_lookup(args.fqdn, ipfamily)
nsupdate_delete(args.fqdn, ipfamily)
- if old_ip is not None:
- blockip_whitelist_delete_if_unused(old_ip)
nsupdate_add(args.fqdn, args.ttl, args.ip)
- blockip_whitelist_add(args.ip)
+ if old_ip != args.ip:
+ if old_ip is not None:
+ blockip_whitelist_delete(old_ip)
+ blockip_whitelist_add(args.ip)
except CalledProcessError as e:
sys.exit(e.returncode)