Files
netbox-plugin-dns-bridge/src/netbox_plugin_bind_provisioner/service/endpoint/dns_server.py
T
Sven Luethi 19a946c880 - Split bind transfer command into multiple files for better code readability.
- Rename bind-transfer-endpoint command -> dns-transfer-endpoint.
2026-02-05 12:27:28 +01:00

55 lines
1.4 KiB
Python

import logging
import socketserver
import socket
logger = logging.getLogger("dns-transfer-endpoint")
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):
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(DNSAddressMixin, socketserver.UDPServer):
allow_reuse_address = True
def __init__(self, server_address, handler_class, keyring, tsig_view_map):
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