rollback changes to semicolon escaping
All checks were successful
check code / check-code (push) Successful in 27s
All checks were successful
check code / check-code (push) Successful in 27s
This commit is contained in:
parent
f38a1036b7
commit
91ba03af7f
2 changed files with 20 additions and 27 deletions
|
@ -90,21 +90,14 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
||||||
|
|
||||||
return absolute_value
|
return absolute_value
|
||||||
|
|
||||||
@staticmethod
|
def _escape_semicolon(self, value: str) -> str:
|
||||||
def _fix_semicolon(value: str, escape: bool) -> str:
|
fixed = value.replace(";", "\\;")
|
||||||
"""escape and un-escape semicolons in record values for netbox/octodns
|
self.log.debug(f"in='{value}', fixed='{fixed}'")
|
||||||
|
return fixed
|
||||||
@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:
|
|
||||||
fixed = value.replace(";", "\\;")
|
|
||||||
else:
|
|
||||||
fixed = value.replace("\\;", ";")
|
|
||||||
|
|
||||||
|
def _unescape_semicolon(self, value: str) -> str:
|
||||||
|
fixed = value.replace("\\\\", "\\").replace("\\;", ";")
|
||||||
|
self.log.debug(f"in='{value}', fixed='{fixed}'")
|
||||||
return fixed
|
return fixed
|
||||||
|
|
||||||
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]:
|
||||||
|
@ -212,7 +205,7 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
||||||
}
|
}
|
||||||
|
|
||||||
case "SPF" | "TXT":
|
case "SPF" | "TXT":
|
||||||
value = self._fix_semicolon(rcd_value, escape=True)
|
value = self._escape_semicolon(rcd_value)
|
||||||
|
|
||||||
case "SRV":
|
case "SRV":
|
||||||
value = {
|
value = {
|
||||||
|
@ -370,7 +363,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=self._unescape_semicolon(record),
|
||||||
disable_ptr=self.disable_ptr,
|
disable_ptr=self.disable_ptr,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -430,7 +423,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=self._unescape_semicolon(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}")
|
||||||
|
|
|
@ -14,7 +14,7 @@ DEFAULT_CONFIG = {
|
||||||
def test_escape1():
|
def test_escape1():
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||||
rcd_value = r"v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
|
rcd_value = r"v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=True)
|
value = nbdns._escape_semicolon(rcd_value)
|
||||||
|
|
||||||
assert value == r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
assert value == r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ def test_escape1():
|
||||||
def test_escape2():
|
def test_escape2():
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||||
rcd_value = r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
rcd_value = r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=True)
|
value = nbdns._escape_semicolon(rcd_value)
|
||||||
|
|
||||||
assert value == r"v=TLSRPTv1\\; rua=mailto:tlsrpt@example.com"
|
assert value == r"v=TLSRPTv1\\; rua=mailto:tlsrpt@example.com"
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ def test_escape2():
|
||||||
def test_escape3():
|
def test_escape3():
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||||
rcd_value = r"t=y\;o=~\;"
|
rcd_value = r"t=y\;o=~\;"
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=True)
|
value = nbdns._escape_semicolon(rcd_value)
|
||||||
|
|
||||||
assert value == r"t=y\\;o=~\\;"
|
assert value == r"t=y\\;o=~\\;"
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ def test_escape3():
|
||||||
def test_escape4():
|
def test_escape4():
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||||
rcd_value = r"t=y;o=~;"
|
rcd_value = r"t=y;o=~;"
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=True)
|
value = nbdns._escape_semicolon(rcd_value)
|
||||||
|
|
||||||
assert value == r"t=y\;o=~\;"
|
assert value == r"t=y\;o=~\;"
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ def test_escape4():
|
||||||
def test_unescape1():
|
def test_unescape1():
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||||
rcd_value = r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
rcd_value = r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=False)
|
value = nbdns._unescape_semicolon(rcd_value)
|
||||||
|
|
||||||
assert value == r"v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
|
assert value == r"v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
|
||||||
|
|
||||||
|
@ -54,22 +54,22 @@ def test_unescape1():
|
||||||
def test_unescape2():
|
def test_unescape2():
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||||
rcd_value = r"v=TLSRPTv1\\; rua=mailto:tlsrpt@example.com"
|
rcd_value = r"v=TLSRPTv1\\; rua=mailto:tlsrpt@example.com"
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=False)
|
value = nbdns._unescape_semicolon(rcd_value)
|
||||||
|
|
||||||
assert value == r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
assert value == r"v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
|
||||||
|
|
||||||
|
|
||||||
def test_unescape3():
|
def test_unescape3():
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||||
rcd_value = r"t=y\\;o=~\;"
|
rcd_value = r"t=y\\;o=~\;"
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=False)
|
value = nbdns._unescape_semicolon(rcd_value)
|
||||||
|
|
||||||
assert value == r"t=y\;o=~;"
|
assert value == r"t=y;o=~;"
|
||||||
|
|
||||||
|
|
||||||
def test_unescape4():
|
def test_unescape4():
|
||||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||||
rcd_value = r"t=y;o=~;"
|
rcd_value = r"t=y;o=~;"
|
||||||
value = nbdns._fix_semicolon(rcd_value, escape=False)
|
value = nbdns._unescape_semicolon(rcd_value)
|
||||||
|
|
||||||
assert value == r"t=y;o=~;"
|
assert value == r"t=y;o=~;"
|
||||||
|
|
Loading…
Reference in a new issue