zeroconf: support binding to all interfaces

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Eric Callahan 2022-08-19 17:23:20 -04:00
parent 49b3f78f20
commit 66f9184c74
No known key found for this signature in database
GPG Key ID: 5A1EB336DFB4C71B
1 changed files with 8 additions and 2 deletions

View File

@ -7,6 +7,7 @@ from __future__ import annotations
import socket import socket
import asyncio import asyncio
import logging import logging
import ipaddress
from zeroconf import IPVersion from zeroconf import IPVersion
from zeroconf.asyncio import AsyncServiceInfo, AsyncZeroconf from zeroconf.asyncio import AsyncServiceInfo, AsyncZeroconf
@ -50,8 +51,13 @@ class ZeroconfRegistrar:
self.server = config.get_server() self.server = config.get_server()
self.runner = AsyncRunner(IPVersion.All) self.runner = AsyncRunner(IPVersion.All)
hi = self.server.get_host_info() hi = self.server.get_host_info()
addresses: Optional[List[bytes]] = [socket.inet_aton(hi["address"])] addr: str = hi["address"]
self.bound_all = hi["address"] == "0.0.0.0" if addr.lower() == "all":
addr = "::"
host_ip = ipaddress.ip_address(addr)
fam = socket.AF_INET6 if host_ip.version == 6 else socket.AF_INET
addresses: List[bytes] = [(socket.inet_pton(fam, addr))]
self.bound_all = addr in ["0.0.0.0", "::"]
self.service_info = self._build_service_info(addresses) self.service_info = self._build_service_info(addresses)
if self.bound_all: if self.bound_all:
self.server.register_event_handler( self.server.register_event_handler(