Browse Source

Quote NAPTR 'flags', 'service' and 'regexp' values as required by RFC3403

https://www.rfc-editor.org/rfc/rfc3403#section-4.3
pull/1284/head
Leonardo Arena 4 months ago
parent
commit
4e8658ddbf
3 changed files with 10 additions and 2 deletions
  1. +4
    -0
      .changelog/464ca6c3ae0d45f3a8ba945276bf6ce2.md
  2. +5
    -1
      octodns/record/naptr.py
  3. +1
    -1
      tests/test_octodns_record_naptr.py

+ 4
- 0
.changelog/464ca6c3ae0d45f3a8ba945276bf6ce2.md View File

@ -0,0 +1,4 @@
---
type: minor
---
Quote NAPTR 'flags', 'service' and 'regexp' values as required by RFC2915

+ 5
- 1
octodns/record/naptr.py View File

@ -136,7 +136,11 @@ class NaptrValue(EqualityTupleMixin, dict):
@property
def rdata_text(self):
return f'{self.order} {self.preference} {self.flags} {self.service} {self.regexp} {self.replacement}'
# RFC 3403 requires flags, service, and regexp to be quoted character-strings
flags = self.flags or ''
service = self.service or ''
regexp = self.regexp or ''
return f'{self.order} {self.preference} "{flags}" "{service}" "{regexp}" {self.replacement}'
def template(self, params):
if (


+ 1
- 1
tests/test_octodns_record_naptr.py View File

@ -382,7 +382,7 @@ class TestRecordNaptr(TestCase):
self.assertEqual('service', a.values[0].service)
self.assertEqual('regexp', a.values[0].regexp)
self.assertEqual('replacement', a.values[0].replacement)
s = '1 2 S service regexp replacement'
s = '1 2 "S" "service" "regexp" replacement'
self.assertEqual(s, a.values[0].rdata_text)
def test_validation(self):


Loading…
Cancel
Save