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()
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
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()
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):
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():