modified: src/netbox_plugin_bind_provisioner/__init__.py
modified: src/netbox_plugin_bind_provisioner/management/commands/bind-transfer-endpoint.py Fixes bug: TXT records were truncated instead of chunked when larger then 255 characters and on semicolons.
This commit is contained in:
1 parent
e6aaa3a54d
commit
fa032b1ea3
2 files changed
+14
-2
No files matched your search
@@ -5,7 +5,7 @@ from django.utils.translation import gettext_lazy as _
|
|||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
__version__ = "1.0.0"
|
__version__ = "1.0.1"
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@@ -246,10 +246,21 @@ class DNSBaseRequestHandler(socketserver.BaseRequestHandler):
|
|||||||
# If the record has no TTL, use the zone default
|
# If the record has no TTL, use the zone default
|
||||||
ttl = record.ttl or nb_zone.default_ttl
|
ttl = record.ttl or nb_zone.default_ttl
|
||||||
|
|
||||||
|
# Apply special quoting for TXT records to stop tokanizer
|
||||||
|
# from cutting it up:
|
||||||
|
if rdtype == dns.rdatatype.TXT:
|
||||||
|
if len(record.value) <= 255:
|
||||||
|
record_value = f'"{record.value}"'
|
||||||
|
else:
|
||||||
|
chunks = ['"{}"'.format(record.value[i:i+255]) for i in range(0, len(record.value), 255)]
|
||||||
|
record_value = " ".join(chunks)
|
||||||
|
else:
|
||||||
|
record_value = record.value
|
||||||
|
|
||||||
rdata = dns.rdata.from_text(
|
rdata = dns.rdata.from_text(
|
||||||
dns.rdataclass.IN,
|
dns.rdataclass.IN,
|
||||||
rdtype,
|
rdtype,
|
||||||
record.value,
|
record_value, #asd
|
||||||
relativize=False,
|
relativize=False,
|
||||||
origin=zone.origin,
|
origin=zone.origin,
|
||||||
)
|
)
|
||||||
@@ -283,6 +294,7 @@ class DNSBaseRequestHandler(socketserver.BaseRequestHandler):
|
|||||||
zone.replace_rdataset(name, rdataset)
|
zone.replace_rdataset(name, rdataset)
|
||||||
return zone
|
return zone
|
||||||
|
|
||||||
|
|
||||||
def denyRequestBadTSIG(self, wire, tsig_error: dns.rcode):
|
def denyRequestBadTSIG(self, wire, tsig_error: dns.rcode):
|
||||||
# Use empty keyring to parse TSIG without validating
|
# Use empty keyring to parse TSIG without validating
|
||||||
query = dns.message.from_wire(
|
query = dns.message.from_wire(
|
||||||
|
|||||||
Reference in new issue
Block a user