Correctly handle RRSIG records, converting numeric type codes into their textual equivalents
This commit is contained in:
@@ -143,22 +143,21 @@ def export_all_zones(trigger_path: str = "filesystem-change") -> list[Path]:
|
||||
return written_files
|
||||
|
||||
|
||||
def replace_type_codes(content):
|
||||
pattern = re.compile(r'(RRSIG\s+)(\d+)(\s+)')
|
||||
|
||||
def repl(match):
|
||||
num = int(match.group(2))
|
||||
try:
|
||||
text_type = dns.rdatatype.to_text(dns.rdatatype.RdataType(num))
|
||||
return f"{match.group(1)}{text_type}{match.group(3)}"
|
||||
except Exception as e:
|
||||
logging.warning(e)
|
||||
return match.group(0)
|
||||
|
||||
return pattern.sub(repl, content)
|
||||
|
||||
|
||||
def validate_zone(zone_name, content) -> bool:
|
||||
def replace_type_codes(content):
|
||||
pattern = re.compile(r'(RRSIG\s+)(\d+)(\s+)')
|
||||
|
||||
def repl(match):
|
||||
num = int(match.group(2))
|
||||
try:
|
||||
text_type = dns.rdatatype.to_text(dns.rdatatype.RdataType(num))
|
||||
return f"{match.group(1)}{text_type}{match.group(3)}"
|
||||
except Exception as e:
|
||||
logging.warning(e)
|
||||
return match.group(0)
|
||||
|
||||
return pattern.sub(repl, content)
|
||||
|
||||
try:
|
||||
dns.zone.from_text(replace_type_codes(content), zone_name + '.', relativize=False)
|
||||
logging.info(f"Zone {zone_name} parsed successfully")
|
||||
|
||||
Reference in New Issue
Block a user