Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d8f4b83c2a | ||
|
|
fa032b1ea3 |
No files matched your search
@@ -5,7 +5,7 @@ from django.utils.translation import gettext_lazy as _
|
||||
from django.dispatch import receiver
|
||||
from django.conf import settings
|
||||
|
||||
__version__ = "1.0.0"
|
||||
__version__ = "1.0.2"
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import logging
|
||||
import socketserver
|
||||
import os
|
||||
#import re
|
||||
import threading
|
||||
import dns.query
|
||||
import dns.message
|
||||
@@ -246,10 +247,25 @@ class DNSBaseRequestHandler(socketserver.BaseRequestHandler):
|
||||
# If the record has no TTL, use the zone default
|
||||
ttl = record.ttl or nb_zone.default_ttl
|
||||
|
||||
# Apply quoting for TXT records to stop tokanizer
|
||||
# from cutting it up:
|
||||
value = record.value
|
||||
if rdtype == dns.rdatatype.TXT:
|
||||
if not value.startswith('"') and not value.endswith('"'):
|
||||
value = value.replace('"', '\\"')
|
||||
if len(value) <= 255:
|
||||
value = f'"{value}"'
|
||||
else:
|
||||
# This is a bug fix for netbox. If netbox allowed for
|
||||
# an unquoted value to be larger then 255 characters,
|
||||
# it misunderstood everything behind a ; as a comment.
|
||||
chunks = ['"{}"'.format(value[i:i+255]) for i in range(0, len(value), 255)]
|
||||
value = " ".join(chunks)
|
||||
|
||||
rdata = dns.rdata.from_text(
|
||||
dns.rdataclass.IN,
|
||||
rdtype,
|
||||
record.value,
|
||||
value,
|
||||
relativize=False,
|
||||
origin=zone.origin,
|
||||
)
|
||||
@@ -283,6 +299,7 @@ class DNSBaseRequestHandler(socketserver.BaseRequestHandler):
|
||||
zone.replace_rdataset(name, rdataset)
|
||||
return zone
|
||||
|
||||
|
||||
def denyRequestBadTSIG(self, wire, tsig_error: dns.rcode):
|
||||
# Use empty keyring to parse TSIG without validating
|
||||
query = dns.message.from_wire(
|
||||
|
||||
Reference in new issue
Block a user