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
|
||||
|
||||
@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:
|
||||
def _escape_semicolon(self, value: str) -> str:
|
||||
fixed = value.replace(";", "\\;")
|
||||
else:
|
||||
fixed = value.replace("\\;", ";")
|
||||
self.log.debug(f"in='{value}', fixed='{fixed}'")
|
||||
return fixed
|
||||
|
||||
def _unescape_semicolon(self, value: str) -> str:
|
||||
fixed = value.replace("\\\\", "\\").replace("\\;", ";")
|
||||
self.log.debug(f"in='{value}', fixed='{fixed}'")
|
||||
return fixed
|
||||
|
||||
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":
|
||||
value = self._fix_semicolon(rcd_value, escape=True)
|
||||
value = self._escape_semicolon(rcd_value)
|
||||
|
||||
case "SRV":
|
||||
value = {
|
||||
|
@ -370,7 +363,7 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
|||
name=rcd_name,
|
||||
type=change.new._type,
|
||||
ttl=change.new.ttl,
|
||||
value=self._fix_semicolon(record, escape=False),
|
||||
value=self._unescape_semicolon(record),
|
||||
disable_ptr=self.disable_ptr,
|
||||
)
|
||||
)
|
||||
|
@ -430,7 +423,7 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
|
|||
name=rcd_name,
|
||||
type=change.new._type,
|
||||
ttl=change.new.ttl,
|
||||
value=self._fix_semicolon(record, escape=False),
|
||||
value=self._unescape_semicolon(record),
|
||||
disable_ptr=self.disable_ptr,
|
||||
)
|
||||
self.log.debug(f"ADD {nb_record.type} {nb_record.name} {nb_record.value}")
|
||||
|
|
|
@ -14,7 +14,7 @@ DEFAULT_CONFIG = {
|
|||
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)
|
||||
value = nbdns._escape_semicolon(rcd_value)
|
||||
|
||||
assert value == r"v=TLSRPTv1\; rua=mailto:tlsrpt@example.com"
|
||||
|
||||
|
@ -22,7 +22,7 @@ def test_escape1():
|
|||
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)
|
||||
value = nbdns._escape_semicolon(rcd_value)
|
||||
|
||||
assert value == r"v=TLSRPTv1\\; rua=mailto:tlsrpt@example.com"
|
||||
|
||||
|
@ -30,7 +30,7 @@ def test_escape2():
|
|||
def test_escape3():
|
||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||
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=~\\;"
|
||||
|
||||
|
@ -38,7 +38,7 @@ def test_escape3():
|
|||
def test_escape4():
|
||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||
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=~\;"
|
||||
|
||||
|
@ -46,7 +46,7 @@ def test_escape4():
|
|||
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)
|
||||
value = nbdns._unescape_semicolon(rcd_value)
|
||||
|
||||
assert value == r"v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
|
||||
|
||||
|
@ -54,22 +54,22 @@ def test_unescape1():
|
|||
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)
|
||||
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():
|
||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||
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():
|
||||
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
|
||||
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=~;"
|
||||
|
|
Loading…
Reference in a new issue