Compare commits
No commits in common. "a8ecfab93096cd3201efcb06a65bc86a2444611a" and "6b06cada38751648b9365fd27b850aa2b6d250a8" have entirely different histories.
a8ecfab930
...
6b06cada38
3 changed files with 8 additions and 140 deletions
|
@ -91,23 +91,6 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
||||||
|
|
||||||
return absolute_value
|
return absolute_value
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _fix_semicolon(value: str, escape: bool) -> str:
|
|
||||||
"""escape and un-escape semicolons in record values for netbox/octodns
|
|
||||||
|
|
||||||
@param value: the record value
|
|
||||||
@param escape: if set to true, all semicolons get escaped with a backslash.
|
|
||||||
if false it un-escapes all semicolons.
|
|
||||||
|
|
||||||
@return: the modified record value
|
|
||||||
"""
|
|
||||||
if escape:
|
|
||||||
value = re.sub(r"\\*;", "\\;", value)
|
|
||||||
else:
|
|
||||||
value = re.sub(r"\\*;", ";", value)
|
|
||||||
|
|
||||||
return value
|
|
||||||
|
|
||||||
def _get_nb_view(self, view: str | None | Literal[False]) -> dict[str, int | str]:
|
def _get_nb_view(self, view: str | None | Literal[False]) -> dict[str, int | str]:
|
||||||
"""get the correct netbox view when requested
|
"""get the correct netbox view when requested
|
||||||
|
|
||||||
|
@ -213,7 +196,7 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
||||||
}
|
}
|
||||||
|
|
||||||
case "SPF" | "TXT":
|
case "SPF" | "TXT":
|
||||||
value = self._fix_semicolon(rcd_value, escape=True)
|
value = re.sub(r"\\*;", "\\;", rcd_value)
|
||||||
|
|
||||||
case "SRV":
|
case "SRV":
|
||||||
value = {
|
value = {
|
||||||
|
@ -253,8 +236,8 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
||||||
zone_id=nb_zone.id, status="active"
|
zone_id=nb_zone.id, status="active"
|
||||||
)
|
)
|
||||||
for nb_record in nb_records:
|
for nb_record in nb_records:
|
||||||
rcd_name: str = "" if nb_record.name == "@" else nb_record.name
|
rcd_name: str = nb_record.name if nb_record.name != "@" else ""
|
||||||
rcd_value: str = nb_record.zone.name if nb_record.value == "@" else nb_record.value
|
rcd_value: str = nb_record.value if nb_record.value != "@" else nb_record.zone.name
|
||||||
rcd_type: str = nb_record.type
|
rcd_type: str = nb_record.type
|
||||||
rcd_ttl: int = nb_record.ttl or nb_zone.default_ttl
|
rcd_ttl: int = nb_record.ttl or nb_zone.default_ttl
|
||||||
if nb_record.type == "NS":
|
if nb_record.type == "NS":
|
||||||
|
@ -266,10 +249,11 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
||||||
"ttl": rcd_ttl,
|
"ttl": rcd_ttl,
|
||||||
"values": [],
|
"values": [],
|
||||||
}
|
}
|
||||||
self.log.debug(f"working on record={rcd_data} -> {rcd_value}")
|
|
||||||
|
self.log.debug(f"record data={rcd_data}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
rcd_rdata = self._format_rdata(rcd_type, rcd_value)
|
rcd_rdata = self._format_rdata(nb_record, rcd_value)
|
||||||
except NotImplementedError:
|
except NotImplementedError:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -278,8 +262,6 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
||||||
|
|
||||||
records[(rcd_name, rcd_type)]["values"].append(rcd_rdata)
|
records[(rcd_name, rcd_type)]["values"].append(rcd_rdata)
|
||||||
|
|
||||||
self.log.debug(f"record data={records[(rcd_name, rcd_type)]}")
|
|
||||||
|
|
||||||
return list(records.values())
|
return list(records.values())
|
||||||
|
|
||||||
def populate(
|
def populate(
|
||||||
|
@ -371,7 +353,7 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
||||||
name=rcd_name,
|
name=rcd_name,
|
||||||
type=change.new._type,
|
type=change.new._type,
|
||||||
ttl=change.new.ttl,
|
ttl=change.new.ttl,
|
||||||
value=self._fix_semicolon(record, escape=False),
|
value=re.sub(r"\\*;", ";", record),
|
||||||
disable_ptr=self.disable_ptr,
|
disable_ptr=self.disable_ptr,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -431,7 +413,7 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
||||||
name=rcd_name,
|
name=rcd_name,
|
||||||
type=change.new._type,
|
type=change.new._type,
|
||||||
ttl=change.new.ttl,
|
ttl=change.new.ttl,
|
||||||
value=self._fix_semicolon(record, escape=False),
|
value=re.sub(r"\\*;", ";", record),
|
||||||
disable_ptr=self.disable_ptr,
|
disable_ptr=self.disable_ptr,
|
||||||
)
|
)
|
||||||
self.log.debug(f"ADD {nb_record.type} {nb_record.name} {nb_record.value}")
|
self.log.debug(f"ADD {nb_record.type} {nb_record.name} {nb_record.value}")
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
from octodns_netbox_dns import NetBoxDNSProvider
|
|
||||||
|
|
||||||
|
|
||||||
DEFAULT_CONFIG = {
|
|
||||||
"id": 1,
|
|
||||||
"url": "https://localhost:8000",
|
|
||||||
"token": "",
|
|
||||||
"view": False,
|
|
||||||
"replace_duplicates": False,
|
|
||||||
"make_absolute": True,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def test_escape1():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_value = r"v=TLSRPTv1\\; rua=mailto:tlsrpt@example.com"
|
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=True)
|
|
||||||
|
|
||||||
assert value == r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
|
||||||
|
|
||||||
|
|
||||||
def test_escape2():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_value = r"v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
|
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=True)
|
|
||||||
|
|
||||||
assert value == r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
|
||||||
|
|
||||||
|
|
||||||
def test_escape3():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_value = r"t=y\;o=~\;"
|
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=True)
|
|
||||||
|
|
||||||
assert value == r"t=y\;o=~\;"
|
|
||||||
|
|
||||||
|
|
||||||
def test_escape4():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_value = r"t=y;o=~;"
|
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=True)
|
|
||||||
|
|
||||||
assert value == r"t=y\;o=~\;"
|
|
||||||
|
|
||||||
|
|
||||||
def test_unescape1():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_value = r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=False)
|
|
||||||
|
|
||||||
assert value == r"v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
|
|
||||||
|
|
||||||
|
|
||||||
def test_unescape2():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_value = r"v=TLSRPTv1\\; rua=mailto:tlsrpt@example.com"
|
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=False)
|
|
||||||
|
|
||||||
assert value == r"v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
|
|
||||||
|
|
||||||
|
|
||||||
def test_unescape3():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_value = r"t=y\\;o=~\;"
|
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=False)
|
|
||||||
|
|
||||||
assert value == r"t=y;o=~;"
|
|
||||||
|
|
||||||
|
|
||||||
def test_unescape4():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_value = r"t=y;o=~;"
|
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=False)
|
|
||||||
|
|
||||||
assert value == r"t=y;o=~;"
|
|
|
@ -59,45 +59,6 @@ def test_txt2():
|
||||||
assert value == r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
assert value == r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
||||||
|
|
||||||
|
|
||||||
def test_txt3():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_type = "TXT"
|
|
||||||
rcd_value = r"v=DKIM1; k=rsa; p=/0f+sikE+k9ZKbn1BJu0/soWht/+Zd/nc/+Gy//mQ1B5sCKYKgAmYTSWkxRjFzkc6KAQhi+/IzaFogEV050wcscdC8Rc8lAQzDUFrMs2ZZK1vFtkwIDAQAB"
|
|
||||||
value = nbdns._format_rdata(rcd_type, rcd_value)
|
|
||||||
|
|
||||||
assert (
|
|
||||||
value
|
|
||||||
== r"v=DKIM1\; k=rsa\; p=/0f+sikE+k9ZKbn1BJu0/soWht/+Zd/nc/+Gy//mQ1B5sCKYKgAmYTSWkxRjFzkc6KAQhi+/IzaFogEV050wcscdC8Rc8lAQzDUFrMs2ZZK1vFtkwIDAQAB"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_txt4():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_type = "TXT"
|
|
||||||
rcd_value = r"t=y\;o=~\;"
|
|
||||||
value = nbdns._format_rdata(rcd_type, rcd_value)
|
|
||||||
|
|
||||||
assert value == r"t=y\;o=~\;"
|
|
||||||
|
|
||||||
|
|
||||||
def test_txt5():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_type = "TXT"
|
|
||||||
rcd_value = r"t=y;o=~;"
|
|
||||||
value = nbdns._format_rdata(rcd_type, rcd_value)
|
|
||||||
|
|
||||||
assert value == r"t=y\;o=~\;"
|
|
||||||
|
|
||||||
|
|
||||||
def test_txt4():
|
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
|
||||||
rcd_type = "TXT"
|
|
||||||
rcd_value = r"v=TLSRPTv1\\; rua=mailto:tlsrpt@example.com"
|
|
||||||
value = nbdns._format_rdata(rcd_type, rcd_value)
|
|
||||||
|
|
||||||
assert value == r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
|
||||||
|
|
||||||
|
|
||||||
def test_srv():
|
def test_srv():
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||||
rcd_type = "SRV"
|
rcd_type = "SRV"
|
||||||
|
|
Loading…
Reference in a new issue