Example #1
0
    def AXFR(self, name):
        """AXFR for name

			* name -- name to AXFR for
			
			This function is a generator. As it AXFRs it will yield you the records.

			**Example**

			Let's get a list of the tlds (gotta catch em all!):

			>>> tlds = []
			>>> for rr in resolver("f.root-servers.net").AXFR("."):
			>>>    if rr.rr_type() == "NS":
			>>>       tlds.append(rr.owner())

		"""
        #Dname seems to be unecessary on some computers, but it is on others. Avoid bugs.
        if self._ldns_resolver.axfr_start(
                ldns.ldns_dname(name),
                ldns.LDNS_RR_CLASS_IN) != ldns.LDNS_STATUS_OK:
            raise Exception("Starting AXFR failed. Error: %s" %
                            ldns.ldns_get_errorstr_by_id(status))
        pres = self._ldns_resolver.axfr_next()
        while pres:
            yield resource_record(pres)
            pres = self._ldns_resolver.axfr_next()
Example #2
0
def result2pkt(result):
	"""Extract ldns packet from ub_result.
	
	@raises DnsError: on malformed packet
	"""
	status, pkt = ldns.ldns_wire2pkt(result.packet)
	
	if status != 0:
		raise DnsError("Failed to parse DNS packet: %s" % ldns.ldns_get_errorstr_by_id(status))
	
	return pkt
Example #3
0
	def AXFR(self,name):
		"""AXFR for name

			* name -- name to AXFR for
			
			This function is a generator. As it AXFRs it will yield you the records.

			**Example**

			Let's get a list of the tlds (gotta catch em all!):

			>>> tlds = []
			>>> for rr in resolver("f.root-servers.net").AXFR("."):
			>>>    if rr.rr_type() == "NS":
			>>>       tlds.append(rr.owner())

		"""
		#Dname seems to be unecessary on some computers, but it is on others. Avoid bugs.
		if self._ldns_resolver.axfr_start(ldns.ldns_dname(name), ldns.LDNS_RR_CLASS_IN) != ldns.LDNS_STATUS_OK:
			raise Exception("Starting AXFR failed. Error: %s" % ldns.ldns_get_errorstr_by_id(status))
		pres = self._ldns_resolver.axfr_next()
		while pres:
			yield resource_record(pres)
			pres = self._ldns_resolver.axfr_next()
Example #4
0
    raise Exception("Can't retrieve server address")

print "Addr_by_name:",str(addr).replace("\n","; ")

#remove all nameservers
while resolver.pop_nameserver(): 
    pass

#insert server addr
for rr in addr.rrs():
    resolver.push_nameserver_rr(rr)

#AXFR transfer
status = resolver.axfr_start(utf2name(u"háčkyčárky.cz"), ldns.LDNS_RR_CLASS_IN)
if status != ldns.LDNS_STATUS_OK:
    raise Exception("Can't start AXFR. Error: %s" % ldns.ldns_get_errorstr_by_id(status))

#Print results
while True:
    rr = resolver.axfr_next()
    if not rr: 
        break

    rdf = rr.owner()
    if (rdf.get_type() == ldns.LDNS_RDF_TYPE_DNAME):
        print "RDF owner: type=",rdf.get_type_str(),"data=",name2utf(str(rdf))
    else:
        print "RDF owner: type=",rdf.get_type_str(),"data=",str(rdf)
    print "   RR type=", rr.get_type_str()," ttl=",rr.ttl()
    for rdf in rr.rdfs():
        if (rdf.get_type() == ldns.LDNS_RDF_TYPE_DNAME):
Example #5
0
print("Addr_by_name:", str(addr).replace("\n", "; "))

#remove all nameservers
while resolver.pop_nameserver():
    pass

#insert server addr
for rr in addr.rrs():
    resolver.push_nameserver_rr(rr)

#AXFR transfer
status = resolver.axfr_start(utf2name("háčkyčárky.cz"), ldns.LDNS_RR_CLASS_IN)
if status != ldns.LDNS_STATUS_OK:
    raise Exception("Can't start AXFR. Error: %s" %
                    ldns.ldns_get_errorstr_by_id(status))

#Print results
while True:
    rr = resolver.axfr_next()
    if not rr:
        break

    rdf = rr.owner()
    if (rdf.get_type() == ldns.LDNS_RDF_TYPE_DNAME):
        print("RDF owner: type=", rdf.get_type_str(), "data=",
              name2utf(str(rdf)))
    else:
        print("RDF owner: type=", rdf.get_type_str(), "data=", str(rdf))
    print("   RR type=", rr.get_type_str(), " ttl=", rr.ttl())
    for rdf in rr.rdfs():