Fix paths after restructuring renamed: netbox_dns_bridge/management/commands/export-dns-zone.py -> netbox_dns_bridge/management/commands/dns-export-zone.py renamed: netbox_dns_bridge/management/commands/export-all-dns-zones.py -> netbox_dns_bridge/management/commands/dns-export-zones.py Unify command naming scheme new file: netbox_dns_bridge/migrations/0001_initial.py Adds the missing migration. Since the plugin was renamed this is also an opportunity to merge all changes into a single migration. renamed: netbox_dns_bridge/service/transfer/catalog_zone_manager.py -> netbox_dns_bridge/catalog_zone_manager.py renamed: netbox_dns_bridge/service/transfer/dns_server.py -> netbox_dns_bridge/dns_server.py new file: netbox_dns_bridge/management/commands/dns-settings.py modified: netbox_dns_bridge/management/commands/dns-transfer-endpoint.py renamed: netbox_dns_bridge/service/transfer/request_handler.py -> netbox_dns_bridge/request_handler.py deleted: netbox_dns_bridge/service/transfer/__init__.py Another restructure to simplify code re-use. New command dns-settings added to allow setting of catalog zone serial. This will be needed to migrate from previous versions.
55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
import logging
|
|
import socketserver
|
|
import socket
|
|
|
|
logger = logging.getLogger(__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
|