Avoid executor job to start http if server_host is unspecified (#114609)
* Avoid executor job to start http if server_host is unspecified Same as #112522 for http * adjust test * CONF_SERVER_HOST is always set now
This commit is contained in:
parent
56d0ad27f0
commit
7a2e529bb7
2 changed files with 7 additions and 2 deletions
|
@ -7,6 +7,7 @@ import datetime
|
||||||
from ipaddress import IPv4Network, IPv6Network, ip_network
|
from ipaddress import IPv4Network, IPv6Network, ip_network
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import socket
|
||||||
import ssl
|
import ssl
|
||||||
from tempfile import NamedTemporaryFile
|
from tempfile import NamedTemporaryFile
|
||||||
from typing import Any, Final, TypedDict, cast
|
from typing import Any, Final, TypedDict, cast
|
||||||
|
@ -98,11 +99,14 @@ STORAGE_KEY: Final = DOMAIN
|
||||||
STORAGE_VERSION: Final = 1
|
STORAGE_VERSION: Final = 1
|
||||||
SAVE_DELAY: Final = 180
|
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(
|
HTTP_SCHEMA: Final = vol.All(
|
||||||
cv.deprecated(CONF_BASE_URL),
|
cv.deprecated(CONF_BASE_URL),
|
||||||
vol.Schema(
|
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]
|
cv.ensure_list, vol.Length(min=1), [cv.string]
|
||||||
),
|
),
|
||||||
vol.Optional(CONF_SERVER_PORT, default=SERVER_PORT): cv.port,
|
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:
|
if conf is None:
|
||||||
conf = cast(ConfData, HTTP_SCHEMA({}))
|
conf = cast(ConfData, HTTP_SCHEMA({}))
|
||||||
|
|
||||||
server_host = conf.get(CONF_SERVER_HOST)
|
server_host = conf[CONF_SERVER_HOST]
|
||||||
server_port = conf[CONF_SERVER_PORT]
|
server_port = conf[CONF_SERVER_PORT]
|
||||||
ssl_certificate = conf.get(CONF_SSL_CERTIFICATE)
|
ssl_certificate = conf.get(CONF_SSL_CERTIFICATE)
|
||||||
ssl_peer_certificate = conf.get(CONF_SSL_PEER_CERTIFICATE)
|
ssl_peer_certificate = conf.get(CONF_SSL_PEER_CERTIFICATE)
|
||||||
|
|
|
@ -135,6 +135,7 @@ def test_secrets(mock_is_file, event_loop, mock_hass_config_yaml: None) -> None:
|
||||||
"server_port": 8123,
|
"server_port": 8123,
|
||||||
"ssl_profile": "modern",
|
"ssl_profile": "modern",
|
||||||
"use_x_frame_options": True,
|
"use_x_frame_options": True,
|
||||||
|
"server_host": ["0.0.0.0", "::"],
|
||||||
}
|
}
|
||||||
assert res["secret_cache"] == {
|
assert res["secret_cache"] == {
|
||||||
get_test_config_dir("secrets.yaml"): {"http_pw": "http://google.com"}
|
get_test_config_dir("secrets.yaml"): {"http_pw": "http://google.com"}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue