Files
netbox-plugin-dns-bridge/netbox_dns_bridge/dns_server.py
T
Sven Luethi 3eef3b4d7b modified: netbox_dns_bridge/__init__.py
modified:   netbox_dns_bridge/catalog_zone_manager.py
modified:   netbox_dns_bridge/dns_server.py
modified:   netbox_dns_bridge/logger.py
new file:   netbox_dns_bridge/migrations/0002_alter_integerkeyvaluesetting_options_and_more.py
modified:   netbox_dns_bridge/models.py
new file:   netbox_dns_bridge/notify_handler.py
modified:   netbox_dns_bridge/request_handler.py
modified:   netbox_dns_bridge/signals/__init__.py
new file:   netbox_dns_bridge/signals/netbox_dns_zones.py
deleted:    netbox_dns_bridge/signals/transfer_endpoint.py
modified:   netbox_dns_bridge/utils.py

Implement notify mechanism
2026-06-11 00:32:26 +02:00

47 lines
1.3 KiB
Python

import socketserver
import socket
from .logger import get_logger
logger = get_logger(__name__)
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