1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00

Merge pull request #984 from dethmetaljeff/je/arpa-matching-fix

prepend zone_name with . to ensure it matches on address boundary
This commit is contained in:
Ross McFarland
2023-02-27 10:03:07 -08:00
committed by GitHub
2 changed files with 27 additions and 1 deletions

View File

@@ -54,7 +54,7 @@ class AutoArpa(BaseProcessor):
zone_name = zone.name zone_name = zone.name
n = len(zone_name) + 1 n = len(zone_name) + 1
for arpa, fqdns in self._records.items(): for arpa, fqdns in self._records.items():
if arpa.endswith(zone_name): if arpa.endswith(f'.{zone_name}'):
name = arpa[:-n] name = arpa[:-n]
fqdns = sorted(fqdns) fqdns = sorted(fqdns)
record = Record.new( record = Record.new(

View File

@@ -201,3 +201,29 @@ class TestAutoArpa(TestCase):
self.assertEqual('4.3.2.1.in-addr.arpa.', ptr.fqdn) self.assertEqual('4.3.2.1.in-addr.arpa.', ptr.fqdn)
self.assertEqual([record1.fqdn, record2.fqdn], ptr.values) self.assertEqual([record1.fqdn, record2.fqdn], ptr.values)
self.assertEqual(3600, ptr.ttl) self.assertEqual(3600, ptr.ttl)
def test_address_boundaries(self):
zone = Zone('unit.tests.', [])
record = Record.new(
zone, 'a', {'ttl': 32, 'type': 'A', 'value': '10.20.3.4'}
)
zone.add_record(record)
aa = AutoArpa('auto-arpa')
aa.process_source_zone(zone, [])
self.assertEqual(
{'4.3.20.10.in-addr.arpa.': {'a.unit.tests.'}}, aa._records
)
# matching zone
arpa = Zone('20.10.in-addr.arpa.', [])
aa.populate(arpa)
self.assertEqual(1, len(arpa.records))
(ptr,) = arpa.records
self.assertEqual('4.3.20.10.in-addr.arpa.', ptr.fqdn)
self.assertEqual(record.fqdn, ptr.value)
self.assertEqual(3600, ptr.ttl)
# non-matching boundary edge case
arpa = Zone('0.10.in-addr.arpa.', [])
aa.populate(arpa)
self.assertEqual(0, len(arpa.records))