mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
chg: test: Improve root zone loading into AsyncServer
Merge branch 'pspacek/test-server-root' into 'main' See merge request isc-projects/bind9!10981
This commit is contained in:
commit
f3032ecd85
1 changed files with 26 additions and 3 deletions
|
|
@ -768,13 +768,36 @@ class AsyncDnsServer(AsyncServer):
|
|||
self._zone_tree.add(zone)
|
||||
|
||||
def _load_zone(self, zone_file_path: pathlib.Path) -> dns.zone.Zone:
|
||||
origin = dns.name.from_text(zone_file_path.stem)
|
||||
logging.info("Loading zone file %s", zone_file_path)
|
||||
with open(zone_file_path, encoding="utf-8") as zone_file:
|
||||
zone = dns.zone.from_file(zone_file, origin, relativize=False)
|
||||
zone = self._load_zone_file(zone_file_path)
|
||||
self._abort_if_dname_found_unless_acknowledged(zone)
|
||||
return zone
|
||||
|
||||
def _load_zone_file(self, zone_file_path: pathlib.Path) -> dns.zone.Zone:
|
||||
try:
|
||||
zone = self._load_zone_file_with_origin(zone_file_path)
|
||||
except dns.zone.UnknownOrigin:
|
||||
zone = self._load_zone_file_without_origin(zone_file_path)
|
||||
|
||||
return zone
|
||||
|
||||
def _load_zone_file_with_origin(
|
||||
self, zone_file_path: pathlib.Path
|
||||
) -> dns.zone.Zone:
|
||||
zone = dns.zone.from_file(str(zone_file_path), origin=None, relativize=False)
|
||||
if zone.origin != dns.name.root:
|
||||
error = "only the root zone may use $ORIGIN in the zone file; "
|
||||
error += "for every other zone, its origin is determined by "
|
||||
error += "the name of the file it is loaded from"
|
||||
raise ValueError(error)
|
||||
return zone
|
||||
|
||||
def _load_zone_file_without_origin(
|
||||
self, zone_file_path: pathlib.Path
|
||||
) -> dns.zone.Zone:
|
||||
origin = dns.name.from_text(zone_file_path.stem)
|
||||
return dns.zone.from_file(str(zone_file_path), origin=origin, relativize=False)
|
||||
|
||||
def _abort_if_dname_found_unless_acknowledged(self, zone: dns.zone.Zone) -> None:
|
||||
if self._acknowledge_manual_dname_handling:
|
||||
return
|
||||
|
|
|
|||
Loading…
Reference in a new issue