#!/usr/bin/env python3

import re
from argparse import ArgumentParser


ZONE_LINE_RE = re.compile(r"^(?P<name>[a-z0-1.*-]+)\s+IN\s+A\s+(?P<ip>[0-9.]+)(?:[\s;].*)?$")


def get_ipv4_sort_key(ipv4):
    blocks = [int(block) for block in ipv4.split(".")]
    return "-".join(f"{block:03d}" for block in blocks)


def main():
    parser = ArgumentParser()
    parser.add_argument("zone_file", nargs="+", help="Zone file to look into")
    args = parser.parse_args()
    ips = []
    for filename in args.zone_file:
        with open(filename) as fh:
            for line in fh:
                match = ZONE_LINE_RE.match(line.strip())
                if match is None:
                    continue
                ips.append(match.group("ip"))
    ips.sort(key=get_ipv4_sort_key)
    print("\n".join(ips))


if __name__ == "__main__":
    main()
