]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Import dnspython modules explicitly in custom servers
authorŠtěpán Balážik <stepan@isc.org>
Thu, 30 Oct 2025 13:43:47 +0000 (14:43 +0100)
committerŠtěpán Balážik <stepan@isc.org>
Thu, 18 Dec 2025 12:03:14 +0000 (13:03 +0100)
Previously, the server relied on the modules being imported by the
isctest.asyncserver module. This is fragile and confuses tooling.

Clean up stray imports in the process.

16 files changed:
bin/tests/system/chain/ans3/ans.py
bin/tests/system/chain/ans4/ans.py
bin/tests/system/cookie/cookie_ans.py
bin/tests/system/dispatch/ans3/ans.py
bin/tests/system/dnssec/ans10/ans.py
bin/tests/system/fetchlimit/ans4/ans.py
bin/tests/system/forward/ans11/ans.py
bin/tests/system/forward/ans6/ans.py
bin/tests/system/isctest/asyncserver.py
bin/tests/system/qmin/ans2/ans.py
bin/tests/system/qmin/ans4/ans.py
bin/tests/system/qmin/qmin_ans.py
bin/tests/system/rpzrecurse/ans5/ans.py
bin/tests/system/statistics/ans4/ans.py
bin/tests/system/xfer/ans9/ans.py
bin/tests/system/zero/ans5/ans.py

index 3309ba286b98fe8216fb1b26dd0eaeaac969e247..299f04235441f4cf7d20062313854ec604c4d3e0 100755 (executable)
@@ -14,6 +14,7 @@ information regarding copyright ownership.
 from typing import AsyncGenerator
 
 import dns.name
+import dns.rcode
 import dns.rdataclass
 import dns.rdatatype
 import dns.rrset
index 618b36bdf534d5d6f912207ae57363927c4d5d6a..f175a88c1e0ba48c7637829cf7fd9dd18c1c38fe 100755 (executable)
@@ -19,8 +19,8 @@ import abc
 import logging
 import re
 
+import dns.name
 import dns.rcode
-import dns.rdata
 import dns.rdataclass
 import dns.rdatatype
 import dns.rrset
index 102832dd3fedd2b5ee11db1f0af7288a170bfdb6..d66511f38f1762080c68d3294e17e2ef5034537a 100644 (file)
 
 from typing import AsyncGenerator
 
