From 0086c2d6d01189678348316c6c9715066ba65ba1 Mon Sep 17 00:00:00 2001 From: Veit Heller Date: Thu, 24 Sep 2026 22:15:14 +0200 Subject: [PATCH] Add canonicalization to record values --- netbox_dns/tests/record/test_validation.py | 13 +++++++++++++ netbox_dns/validators/dns_value.py | 3 +++ 2 files changed, 16 insertions(+) diff --git a/netbox_dns/tests/record/test_validation.py b/netbox_dns/tests/record/test_validation.py index 8c1dc404..aebf16f5 100644 --- a/netbox_dns/tests/record/test_validation.py +++ b/netbox_dns/tests/record/test_validation.py @@ -167,6 +167,19 @@ def test_create_record_validation_fail(self): with self.assertRaises(ValidationError): Record.objects.create(zone=zone, **record) + def test_canonicalization(self): + zone = self.zones[0] + uncanonicalized = { + "target.example.com.": { + "name": "test23", + "type": RecordTypeChoices.CNAME, + "value": "target.example.com.\nevil.example.org. 300 IN A 6.6.6.6", + }, + } + for canonical, record in uncanonicalized.items(): + r = Record.objects.create(zone=zone, **record) + self.assertEqual(canonical, r.value) + def test_name_and_cname(self): zone = self.zones[0] diff --git a/netbox_dns/validators/dns_value.py b/netbox_dns/validators/dns_value.py index 6cfe6adc..b8e7f4a5 100644 --- a/netbox_dns/validators/dns_value.py +++ b/netbox_dns/validators/dns_value.py @@ -83,6 +83,9 @@ def _split_text_value(value): ).format(value=record.value, type=record.type, error=exc) ) + if record.type not in (RecordTypeChoices.TXT, RecordTypeChoices.SPF): + record.value = rr.to_text() + skip_name_validation = record.type in get_plugin_config( "netbox_dns", "tolerate_non_rfc1035_types", default=[] )