mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-18 22:56:31 +00:00
Remove old dns forwarder (#1945)
This commit is contained in:
parent
838ba7ff36
commit
3541cbff5e
@ -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
|
||||||
|
@ -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(),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
@ -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")
|
|
@ -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
|
||||||
|
@ -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")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user