From a5ed68b6413cdc49ff618b946435d0a1f93ad57d Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 14 May 2021 10:07:00 +0200 Subject: [PATCH] Cleanup websession with new aiohttp ssl (#2861) --- supervisor/addons/addon.py | 4 ++-- supervisor/api/proxy.py | 4 +--- supervisor/core.py | 1 - supervisor/coresys.py | 13 ------------- supervisor/homeassistant/api.py | 6 ++++-- supervisor/homeassistant/websocket.py | 4 ++-- tests/conftest.py | 5 +---- 7 files changed, 10 insertions(+), 27 deletions(-) diff --git a/supervisor/addons/addon.py b/supervisor/addons/addon.py index 5f49b17e2..2f8ef9d9f 100644 --- a/supervisor/addons/addon.py +++ b/supervisor/addons/addon.py @@ -477,8 +477,8 @@ class Addon(AddonModel): # Make HTTP request try: url = f"{proto}://{self.ip_address}:{port}{s_suffix}" - async with self.sys_websession_ssl.get( - url, timeout=WATCHDOG_TIMEOUT + async with self.sys_websession.get( + url, timeout=WATCHDOG_TIMEOUT, ssl=False ) as req: if req.status < 300: return True diff --git a/supervisor/api/proxy.py b/supervisor/api/proxy.py index d939bbb08..628e9263b 100644 --- a/supervisor/api/proxy.py +++ b/supervisor/api/proxy.py @@ -112,9 +112,7 @@ class APIProxy(CoreSysAttributes): url = f"{self.sys_homeassistant.api_url}/api/websocket" try: - client = await self.sys_websession_ssl.ws_connect( - url, heartbeat=30, verify_ssl=False - ) + client = await self.sys_websession.ws_connect(url, heartbeat=30, ssl=False) # Handle authentication data = await client.receive_json() diff --git a/supervisor/core.py b/supervisor/core.py index 00a31aadb..2e94bc2b3 100644 --- a/supervisor/core.py +++ b/supervisor/core.py @@ -272,7 +272,6 @@ class Core(CoreSysAttributes): await asyncio.wait( [ self.sys_websession.close(), - self.sys_websession_ssl.close(), self.sys_ingress.unload(), self.sys_hardware.unload(), ] diff --git a/supervisor/coresys.py b/supervisor/coresys.py index 9828afbb3..10611f37d 100644 --- a/supervisor/coresys.py +++ b/supervisor/coresys.py @@ -56,9 +56,6 @@ class CoreSys: # External objects self._loop: asyncio.BaseEventLoop = asyncio.get_running_loop() self._websession: aiohttp.ClientSession = aiohttp.ClientSession() - self._websession_ssl: aiohttp.ClientSession = aiohttp.ClientSession( - connector=aiohttp.TCPConnector(ssl=False) - ) # Global objects self._config: CoreConfig = CoreConfig() @@ -104,11 +101,6 @@ class CoreSys: """Return websession object.""" return self._websession - @property - def websession_ssl(self) -> aiohttp.ClientSession: - """Return websession object with disabled SSL.""" - return self._websession_ssl - @property def config(self) -> CoreConfig: """Return CoreConfig object.""" @@ -491,11 +483,6 @@ class CoreSysAttributes: """Return websession object.""" return self.coresys.websession - @property - def sys_websession_ssl(self) -> aiohttp.ClientSession: - """Return websession object with disabled SSL.""" - return self.coresys.websession_ssl - @property def sys_config(self) -> CoreConfig: """Return CoreConfig object.""" diff --git a/supervisor/homeassistant/api.py b/supervisor/homeassistant/api.py index 1713235c3..b864ee7a0 100644 --- a/supervisor/homeassistant/api.py +++ b/supervisor/homeassistant/api.py @@ -36,13 +36,14 @@ class HomeAssistantAPI(CoreSysAttributes): return with suppress(asyncio.TimeoutError, aiohttp.ClientError): - async with self.sys_websession_ssl.post( + async with self.sys_websession.post( f"{self.sys_homeassistant.api_url}/auth/token", timeout=30, data={ "grant_type": "refresh_token", "refresh_token": self.sys_homeassistant.refresh_token, }, + ssl=False, ) as resp: if resp.status != 200: _LOGGER.error("Can't update Home Assistant access token!") @@ -80,13 +81,14 @@ class HomeAssistantAPI(CoreSysAttributes): headers[hdrs.AUTHORIZATION] = f"Bearer {self.access_token}" try: - async with getattr(self.sys_websession_ssl, method)( + async with getattr(self.sys_websession, method)( url, data=data, timeout=timeout, json=json, headers=headers, params=params, + ssl=False, ) as resp: # Access token expired if resp.status == 401: diff --git a/supervisor/homeassistant/websocket.py b/supervisor/homeassistant/websocket.py index ca61770ae..c58a5fdfb 100644 --- a/supervisor/homeassistant/websocket.py +++ b/supervisor/homeassistant/websocket.py @@ -60,7 +60,7 @@ class WSClient: ) -> "WSClient": """Create an authenticated websocket client.""" try: - client = await session.ws_connect(url) + client = await session.ws_connect(url, ssl=False) except aiohttp.client_exceptions.ClientConnectorError: raise HomeAssistantWSError("Can't connect") from None @@ -96,7 +96,7 @@ class HomeAssistantWebSocket(CoreSysAttributes): await self.sys_homeassistant.api.ensure_access_token() client = await WSClient.connect_with_auth( - self.sys_websession_ssl, + self.sys_websession, f"{self.sys_homeassistant.api_url}/api/websocket", self.sys_homeassistant.api.access_token, ) diff --git a/tests/conftest.py b/tests/conftest.py index 0709bffc7..f0ca3c17a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,4 @@ """Common test functions.""" -import asyncio from pathlib import Path import re from unittest.mock import AsyncMock, MagicMock, PropertyMock, patch @@ -164,9 +163,7 @@ async def coresys(loop, docker, network_manager, aiohttp_client) -> CoreSys: yield coresys_obj - await asyncio.gather( - coresys_obj.websession.close(), coresys_obj.websession_ssl.close() - ) + await coresys_obj.websession.close() @pytest.fixture