Remove old dns forwarder (#1945)

This commit is contained in:
Pascal Vizeli 2020-08-18 21:40:52 +02:00 committed by GitHub
parent 838ba7ff36
commit 3541cbff5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 1 additions and 65 deletions

View File

@ -14,8 +14,7 @@ RUN \
libffi \ libffi \
libpulse \ libpulse \
musl \ musl \
openssl \ openssl
socat
ARG BUILD_ARCH ARG BUILD_ARCH
WORKDIR /usr/src WORKDIR /usr/src

View File

@ -259,7 +259,6 @@ class Core(CoreSysAttributes):
self.sys_websession.close(), self.sys_websession.close(),
self.sys_websession_ssl.close(), self.sys_websession_ssl.close(),
self.sys_ingress.unload(), self.sys_ingress.unload(),
self.sys_plugins.unload(),
self.sys_hwmonitor.unload(), self.sys_hwmonitor.unload(),
] ]
) )

View File

@ -1,49 +0,0 @@
"""Setup the internal DNS service for host applications."""
import asyncio
from ipaddress import IPv4Address
import logging
import shlex
from typing import Optional
import async_timeout
_LOGGER: logging.Logger = logging.getLogger(__name__)
COMMAND = "socat UDP-RECVFROM:53,fork UDP-SENDTO:{!s}:53"
class DNSForward:
"""Manage DNS forwarding to internal DNS."""
def __init__(self):
"""Initialize DNS forwarding."""
self.proc: Optional[asyncio.Process] = None
async def start(self, dns_server: IPv4Address) -> None:
"""Start DNS forwarding."""
try:
self.proc = await asyncio.create_subprocess_exec(
*shlex.split(COMMAND.format(dns_server)),
stdin=asyncio.subprocess.DEVNULL,
stdout=asyncio.subprocess.DEVNULL,
stderr=asyncio.subprocess.DEVNULL,
)
except OSError as err:
_LOGGER.error("Can't start DNS forwarding: %s", err)
else:
_LOGGER.info("Start DNS port forwarding to %s", dns_server)
async def stop(self) -> None:
"""Stop DNS forwarding."""
if not self.proc:
_LOGGER.warning("DNS forwarding is not running!")
return
self.proc.kill()
try:
with async_timeout.timeout(5):
await self.proc.wait()
except asyncio.TimeoutError:
_LOGGER.warning("Stop waiting for DNS shutdown")
_LOGGER.info("Stop DNS forwarding")

View File

@ -111,10 +111,6 @@ class PluginManager(CoreSysAttributes):
] ]
) )
async def unload(self) -> None:
"""Unload Supervisor plugin."""
await asyncio.wait([self.dns.unload()])
async def shutdown(self) -> None: async def shutdown(self) -> None:
"""Shutdown Supervisor plugin.""" """Shutdown Supervisor plugin."""
# Sequential to avoid issue on slow IO # Sequential to avoid issue on slow IO

View File

@ -25,7 +25,6 @@ from ..coresys import CoreSys, CoreSysAttributes
from ..docker.dns import DockerDNS from ..docker.dns import DockerDNS
from ..docker.stats import DockerStats from ..docker.stats import DockerStats
from ..exceptions import CoreDNSError, CoreDNSUpdateError, DockerAPIError from ..exceptions import CoreDNSError, CoreDNSUpdateError, DockerAPIError
from ..misc.forwarder import DNSForward
from ..utils.json import JsonConfig from ..utils.json import JsonConfig
from ..validate import dns_url from ..validate import dns_url
from .validate import SCHEMA_DNS_CONFIG from .validate import SCHEMA_DNS_CONFIG
@ -53,7 +52,6 @@ class CoreDNS(JsonConfig, CoreSysAttributes):
super().__init__(FILE_HASSIO_DNS, SCHEMA_DNS_CONFIG) super().__init__(FILE_HASSIO_DNS, SCHEMA_DNS_CONFIG)
self.coresys: CoreSys = coresys self.coresys: CoreSys = coresys
self.instance: DockerDNS = DockerDNS(coresys) self.instance: DockerDNS = DockerDNS(coresys)
self.forwarder: DNSForward = DNSForward()
self.coredns_template: Optional[jinja2.Template] = None self.coredns_template: Optional[jinja2.Template] = None
self.resolv_template: Optional[jinja2.Template] = None self.resolv_template: Optional[jinja2.Template] = None
@ -141,9 +139,6 @@ class CoreDNS(JsonConfig, CoreSysAttributes):
self.image = self.instance.image self.image = self.instance.image
self.save_data() self.save_data()
# Start DNS forwarder
self.sys_create_task(self.forwarder.start(self.sys_docker.network.dns))
# Initialize CoreDNS Template # Initialize CoreDNS Template
try: try:
self.coredns_template = jinja2.Template(COREDNS_TMPL.read_text()) self.coredns_template = jinja2.Template(COREDNS_TMPL.read_text())
@ -164,10 +159,6 @@ class CoreDNS(JsonConfig, CoreSysAttributes):
# Update supervisor # Update supervisor
self._write_resolv(HOST_RESOLV) self._write_resolv(HOST_RESOLV)
async def unload(self) -> None:
"""Unload DNS forwarder."""
await self.forwarder.stop()
async def install(self) -> None: async def install(self) -> None:
"""Install CoreDNS.""" """Install CoreDNS."""
_LOGGER.info("Setup CoreDNS plugin") _LOGGER.info("Setup CoreDNS plugin")