-import dns
+import dns.edns
+import dns.message
+import dns.name
+import dns.rdatatype
+import dns.rrset
 import dns.tsigkeyring
 
 from isctest.asyncserver import (
@@ -68,7 +72,7 @@ def _tld(qctx: QueryContext) -> dns.name.Name:
 
 def _soa(qctx: QueryContext) -> dns.rrset.RRset:
     return dns.rrset.from_text(
-        _tld(qctx), 2, dns.rdataclass.IN, dns.rdatatype.SOA, ". . 0 0 0 0 2"
+        _tld(qctx), 2, qctx.qclass, dns.rdatatype.SOA, ". . 0 0 0 0 2"
     )
 
 
@@ -80,21 +84,19 @@ def _ns(qctx: QueryContext) -> dns.rrset.RRset:
     return dns.rrset.from_text(
         qctx.qname,
         1,
-        dns.rdataclass.IN,
+        qctx.qclass,
         dns.rdatatype.NS,
         _ns_name(qctx).to_text(),
     )
 
 
 def _legit_a(qctx: QueryContext) -> dns.rrset.RRset:
-    return dns.rrset.from_text(
-        qctx.qname, 1, dns.rdataclass.IN, dns.rdatatype.A, "10.53.0.9"
-    )
+    return dns.rrset.from_text(qctx.qname, 1, qctx.qclass, dns.rdatatype.A, "10.53.0.9")
 
 
 def _spoofed_a(qctx: QueryContext) -> dns.rrset.RRset:
     return dns.rrset.from_text(
-        qctx.qname, 1, dns.rdataclass.IN, dns.rdatatype.A, "10.53.0.10"
+        qctx.qname, 1, qctx.qclass, dns.rdatatype.A, "10.53.0.10"
     )
 
 
index 774f9a5414d514f0a2d94b4b1e5788ec5a65a7d1..97b1f2cf1fb6ec4354ff53e6320e9980919b9fb7 100644 (file)
@@ -11,7 +11,8 @@
 
 from typing import AsyncGenerator
 
-import dns
+import dns.flags
+import dns.rcode
 
 from isctest.asyncserver import (
     AsyncDnsServer,
index 24a4a0ea0a91bc09bff5a2d977e15477739745b5..f69d5ebe1489279f5aaab099c3e8f3894e9fac2d 100644 (file)
@@ -11,7 +11,8 @@
 
 from typing import AsyncGenerator
 
-import dns
+import dns.rdatatype
+import dns.rrset
 
 from isctest.asyncserver import (
     AsyncDnsServer,
@@ -33,7 +34,7 @@ class AddRrsigToAHandler(ResponseHandler):
             "gB+eISXAhSPZU2i/II0W9ZUhC2SCIrb94mlNvP5092WAeXxqN/vG43/1nmDly2Qs7y5VCjSMOGn85bnaMoAc7w=="
         )
         rrsig_rrset = dns.rrset.from_text(
-            qctx.qname, 1, dns.rdataclass.IN, dns.rdatatype.RRSIG, rrsig
+            qctx.qname, 1, qctx.qclass, dns.rdatatype.RRSIG, rrsig
         )
         qctx.response.answer.append(rrsig_rrset)
         yield DnsResponseSend(qctx.response)
@@ -48,7 +49,7 @@ class AddNsecToTxtHandler(ResponseHandler):
     ) -> AsyncGenerator[DnsResponseSend, None]:
         nsec = f"{qctx.qname.to_text()} A NS SOA RRSIG NSEC"
         nsec_rrset = dns.rrset.from_text(
-            qctx.qname, 1, dns.rdataclass.IN, dns.rdatatype.NSEC, nsec
+            qctx.qname, 1, qctx.qclass, dns.rdatatype.NSEC, nsec
         )
         qctx.response.authority.append(nsec_rrset)
         yield DnsResponseSend(qctx.response)
index 9797735a82c9ec44ef936d4f8f64a56a33db98d2..cd7602366b6da177c5b31ade8d102481f85dafdc 100644 (file)
@@ -13,7 +13,9 @@ information regarding copyright ownership.
 
 from typing import AsyncGenerator
 
-import dns
+import dns.rcode
+import dns.rdatatype
+import dns.rrset
 
 from isctest.asyncserver import (
     ControllableAsyncDnsServer,
index 0b4ec5682e194c376da0c5a9cda38f95b5600c20..b5b590aabf4fbafef5840624225678bb687b6837 100644 (file)
@@ -14,6 +14,7 @@ information regarding copyright ownership.
 from typing import AsyncGenerator
 
 import dns.rdatatype
+import dns.rrset
 
 from isctest.asyncserver import (
     ControllableAsyncDnsServer,
index ac1db7ed1e5ad266711ac137f1a544a9340060e9..fdcbe7d392d0a7a46ab301e79b8ce2abe7c62d57 100644 (file)
@@ -13,7 +13,10 @@ information regarding copyright ownership.
 
 from typing import AsyncGenerator
 
-import dns
+import dns.name
+import dns.rcode
+import dns.rdatatype
+import dns.rrset
 
 from isctest.asyncserver import (
     ControllableAsyncDnsServer,
index ffe83ba61cb050d16772130c49f2b12214e4e86a..cd7d7027c7e474f7b9ea91d7ab1b7c8461d738bc 100644 (file)
@@ -38,12 +38,15 @@ import signal
 import struct
 import sys
 
+import dns.exception
 import dns.flags
 import dns.message
 import dns.name
 import dns.node
 import dns.rcode
+import dns.rdata
 import dns.rdataclass
+import dns.rdataset
 import dns.rdatatype
 import dns.rrset
 import dns.tsig
index 673b8ff37ad6f61d7c5f090110d4b19c01fd1328..5625a611fb0350524f2323f4238ac49bbd09c0dc 100644 (file)
@@ -16,8 +16,8 @@ from typing import AsyncGenerator
 import dns.message
 import dns.name
 import dns.rcode
-import dns.rdataclass
 import dns.rdatatype
+import dns.rrset
 
 from isctest.asyncserver import (
     AsyncDnsServer,
@@ -63,12 +63,8 @@ def send_delegation(
     ADDITIONAL section.
     """
     ns_name = "ns." + zone_cut.to_text()
-    ns_rrset = dns.rrset.from_text(
-        zone_cut, 2, dns.rdataclass.IN, dns.rdatatype.NS, ns_name
-    )
-    a_rrset = dns.rrset.from_text(
-        ns_name, 2, dns.rdataclass.IN, dns.rdatatype.A, target_addr
-    )
+    ns_rrset = dns.rrset.from_text(zone_cut, 2, qctx.qclass, dns.rdatatype.NS, ns_name)
+    a_rrset = dns.rrset.from_text(ns_name, 2, qctx.qclass, dns.rdatatype.A, target_addr)
 
     response = dns.message.make_response(qctx.query)
     response.set_rcode(dns.rcode.NOERROR)
index 22334372beff346c846ecb26c2e603bbb654cfa0..74b9d9fa80701da330a9982a729993c2bb60c83e 100644 (file)
@@ -14,6 +14,7 @@ information regarding copyright ownership.
 from typing import AsyncGenerator
 
 import dns.rcode
+import dns.rdatatype
 
 from isctest.asyncserver import (
     AsyncDnsServer,
index c610eb57263a3fb330bdf83a9dd2cff0a6456bbd..b78e723ecba07331ecbc3b2fb9633e4b821195bf 100644 (file)
@@ -16,7 +16,6 @@ from typing import AsyncGenerator
 import abc
 
 import dns.rcode
-import dns.rdataclass
 import dns.rdatatype
 
 from isctest.asyncserver import (
index 85acf15af5de8372e6adf646cfe29c6807a97830..3132fca0918d7ed4442684004545d118c17546e2 100644 (file)
@@ -13,7 +13,9 @@ information regarding copyright ownership.
 
 from typing import AsyncGenerator
 
-import dns
+import dns.rcode
+import dns.rdatatype
+import dns.rrset
 
 from isctest.asyncserver import (
     AsyncDnsServer,
@@ -32,7 +34,7 @@ class ReplyA(ResponseHandler):
         self, qctx: QueryContext
     ) -> AsyncGenerator[DnsResponseSend, None]:
         a_rrset = dns.rrset.from_text(
-            qctx.qname, 300, dns.rdataclass.IN, dns.rdatatype.A, "10.53.0.5"
+            qctx.qname, 300, qctx.qclass, dns.rdatatype.A, "10.53.0.5"
         )
         qctx.response.answer.append(a_rrset)
         yield DnsResponseSend(qctx.response)
index f353fc6e957966ff245c71ba0ab1ed0450620e27..a5aa118ade15028af955e1000391e61f175d11f5 100644 (file)
@@ -13,7 +13,9 @@ information regarding copyright ownership.
 
 from typing import AsyncGenerator
 
-import dns
+import dns.rcode
+import dns.rdatatype
+import dns.rrset
 
 from isctest.asyncserver import (
     AsyncDnsServer,
index f1a4bf5437228e72ef73537aa2d975925905f477..a07a214a3beee510162a5300cd7991afed5ac205 100644 (file)
@@ -14,7 +14,6 @@ information regarding copyright ownership.
 from typing import AsyncGenerator
 
 import dns.message
-import dns.rdataclass
 import dns.rdatatype
 import dns.rrset
 
@@ -52,7 +51,7 @@ class AXFRServer(DomainHandler):
         soa_rrset = dns.rrset.from_text(
             qctx.qname,
             300,
-            dns.rdataclass.IN,
+            qctx.qclass,
             dns.rdatatype.SOA,
             f". . {self.soa_version} 0 0 0 0",
         )
@@ -79,7 +78,7 @@ class AXFRServer(DomainHandler):
         # will already have been done with the mandatory stuff by then.
         ns_message = dns.message.make_response(qctx.query)
         ns_rrset = dns.rrset.from_text(
-            qctx.qname, 300, dns.rdataclass.IN, dns.rdatatype.NS, "."
+            qctx.qname, 300, qctx.qclass, dns.rdatatype.NS, "."
         )
         ns_message.answer.append(ns_rrset)
 
@@ -90,7 +89,7 @@ class AXFRServer(DomainHandler):
         txt_rrset = dns.rrset.from_text(
             qctx.qname,
             300,
-            dns.rdataclass.IN,
+            qctx.qclass,
             dns.rdatatype.TXT,
             "foo bar",
         )
index e3438bfd73f519d3d42ac4f0ed2b0b6804b2b7a3..a7f63913cf8985cad408b2c4dfe0c7e16f5132ef 100644 (file)
@@ -14,10 +14,7 @@ information regarding copyright ownership.
 import ipaddress
 from typing import AsyncGenerator
 
-import dns.flags
-import dns.message
-import dns.rdata
-import dns.rdataclass
+import dns.rcode
 import dns.rdatatype
 import dns.rrset