Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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
Пример #8
0
def get_reverse_zone(ip_address):
    return find_reverse_zone(ip_address) or get_reverse_zone_default(ip_address)
Пример #9
0
def get_reverse_zone(ip_address):
    return find_reverse_zone(ip_address) or get_reverse_zone_default(ip_address)