mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-04-20 19:27:16 +00:00

* Refactory code / object handling * Next step * fix lint * Step 2 * Cleanup API code * cleanup addons code * cleanup data handling * Cleanup addons data handling * Cleanup docker api * clean docker api p2 * next cleanup round * cleanup start on snapshots * update format strings * fix setup * fix lint * fix lint * fix lint * fix tox * Fix wrong import of datetime module * Fix bug with attributes * fix extraction * Update core * Update logs * Expand scheduler * add support for time interval objects * next updates on tasks * Fix some things * Cleanup code / supervisor * fix lint * Fix some code styles * rename stuff * cleanup api call reload * fix lock replacment * fix lint * fix lint * fix bug * fix wrong config links * fix bugs * fix bug * Update version on startup * Fix some bugs * fix bug * Fix snapshot * Add wait boot options * fix lint * fix default config * fix snapshot * fix snapshot * load snapshots on startup * add log message at the end * Some cleanups * fix bug * add logger * add logger for supervisor update * Add more logger
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
"""Setup the internal DNS service for host applications."""
|
|
import asyncio
|
|
import logging
|
|
import shlex
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
COMMAND = "socat UDP-RECVFROM:53,fork UDP-SENDTO:127.0.0.11:53"
|
|
|
|
|
|
class DNSForward(object):
|
|
"""Manage DNS forwarding to internal DNS."""
|
|
|
|
def __init__(self, loop):
|
|
"""Initialize DNS forwarding."""
|
|
self.loop = loop
|
|
self.proc = None
|
|
|
|
async def start(self):
|
|
"""Start DNS forwarding."""
|
|
try:
|
|
self.proc = await asyncio.create_subprocess_exec(
|
|
*shlex.split(COMMAND),
|
|
stdin=asyncio.subprocess.DEVNULL,
|
|
stdout=asyncio.subprocess.DEVNULL,
|
|
stderr=asyncio.subprocess.DEVNULL,
|
|
loop=self.loop
|
|
)
|
|
except OSError as err:
|
|
_LOGGER.error("Can't start DNS forwarding: %s", err)
|
|
else:
|
|
_LOGGER.info("Start DNS port forwarding for host add-ons")
|
|
|
|
async def stop(self):
|
|
"""Stop DNS forwarding."""
|
|
if not self.proc:
|
|
_LOGGER.warning("DNS forwarding is not running!")
|
|
return
|
|
|
|
self.proc.kill()
|
|
await self.proc.wait()
|
|
_LOGGER.info("Stop DNS forwarding")
|