mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 21:06:19 +00:00
Black
This commit is contained in:
@@ -5,12 +5,24 @@ from homeassistant.core import callback
|
||||
from homeassistant.util.logging import async_create_catching_coro
|
||||
|
||||
from .const import (
|
||||
DOMAIN, PREF_ENABLE_ALEXA, PREF_ENABLE_GOOGLE, PREF_ENABLE_REMOTE,
|
||||
PREF_GOOGLE_SECURE_DEVICES_PIN, PREF_CLOUDHOOKS, PREF_CLOUD_USER,
|
||||
PREF_GOOGLE_ENTITY_CONFIGS, PREF_OVERRIDE_NAME, PREF_DISABLE_2FA,
|
||||
PREF_ALIASES, PREF_SHOULD_EXPOSE, PREF_ALEXA_ENTITY_CONFIGS,
|
||||
PREF_ALEXA_REPORT_STATE, DEFAULT_ALEXA_REPORT_STATE,
|
||||
InvalidTrustedNetworks, InvalidTrustedProxies)
|
||||
DOMAIN,
|
||||
PREF_ENABLE_ALEXA,
|
||||
PREF_ENABLE_GOOGLE,
|
||||
PREF_ENABLE_REMOTE,
|
||||
PREF_GOOGLE_SECURE_DEVICES_PIN,
|
||||
PREF_CLOUDHOOKS,
|
||||
PREF_CLOUD_USER,
|
||||
PREF_GOOGLE_ENTITY_CONFIGS,
|
||||
PREF_OVERRIDE_NAME,
|
||||
PREF_DISABLE_2FA,
|
||||
PREF_ALIASES,
|
||||
PREF_SHOULD_EXPOSE,
|
||||
PREF_ALEXA_ENTITY_CONFIGS,
|
||||
PREF_ALEXA_REPORT_STATE,
|
||||
DEFAULT_ALEXA_REPORT_STATE,
|
||||
InvalidTrustedNetworks,
|
||||
InvalidTrustedProxies,
|
||||
)
|
||||
|
||||
STORAGE_KEY = DOMAIN
|
||||
STORAGE_VERSION = 1
|
||||
@@ -50,23 +62,30 @@ class CloudPreferences:
|
||||
"""Listen for updates to the preferences."""
|
||||
self._listeners.append(listener)
|
||||
|
||||
async def async_update(self, *, google_enabled=_UNDEF,
|
||||
alexa_enabled=_UNDEF, remote_enabled=_UNDEF,
|
||||
google_secure_devices_pin=_UNDEF, cloudhooks=_UNDEF,
|
||||
cloud_user=_UNDEF, google_entity_configs=_UNDEF,
|
||||
alexa_entity_configs=_UNDEF,
|
||||
alexa_report_state=_UNDEF):
|
||||
async def async_update(
|
||||
self,
|
||||
*,
|
||||
google_enabled=_UNDEF,
|
||||
alexa_enabled=_UNDEF,
|
||||
remote_enabled=_UNDEF,
|
||||
google_secure_devices_pin=_UNDEF,
|
||||
cloudhooks=_UNDEF,
|
||||
cloud_user=_UNDEF,
|
||||
google_entity_configs=_UNDEF,
|
||||
alexa_entity_configs=_UNDEF,
|
||||
alexa_report_state=_UNDEF,
|
||||
):
|
||||
"""Update user preferences."""
|
||||
for key, value in (
|
||||
(PREF_ENABLE_GOOGLE, google_enabled),
|
||||
(PREF_ENABLE_ALEXA, alexa_enabled),
|
||||
(PREF_ENABLE_REMOTE, remote_enabled),
|
||||
(PREF_GOOGLE_SECURE_DEVICES_PIN, google_secure_devices_pin),
|
||||
(PREF_CLOUDHOOKS, cloudhooks),
|
||||
(PREF_CLOUD_USER, cloud_user),
|
||||
(PREF_GOOGLE_ENTITY_CONFIGS, google_entity_configs),
|
||||
(PREF_ALEXA_ENTITY_CONFIGS, alexa_entity_configs),
|
||||
(PREF_ALEXA_REPORT_STATE, alexa_report_state),
|
||||
(PREF_ENABLE_GOOGLE, google_enabled),
|
||||
(PREF_ENABLE_ALEXA, alexa_enabled),
|
||||
(PREF_ENABLE_REMOTE, remote_enabled),
|
||||
(PREF_GOOGLE_SECURE_DEVICES_PIN, google_secure_devices_pin),
|
||||
(PREF_CLOUDHOOKS, cloudhooks),
|
||||
(PREF_CLOUD_USER, cloud_user),
|
||||
(PREF_GOOGLE_ENTITY_CONFIGS, google_entity_configs),
|
||||
(PREF_ALEXA_ENTITY_CONFIGS, alexa_entity_configs),
|
||||
(PREF_ALEXA_REPORT_STATE, alexa_report_state),
|
||||
):
|
||||
if value is not _UNDEF:
|
||||
self._prefs[key] = value
|
||||
@@ -82,23 +101,27 @@ class CloudPreferences:
|
||||
await self._store.async_save(self._prefs)
|
||||
|
||||
for listener in self._listeners:
|
||||
self._hass.async_create_task(
|
||||
async_create_catching_coro(listener(self))
|
||||
)
|
||||
self._hass.async_create_task(async_create_catching_coro(listener(self)))
|
||||
|
||||
async def async_update_google_entity_config(
|
||||
self, *, entity_id, override_name=_UNDEF, disable_2fa=_UNDEF,
|
||||
aliases=_UNDEF, should_expose=_UNDEF):
|
||||
self,
|
||||
*,
|
||||
entity_id,
|
||||
override_name=_UNDEF,
|
||||
disable_2fa=_UNDEF,
|
||||
aliases=_UNDEF,
|
||||
should_expose=_UNDEF,
|
||||
):
|
||||
"""Update config for a Google entity."""
|
||||
entities = self.google_entity_configs
|
||||
entity = entities.get(entity_id, {})
|
||||
|
||||
changes = {}
|
||||
for key, value in (
|
||||
(PREF_OVERRIDE_NAME, override_name),
|
||||
(PREF_DISABLE_2FA, disable_2fa),
|
||||
(PREF_ALIASES, aliases),
|
||||
(PREF_SHOULD_EXPOSE, should_expose),
|
||||
(PREF_OVERRIDE_NAME, override_name),
|
||||
(PREF_DISABLE_2FA, disable_2fa),
|
||||
(PREF_ALIASES, aliases),
|
||||
(PREF_SHOULD_EXPOSE, should_expose),
|
||||
):
|
||||
if value is not _UNDEF:
|
||||
changes[key] = value
|
||||
@@ -106,42 +129,29 @@ class CloudPreferences:
|
||||
if not changes:
|
||||
return
|
||||
|
||||
updated_entity = {
|
||||
**entity,
|
||||
**changes,
|
||||
}
|
||||
updated_entity = {**entity, **changes}
|
||||
|
||||
updated_entities = {
|
||||
**entities,
|
||||
entity_id: updated_entity,
|
||||
}
|
||||
updated_entities = {**entities, entity_id: updated_entity}
|
||||
await self.async_update(google_entity_configs=updated_entities)
|
||||
|
||||
async def async_update_alexa_entity_config(
|
||||
self, *, entity_id, should_expose=_UNDEF):
|
||||
self, *, entity_id, should_expose=_UNDEF
|
||||
):
|
||||
"""Update config for an Alexa entity."""
|
||||
entities = self.alexa_entity_configs
|
||||
entity = entities.get(entity_id, {})
|
||||
|
||||
changes = {}
|
||||
for key, value in (
|
||||
(PREF_SHOULD_EXPOSE, should_expose),
|
||||
):
|
||||
for key, value in ((PREF_SHOULD_EXPOSE, should_expose),):
|
||||
if value is not _UNDEF:
|
||||
changes[key] = value
|
||||
|
||||
if not changes:
|
||||
return
|
||||
|
||||
updated_entity = {
|
||||
**entity,
|
||||
**changes,
|
||||
}
|
||||
updated_entity = {**entity, **changes}
|
||||
|
||||
updated_entities = {
|
||||
**entities,
|
||||
entity_id: updated_entity,
|
||||
}
|
||||
updated_entities = {**entities, entity_id: updated_entity}
|
||||
await self.async_update(alexa_entity_configs=updated_entities)
|
||||
|
||||
def as_dict(self):
|
||||
@@ -179,8 +189,7 @@ class CloudPreferences:
|
||||
@property
|
||||
def alexa_report_state(self):
|
||||
"""Return if Alexa report state is enabled."""
|
||||
return self._prefs.get(PREF_ALEXA_REPORT_STATE,
|
||||
DEFAULT_ALEXA_REPORT_STATE)
|
||||
return self._prefs.get(PREF_ALEXA_REPORT_STATE, DEFAULT_ALEXA_REPORT_STATE)
|
||||
|
||||
@property
|
||||
def google_enabled(self):
|
||||
@@ -215,11 +224,11 @@ class CloudPreferences:
|
||||
@property
|
||||
def _has_local_trusted_network(self) -> bool:
|
||||
"""Return if we allow localhost to bypass auth."""
|
||||
local4 = ip_address('127.0.0.1')
|
||||
local6 = ip_address('::1')
|
||||
local4 = ip_address("127.0.0.1")
|
||||
local6 = ip_address("::1")
|
||||
|
||||
for prv in self._hass.auth.auth_providers:
|
||||
if prv.type != 'trusted_networks':
|
||||
if prv.type != "trusted_networks":
|
||||
continue
|
||||
|
||||
for network in prv.trusted_networks:
|
||||
@@ -231,14 +240,15 @@ class CloudPreferences:
|
||||
@property
|
||||
def _has_local_trusted_proxies(self) -> bool:
|
||||
"""Return if we allow localhost to be a proxy and use its data."""
|
||||
if not hasattr(self._hass, 'http'):
|
||||
if not hasattr(self._hass, "http"):
|
||||
return False
|
||||
|
||||
local4 = ip_address('127.0.0.1')
|
||||
local6 = ip_address('::1')
|
||||
local4 = ip_address("127.0.0.1")
|
||||
local6 = ip_address("::1")
|
||||
|
||||
if any(local4 in nwk or local6 in nwk
|
||||
for nwk in self._hass.http.trusted_proxies):
|
||||
if any(
|
||||
local4 in nwk or local6 in nwk for nwk in self._hass.http.trusted_proxies
|
||||
):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user