From cb06b5af786e59ef2bcc32e9de65308d3da0d12c Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 19 May 2023 13:06:10 -0500 Subject: [PATCH] Support multiple sites on the webserver aiohttp already supports multiple TCPSites for a single server This allows Home Assistant to listen on multiple ports with different ssl configuration per port so that devices that need a less secure configuration can be isolated to a single port --- homeassistant/components/http/__init__.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index 76ea244147..2d323fa9ec 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -193,12 +193,10 @@ class SiteServerConfig: ssl_context: ssl.SSLContext | None = None -def _create_site_server_config_from_dict( - conf: ConfData | dict[str, Any] -) -> SiteServerConfig: +def _create_site_server_config_from_dict(conf: ConfData) -> SiteServerConfig: """Create a SiteServerConfig from a dict.""" return SiteServerConfig( - server_host=conf[CONF_SERVER_HOST], + server_host=conf.get(CONF_SERVER_HOST) or [], server_port=conf[CONF_SERVER_PORT], ssl_certificate=conf.get(CONF_SSL_CERTIFICATE), ssl_peer_certificate=conf.get(CONF_SSL_PEER_CERTIFICATE), @@ -223,11 +221,9 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: site_configs: list[SiteServerConfig] = [] - if CONF_SERVERS in config[DOMAIN]: - site_configs = [ - _create_site_server_config_from_dict(conf) - for conf in config[DOMAIN][CONF_SERVERS] - ] + if server_cfg := conf.get(CONF_SERVERS): + servers = cast(list[ConfData], server_cfg) + site_configs = [_create_site_server_config_from_dict(cfg) for cfg in servers] else: site_configs = [_create_site_server_config_from_dict(conf)]