modified: src/netbox_plugin_bind_provisioner/management/commands/bind-transfer-endpoint.py

Fixes issue #11 (IPv6 support)
This commit is contained in:
Sven Luethi committed 2026-01-29 11:10:31 +01:00
1 parent 9a2b0a2c2b
commit 8fba131230
1 file changed
+37 -4
@@ -1,4 +1,5 @@
import logging import logging
import socket
import socketserver import socketserver
import os import os
import threading import threading
@@ -609,20 +610,52 @@ class TCPRequestHandler(DNSBaseRequestHandler):
traceback.print_exc() traceback.print_exc()
class TCPDNSServer(socketserver.TCPServer): class DNSAddressMixin:
def _resolve_address(self, server_address, socktype, proto):
host, port = server_address
infos = socket.getaddrinfo(
host,
port,
socket.AF_UNSPEC,
socktype,
proto,
socket.AI_PASSIVE
)
family, _, _, _, sockaddr = infos[0]
self.address_family = family
return sockaddr
class TCPDNSServer(DNSAddressMixin, socketserver.TCPServer):
allow_reuse_address = True allow_reuse_address = True
def __init__(self, server_address, handler_class, keyring, tsig_view_map): def __init__(self, server_address, handler_class, keyring, tsig_view_map):
super().__init__(server_address, handler_class) sockaddr = self._resolve_address(
server_address,
socket.SOCK_STREAM,
socket.IPPROTO_TCP
)
super().__init__(sockaddr, handler_class)
self.keyring = keyring self.keyring = keyring
self.tsig_view_map = tsig_view_map self.tsig_view_map = tsig_view_map
class UDPDNSServer(socketserver.UDPServer): class UDPDNSServer(DNSAddressMixin, socketserver.UDPServer):
allow_reuse_address = True allow_reuse_address = True
def __init__(self, server_address, handler_class, keyring, tsig_view_map): def __init__(self, server_address, handler_class, keyring, tsig_view_map):
super().__init__(server_address, handler_class) sockaddr = self._resolve_address(
server_address,
socket.SOCK_DGRAM,
socket.IPPROTO_UDP
)
super().__init__(sockaddr, handler_class)
self.keyring = keyring self.keyring = keyring
self.tsig_view_map = tsig_view_map self.tsig_view_map = tsig_view_map