From 9497f85db91c4454e1b5465cfddb3a4fe512ee1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 28 Jul 2021 14:46:37 +0200 Subject: [PATCH] Use custom user agent string for aiohttp (#3033) --- supervisor/const.py | 4 ++++ supervisor/coresys.py | 8 +++++++- tests/test_coresys.py | 12 ++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/supervisor/const.py b/supervisor/const.py index 8997e3854..6e502f7a9 100644 --- a/supervisor/const.py +++ b/supervisor/const.py @@ -2,8 +2,12 @@ from enum import Enum from ipaddress import ip_network from pathlib import Path +from sys import version_info as systemversion + +from aiohttp import __version__ as aiohttpversion SUPERVISOR_VERSION = "DEV" +SERVER_SOFTWARE = f"HomeAssistantSupervisor/{SUPERVISOR_VERSION} aiohttp/{aiohttpversion} Python/{systemversion[0]}.{systemversion[1]}" URL_HASSIO_ADDONS = "https://github.com/home-assistant/addons" URL_HASSIO_APPARMOR = "https://version.home-assistant.io/apparmor.txt" diff --git a/supervisor/coresys.py b/supervisor/coresys.py index 253d3dcda..719001cde 100644 --- a/supervisor/coresys.py +++ b/supervisor/coresys.py @@ -5,13 +5,14 @@ import asyncio from datetime import datetime import logging import os +from types import MappingProxyType from typing import TYPE_CHECKING, Any, Callable, Coroutine, Optional, TypeVar import aiohttp import sentry_sdk from .config import CoreConfig -from .const import ENV_SUPERVISOR_DEV +from .const import ENV_SUPERVISOR_DEV, SERVER_SOFTWARE from .docker import DockerAPI from .utils.dt import UTC, get_time_zone @@ -88,6 +89,11 @@ class CoreSys: self._jobs: Optional[JobManager] = None self._security: Optional[Security] = None + # Set default header for aiohttp + self._websession._default_headers = MappingProxyType( + {aiohttp.hdrs.USER_AGENT: SERVER_SOFTWARE} + ) + @property def dev(self) -> bool: """Return True if we run dev mode.""" diff --git a/tests/test_coresys.py b/tests/test_coresys.py index e1dd01228..4a4fc04c8 100644 --- a/tests/test_coresys.py +++ b/tests/test_coresys.py @@ -2,6 +2,8 @@ from datetime import timedelta +from aiohttp.hdrs import USER_AGENT + from supervisor.coresys import CoreSys from supervisor.utils.dt import utcnow @@ -29,3 +31,13 @@ def test_now(coresys: CoreSys): assert zurich != utc assert zurich - utc <= timedelta(hours=2) + + +def test_custom_user_agent(coresys: CoreSys): + """Test custom useragent.""" + assert ( + "HomeAssistantSupervisor/DEV" + in coresys.websession._default_headers[ # pylint: disable=protected-access + USER_AGENT + ] + )