#!/usr/bin/env python3
import sys
import dns.resolver

def get_system_resolver():
    server = "127.0.0.53"
    try:
        with open("/etc/resolv.conf", "r") as f:
            for line in f:
                if line.startswith("nameserver"):
                    parts = line.split()
                    if len(parts) > 1:
                        server = parts[1]
                        break
    except Exception:
        pass
    return server

def check_ns(domain):
    srv = get_system_resolver()
    print(f"Server:        {srv}")
    print(f"Address:       {srv}#53\n")
    print("Non-authoritative answer:")

    resolver = dns.resolver.Resolver()
    resolver.nameservers = ['1.1.1.1', '8.8.8.8']

    ns_hosts = []
    try:
        ans = resolver.resolve(domain, 'NS')
        ns_hosts = sorted(list(set(str(r.target).rstrip('.').lower() for r in ans)))
    except Exception:
        pass

    all_ips = []
    for t in ['A', 'AAAA']:
        try:
            ans = resolver.resolve(domain, t)
            for rdata in ans:
                all_ips.append(rdata.address)
        except Exception:
            pass

    if not ns_hosts:
        for ip in all_ips:
            print(f"Name:   {domain}")
            print(f"Address: {ip}")
        return

    for i, ip in enumerate(all_ips):
        ns_host = ns_hosts[i % len(ns_hosts)]
        print(f"Name:   {domain}")
        print(f"Address: ({ns_host}) {ip}")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("usage: ns <domain>")
        sys.exit(1)
    check_ns(sys.argv[1])
