def prepare_reverse_zone(host, ip): zone = get_reverse_zone_default(ip) result = host.run_command(["ipa", "dnszone-add", zone], raiseonerr=False) if result.returncode > 0: logger.warning("%s", result.stderr_text) return zone, result.returncode
def get_auto_reverse_zones(ip_addresses): auto_zones = [] for ip in ip_addresses: if ipautil.reverse_record_exists(ip): # PTR exist there is no reason to create reverse zone logger.info("Reverse record for IP address %s already exists", ip) continue default_reverse = get_reverse_zone_default(ip) try: dnsutil.check_zone_overlap(default_reverse) except ValueError: logger.info("Reverse zone %s for IP address %s already exists", default_reverse, ip) continue auto_zones.append((ip, default_reverse)) return auto_zones
def check_reverse_zones(ip_addresses, reverse_zones, options, unattended, search_reverse_zones=False): reverse_asked = False ret_reverse_zones = [] # check that there is IP address in every reverse zone if reverse_zones: for rz in reverse_zones: for ip in ip_addresses: if verify_reverse_zone(rz, ip): ret_reverse_zones.append(normalize_zone(rz)) break else: # no ip matching reverse zone found sys.exit("There is no IP address matching reverse zone %s." % rz) if not options.no_reverse: # check that there is reverse zone for every IP for ip in ip_addresses: if search_reverse_zones and find_reverse_zone(str(ip)): # reverse zone is already in LDAP continue for rz in ret_reverse_zones: if verify_reverse_zone(rz, ip): # reverse zone was entered by user break else: # no reverse zone for ip found if not reverse_asked: if not unattended and not reverse_zones: # user did not specify reverse_zone nor no_reverse options.no_reverse = not create_reverse() if options.no_reverse: # user decided not to create reverse zone return [] reverse_asked = True rz = get_reverse_zone_default(str(ip)) if not unattended: rz = read_reverse_zone(rz, str(ip)) ret_reverse_zones.append(rz) return ret_reverse_zones
def get_auto_reverse_zones(ip_addresses, allow_zone_overlap=False): auto_zones = [] for ip in ip_addresses: try: dnsutil.resolve_address(str(ip)) except DNSException: pass else: # PTR exist there is no reason to create reverse zone logger.info("Reverse record for IP address %s already exists", ip) continue default_reverse = get_reverse_zone_default(ip) if not allow_zone_overlap: try: dnsutil.check_zone_overlap(default_reverse) except ValueError as e: logger.info("Reverse zone %s for IP address %s already exists", default_reverse, ip) logger.debug('%s', e) continue auto_zones.append((ip, default_reverse)) return auto_zones
def get_reverse_zone(ip_address): return find_reverse_zone(ip_address) or get_reverse_zone_default(ip_address)