mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
DRY up tinydns ttl finding logic
This commit is contained in:
@@ -37,6 +37,16 @@ class TinyDnsBaseSource(BaseSource):
|
||||
# All record types, including those registered by 3rd party modules
|
||||
return set(Record.registered_types().keys())
|
||||
|
||||
def _ttl_for(self, lines, index):
|
||||
# see if we can find a ttl on any of the lines, first one wins
|
||||
for line in lines:
|
||||
try:
|
||||
return int(line[index])
|
||||
except IndexError:
|
||||
pass
|
||||
# and if we don't use the default
|
||||
return self.default_ttl
|
||||
|
||||
def _records_for_at(self, zone, name, lines, arpa=False):
|
||||
# @fqdn:ip:x:dist:ttl:timestamp:lo
|
||||
# MX (and optional A)
|
||||
@@ -49,14 +59,7 @@ class TinyDnsBaseSource(BaseSource):
|
||||
# if name doesn't live under our zone there's nothing for us to do
|
||||
return
|
||||
|
||||
# see if we can find a ttl on any of the lines, first one wins
|
||||
ttl = self.default_ttl
|
||||
for line in lines:
|
||||
try:
|
||||
ttl = int(line[4])
|
||||
break
|
||||
except IndexError:
|
||||
pass
|
||||
ttl = self._ttl_for(lines, 4)
|
||||
|
||||
values = []
|
||||
for line in lines:
|
||||
@@ -99,14 +102,7 @@ class TinyDnsBaseSource(BaseSource):
|
||||
if value[-1] != '.':
|
||||
value = f'{value}.'
|
||||
|
||||
# see if we can find a ttl on any of the lines, first one wins
|
||||
ttl = self.default_ttl
|
||||
for line in lines:
|
||||
try:
|
||||
ttl = int(line[2])
|
||||
break
|
||||
except IndexError:
|
||||
pass
|
||||
ttl = self._ttl_for(lines, 2)
|
||||
|
||||
yield 'CNAME', name, ttl, [value]
|
||||
|
||||
@@ -141,14 +137,7 @@ class TinyDnsBaseSource(BaseSource):
|
||||
value = f'{value}.'
|
||||
names[name].append(value)
|
||||
|
||||
# see if we can find a ttl on any of the lines, first one wins
|
||||
ttl = self.default_ttl
|
||||
for line in lines:
|
||||
try:
|
||||
ttl = int(line[2])
|
||||
break
|
||||
except IndexError:
|
||||
pass
|
||||
ttl = self._ttl_for(lines, 2)
|
||||
|
||||
for name, values in names.items():
|
||||
if zone.owns('PTR', name):
|
||||
@@ -174,14 +163,7 @@ class TinyDnsBaseSource(BaseSource):
|
||||
# if name doesn't live under our zone there's nothing for us to do
|
||||
return
|
||||
|
||||
# see if we can find a ttl on any of the lines, first one wins
|
||||
ttl = self.default_ttl
|
||||
for line in lines:
|
||||
try:
|
||||
ttl = int(line[3])
|
||||
break
|
||||
except IndexError:
|
||||
pass
|
||||
ttl = self._ttl_for(lines, 3)
|
||||
|
||||
values = []
|
||||
for line in lines:
|
||||
@@ -223,14 +205,7 @@ class TinyDnsBaseSource(BaseSource):
|
||||
# we didn't find any value ips so nothing to do
|
||||
return []
|
||||
|
||||
# see if we can find a ttl on any of the lines, first one wins
|
||||
ttl = self.default_ttl
|
||||
for line in lines:
|
||||
try:
|
||||
ttl = int(line[2])
|
||||
break
|
||||
except IndexError:
|
||||
pass
|
||||
ttl = self._ttl_for(lines, 2)
|
||||
|
||||
yield 'A', name, ttl, ips
|
||||
|
||||
@@ -252,14 +227,7 @@ class TinyDnsBaseSource(BaseSource):
|
||||
for l in lines
|
||||
]
|
||||
|
||||
# see if we can find a ttl on any of the lines, first one wins
|
||||
ttl = self.default_ttl
|
||||
for line in lines:
|
||||
try:
|
||||
ttl = int(line[2])
|
||||
break
|
||||
except IndexError:
|
||||
pass
|
||||
ttl = self._ttl_for(lines, 2)
|
||||
|
||||
yield 'TXT', name, ttl, values
|
||||
|
||||
@@ -283,14 +251,7 @@ class TinyDnsBaseSource(BaseSource):
|
||||
# the address correct.
|
||||
ips.append(u':'.join(textwrap.wrap(line[1], 4)))
|
||||
|
||||
# see if we can find a ttl on any of the lines, first one wins
|
||||
ttl = self.default_ttl
|
||||
for line in lines:
|
||||
try:
|
||||
ttl = int(line[2])
|
||||
break
|
||||
except IndexError:
|
||||
pass
|
||||
ttl = self._ttl_for(lines, 2)
|
||||
|
||||
yield 'AAAA', name, ttl, ips
|
||||
|
||||
@@ -306,14 +267,7 @@ class TinyDnsBaseSource(BaseSource):
|
||||
# if name doesn't live under our zone there's nothing for us to do
|
||||
return
|
||||
|
||||
# see if we can find a ttl on any of the lines, first one wins
|
||||
ttl = self.default_ttl
|
||||
for line in lines:
|
||||
try:
|
||||
ttl = int(line[6])
|
||||
break
|
||||
except IndexError:
|
||||
pass
|
||||
ttl = self._ttl_for(lines, 6)
|
||||
|
||||
values = []
|
||||
for line in lines:
|
||||
@@ -383,14 +337,7 @@ class TinyDnsBaseSource(BaseSource):
|
||||
)
|
||||
continue
|
||||
|
||||
# see if we can find a ttl on any of the lines, first one wins
|
||||
ttl = self.default_ttl
|
||||
for line in lines:
|
||||
try:
|
||||
ttl = int(line[3])
|
||||
break
|
||||
except IndexError:
|
||||
pass
|
||||
ttl = self._ttl_for(lines, 3)
|
||||
|
||||
rdatas = [l[2] for l in lines]
|
||||
yield _type, name, ttl, _class.parse_rdata_texts(rdatas)
|
||||
|
||||
Reference in New Issue
Block a user