diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index c9f8c21e0a3..e89031cb265 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -7,6 +7,7 @@ import datetime from ipaddress import IPv4Network, IPv6Network, ip_network import logging import os +import socket import ssl from tempfile import NamedTemporaryFile from typing import Any, Final, TypedDict, cast @@ -98,11 +99,14 @@ STORAGE_KEY: Final = DOMAIN STORAGE_VERSION: Final = 1 SAVE_DELAY: Final = 180 +_HAS_IPV6 = hasattr(socket, "AF_INET6") +_DEFAULT_BIND = ["0.0.0.0", "::"] if _HAS_IPV6 else ["0.0.0.0"] + HTTP_SCHEMA: Final = vol.All( cv.deprecated(CONF_BASE_URL), vol.Schema( { - vol.Optional(CONF_SERVER_HOST): vol.All( + vol.Optional(CONF_SERVER_HOST, default=_DEFAULT_BIND): vol.All( cv.ensure_list, vol.Length(min=1), [cv.string] ), vol.Optional(CONF_SERVER_PORT, default=SERVER_PORT): cv.port, @@ -183,7 +187,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: if conf is None: conf = cast(ConfData, HTTP_SCHEMA({})) - server_host = conf.get(CONF_SERVER_HOST) + server_host = conf[CONF_SERVER_HOST] server_port = conf[CONF_SERVER_PORT] ssl_certificate = conf.get(CONF_SSL_CERTIFICATE) ssl_peer_certificate = conf.get(CONF_SSL_PEER_CERTIFICATE) diff --git a/tests/scripts/test_check_config.py b/tests/scripts/test_check_config.py index 96d63206cfc..79c64259f8b 100644 --- a/tests/scripts/test_check_config.py +++ b/tests/scripts/test_check_config.py @@ -135,6 +135,7 @@ def test_secrets(mock_is_file, event_loop, mock_hass_config_yaml: None) -> None: "server_port": 8123, "ssl_profile": "modern", "use_x_frame_options": True, + "server_host": ["0.0.0.0", "::"], } assert res["secret_cache"] == { get_test_config_dir("secrets.yaml"): {"http_pw": "http://google.com"}