diff --git a/Dockerfile b/Dockerfile index 10afdd765..305fcce0b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,8 +14,7 @@ RUN \ libffi \ libpulse \ musl \ - openssl \ - socat + openssl ARG BUILD_ARCH WORKDIR /usr/src diff --git a/supervisor/core.py b/supervisor/core.py index 2f9808463..db51bb2bf 100644 --- a/supervisor/core.py +++ b/supervisor/core.py @@ -259,7 +259,6 @@ class Core(CoreSysAttributes): self.sys_websession.close(), self.sys_websession_ssl.close(), self.sys_ingress.unload(), - self.sys_plugins.unload(), self.sys_hwmonitor.unload(), ] ) diff --git a/supervisor/misc/forwarder.py b/supervisor/misc/forwarder.py deleted file mode 100644 index bb6cb04a1..000000000 --- a/supervisor/misc/forwarder.py +++ /dev/null @@ -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") diff --git a/supervisor/plugins/__init__.py b/supervisor/plugins/__init__.py index 828670971..6f23f5980 100644 --- a/supervisor/plugins/__init__.py +++ b/supervisor/plugins/__init__.py @@ -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: """Shutdown Supervisor plugin.""" # Sequential to avoid issue on slow IO diff --git a/supervisor/plugins/dns.py b/supervisor/plugins/dns.py index 6718513b5..19cdc1dae 100644 --- a/supervisor/plugins/dns.py +++ b/supervisor/plugins/dns.py @@ -25,7 +25,6 @@ from ..coresys import CoreSys, CoreSysAttributes from ..docker.dns import DockerDNS from ..docker.stats import DockerStats from ..exceptions import CoreDNSError, CoreDNSUpdateError, DockerAPIError -from ..misc.forwarder import DNSForward from ..utils.json import JsonConfig from ..validate import dns_url from .validate import SCHEMA_DNS_CONFIG @@ -53,7 +52,6 @@ class CoreDNS(JsonConfig, CoreSysAttributes): super().__init__(FILE_HASSIO_DNS, SCHEMA_DNS_CONFIG) self.coresys: CoreSys = coresys self.instance: DockerDNS = DockerDNS(coresys) - self.forwarder: DNSForward = DNSForward() self.coredns_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.save_data() - # Start DNS forwarder - self.sys_create_task(self.forwarder.start(self.sys_docker.network.dns)) - # Initialize CoreDNS Template try: self.coredns_template = jinja2.Template(COREDNS_TMPL.read_text()) @@ -164,10 +159,6 @@ class CoreDNS(JsonConfig, CoreSysAttributes): # Update supervisor self._write_resolv(HOST_RESOLV) - async def unload(self) -> None: - """Unload DNS forwarder.""" - await self.forwarder.stop() - async def install(self) -> None: """Install CoreDNS.""" _LOGGER.info("Setup CoreDNS plugin")