#!/usr/bin/env python3

import dns.message
import dns.query
import dns.resolver

import sys

resolver = None # Use the default resolver. Set to an IP address otherwise.

def parent(name):
    return dns.name.Name(name[1:])
    
def get_ns(name):
    message = dns.message.make_query(name, dns.rdatatype.NS, use_edns=True,
                                     want_dnssec=False)
    response = dns.query.udp(message, resolver)
    if response.rcode() == dns.rcode.NXDOMAIN:
        return "DOES NOT EXIST"
    elif response.rcode() != dns.rcode.NOERROR:
        return "SOMETHING WENT WRONG"
    if len(response.answer) > 0:
        result = ""
        for rrset in response.answer:
            for record in rrset:
                if record.rdtype == dns.rdatatype.NS:
                    result += "%s " % record.target
        return result
    else:
        return get_ns(parent(name))

if resolver is None:
    resolver = dns.resolver.Resolver().nameservers[0]
print("Using the resolver %s" % resolver)
print()
for arg in sys.argv[1:]:
    name = dns.name.from_text(arg)
    print("%s: " % name, end="")
    print(get_ns(name))
    print()
