From: Štěpán Balážik Date: Thu, 30 Oct 2025 13:43:47 +0000 (+0100) Subject: Import dnspython modules explicitly in custom servers X-Git-Tag: v9.21.17~25^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5761de5531b4b5349b06baa4f3799bae3e684890;p=thirdparty%2Fbind9.git Import dnspython modules explicitly in custom servers 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. --- diff --git a/bin/tests/system/chain/ans3/ans.py b/bin/tests/system/chain/ans3/ans.py index 3309ba286b9..299f0423544 100755 --- a/bin/tests/system/chain/ans3/ans.py +++ b/bin/tests/system/chain/ans3/ans.py @@ -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 diff --git a/bin/tests/system/chain/ans4/ans.py b/bin/tests/system/chain/ans4/ans.py index 618b36bdf53..f175a88c1e0 100755 --- a/bin/tests/system/chain/ans4/ans.py +++ b/bin/tests/system/chain/ans4/ans.py @@ -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 diff --git a/bin/tests/system/cookie/cookie_ans.py b/bin/tests/system/cookie/cookie_ans.py index 102832dd3fe..d66511f38f1 100644 --- a/bin/tests/system/cookie/cookie_ans.py +++ b/bin/tests/system/cookie/cookie_ans.py @@ -11,7 +11,11 @@ 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" ) diff --git a/bin/tests/system/dispatch/ans3/ans.py b/bin/tests/system/dispatch/ans3/ans.py index 774f9a5414d..97b1f2cf1fb 100644 --- a/bin/tests/system/dispatch/ans3/ans.py +++ b/bin/tests/system/dispatch/ans3/ans.py @@ -11,7 +11,8 @@ from typing import AsyncGenerator -import dns +import dns.flags +import dns.rcode from isctest.asyncserver import ( AsyncDnsServer, diff --git a/bin/tests/system/dnssec/ans10/ans.py b/bin/tests/system/dnssec/ans10/ans.py index 24a4a0ea0a9..f69d5ebe148 100644 --- a/bin/tests/system/dnssec/ans10/ans.py +++ b/bin/tests/system/dnssec/ans10/ans.py @@ -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) diff --git a/bin/tests/system/fetchlimit/ans4/ans.py b/bin/tests/system/fetchlimit/ans4/ans.py index 9797735a82c..cd7602366b6 100644 --- a/bin/tests/system/fetchlimit/ans4/ans.py +++ b/bin/tests/system/fetchlimit/ans4/ans.py @@ -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, diff --git a/bin/tests/system/forward/ans11/ans.py b/bin/tests/system/forward/ans11/ans.py index 0b4ec5682e1..b5b590aabf4 100644 --- a/bin/tests/system/forward/ans11/ans.py +++ b/bin/tests/system/forward/ans11/ans.py @@ -14,6 +14,7 @@ information regarding copyright ownership. from typing import AsyncGenerator import dns.rdatatype +import dns.rrset from isctest.asyncserver import ( ControllableAsyncDnsServer, diff --git a/bin/tests/system/forward/ans6/ans.py b/bin/tests/system/forward/ans6/ans.py index ac1db7ed1e5..fdcbe7d392d 100644 --- a/bin/tests/system/forward/ans6/ans.py +++ b/bin/tests/system/forward/ans6/ans.py @@ -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, diff --git a/bin/tests/system/isctest/asyncserver.py b/bin/tests/system/isctest/asyncserver.py index ffe83ba61cb..cd7d7027c7e 100644 --- a/bin/tests/system/isctest/asyncserver.py +++ b/bin/tests/system/isctest/asyncserver.py @@ -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 diff --git a/bin/tests/system/qmin/ans2/ans.py b/bin/tests/system/qmin/ans2/ans.py index 673b8ff37ad..5625a611fb0 100644 --- a/bin/tests/system/qmin/ans2/ans.py +++ b/bin/tests/system/qmin/ans2/ans.py @@ -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) diff --git a/bin/tests/system/qmin/ans4/ans.py b/bin/tests/system/qmin/ans4/ans.py index 22334372bef..74b9d9fa807 100644 --- a/bin/tests/system/qmin/ans4/ans.py +++ b/bin/tests/system/qmin/ans4/ans.py @@ -14,6 +14,7 @@ information regarding copyright ownership. from typing import AsyncGenerator import dns.rcode +import dns.rdatatype from isctest.asyncserver import ( AsyncDnsServer, diff --git a/bin/tests/system/qmin/qmin_ans.py b/bin/tests/system/qmin/qmin_ans.py index c610eb57263..b78e723ecba 100644 --- a/bin/tests/system/qmin/qmin_ans.py +++ b/bin/tests/system/qmin/qmin_ans.py @@ -16,7 +16,6 @@ from typing import AsyncGenerator import abc import dns.rcode -import dns.rdataclass import dns.rdatatype from isctest.asyncserver import ( diff --git a/bin/tests/system/rpzrecurse/ans5/ans.py b/bin/tests/system/rpzrecurse/ans5/ans.py index 85acf15af5d..3132fca0918 100644 --- a/bin/tests/system/rpzrecurse/ans5/ans.py +++ b/bin/tests/system/rpzrecurse/ans5/ans.py @@ -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) diff --git a/bin/tests/system/statistics/ans4/ans.py b/bin/tests/system/statistics/ans4/ans.py index f353fc6e957..a5aa118ade1 100644 --- a/bin/tests/system/statistics/ans4/ans.py +++ b/bin/tests/system/statistics/ans4/ans.py @@ -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, diff --git a/bin/tests/system/xfer/ans9/ans.py b/bin/tests/system/xfer/ans9/ans.py index f1a4bf54372..a07a214a3be 100644 --- a/bin/tests/system/xfer/ans9/ans.py +++ b/bin/tests/system/xfer/ans9/ans.py @@ -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", ) diff --git a/bin/tests/system/zero/ans5/ans.py b/bin/tests/system/zero/ans5/ans.py index e3438bfd73f..a7f63913cf8 100644 --- a/bin/tests/system/zero/ans5/ans.py +++ b/bin/tests/system/zero/ans5/ans.py @@ -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