modified: src/netbox_plugin_bind_provisioner/management/commands/bind-transfer-endpoint.py
Fixes issue #11 (IPv6 support)
This commit is contained in:
1 parent
9a2b0a2c2b
commit
8fba131230
1 file changed
+37
-4
@@ -1,4 +1,5 @@
|
||||
import logging
|
||||
import socket
|
||||
import socketserver
|
||||
import os
|
||||
import threading
|
||||
@@ -609,20 +610,52 @@ class TCPRequestHandler(DNSBaseRequestHandler):
|
||||
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
|
||||
|
||||
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.tsig_view_map = tsig_view_map
|
||||
|
||||
|
||||
class UDPDNSServer(socketserver.UDPServer):
|
||||
class UDPDNSServer(DNSAddressMixin, socketserver.UDPServer):
|
||||
allow_reuse_address = True
|
||||
|
||||
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.tsig_view_map = tsig_view_map
|
||||
|
||||
|
||||
Reference in new issue
Block a user