return dns.rcode.NXDOMAIN if is_authenticated(msg) and ( msg.rcode() == dns.rcode.NOERROR and not msg.answer): for rrset in msg.authority: if rrset.name != qname: continue if rrset.rdtype != dns.rdatatype.NSEC: continue for rdata in rrset.to_rdataset(): if nsec_type_set(rdata.windows) == set({'NSEC', 'RRSIG'}): return dns.rcode.NXDOMAIN return msg.rcode() return msg.rcode() if __name__ == '__main__': PROGNAME = os.path.basename(sys.argv[0]) if len(sys.argv) != 3: print("Usage: {} <qname> <qtype>".format(PROGNAME)) sys.exit(-1) QNAME, QTYPE = sys.argv[1:3] RESOLVER = get_resolver(addresses=RESOLVER_LIST) RC = rcode(QNAME, QTYPE, resolver=RESOLVER) print(dns.rcode.to_text(RC)) sys.exit(RC)
def test_unsigned_answer(self): qname = 'z.salesforce.com' qtype = 'SOA' self.assertEqual(rcode(qname, qtype, self.resolver), dns.rcode.NOERROR)
def test_normal_ent(self): qname = 'visual.force.com' qtype = 'A' self.assertEqual(rcode(qname, qtype, self.resolver), dns.rcode.NOERROR)
def test_unsigned_nodata(self): qname = 'z.salesforce.com' qtype = 'PTR' self.assertEqual(rcode(qname, qtype, self.resolver), dns.rcode.NOERROR)
def test_unsigned_nxdomain(self): qname = 'blahblah.z.salesforce.com' qtype = 'A' self.assertEqual(rcode(qname, qtype, self.resolver), dns.rcode.NXDOMAIN)
def test_blacklie_answer(self): qname = 'documentforce.com' qtype = 'SOA' self.assertEqual(rcode(qname, qtype, self.resolver), dns.rcode.NOERROR)
def test_blacklie_nxdomain(self): qname = 'blahblah.documentforce.com' qtype = 'A' self.assertEqual(rcode(qname, qtype, self.resolver), dns.rcode.NXDOMAIN)
def test_null_resolver(self): qname = 'blahblah.salesforce.com' qtype = 'A' self.assertEqual(rcode(qname, qtype), dns.rcode.NXDOMAIN)