From d4f486864f40495c63f785f8db6031fb2bf97a11 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 29 Feb 2020 11:23:36 +0100 Subject: [PATCH] Make audio socket RO and aware of restarts (#1545) --- supervisor/audio.py | 25 +------------------------ supervisor/data/pulse-client.tmpl | 2 +- supervisor/docker/addon.py | 6 +++--- 3 files changed, 5 insertions(+), 28 deletions(-) diff --git a/supervisor/audio.py b/supervisor/audio.py index 0ffd7b9f2..6a6c0e4d5 100644 --- a/supervisor/audio.py +++ b/supervisor/audio.py @@ -35,7 +35,7 @@ class Audio(JsonConfig, CoreSysAttributes): @property def path_extern_pulse(self) -> Path: """Return path of pulse socket file.""" - return self.sys_config.path_extern_audio.joinpath("external/pulse.sock") + return self.sys_config.path_extern_audio.joinpath("external") @property def path_extern_asound(self) -> Path: @@ -157,8 +157,6 @@ class Audio(JsonConfig, CoreSysAttributes): _LOGGER.error("Can't start Audio plugin") raise AudioError() from None - await self._restart_audio_addons() - async def start(self) -> None: """Run CoreDNS.""" # Start Instance @@ -169,8 +167,6 @@ class Audio(JsonConfig, CoreSysAttributes): _LOGGER.error("Can't start Audio plugin") raise AudioError() from None - await self._restart_audio_addons() - def logs(self) -> Awaitable[bytes]: """Get CoreDNS docker logs. @@ -221,22 +217,3 @@ class Audio(JsonConfig, CoreSysAttributes): default_source=input_profile, default_sink=output_profile, ) - - async def _restart_audio_addons(self): - """Restart all Add-ons they can be connect to unix socket.""" - tasks: List[Awaitable[None]] = [] - - # Find all Add-ons running with audio - for addon in self.sys_addons.installed: - if not addon.with_audio: - continue - if await addon.state() != STATE_STARTED: - continue - tasks.append(addon.restart()) - - if not tasks: - return - - # restart - _LOGGER.info("Restart all Add-ons attach to pulse server: %d", len(tasks)) - await asyncio.wait(tasks) diff --git a/supervisor/data/pulse-client.tmpl b/supervisor/data/pulse-client.tmpl index 9488d23cd..12aa9cb8f 100644 --- a/supervisor/data/pulse-client.tmpl +++ b/supervisor/data/pulse-client.tmpl @@ -20,7 +20,7 @@ {% if default_sink %}default-sink = {{ default_sink }}{% endif %} {% if default_source %}default-source = {{ default_source }}{% endif %} -default-server = unix://run/pulse.sock +default-server = unix://run/audio/pulse.sock ; default-dbus-server = autospawn = no diff --git a/supervisor/docker/addon.py b/supervisor/docker/addon.py index 17e25a2ff..9be6ff75d 100644 --- a/supervisor/docker/addon.py +++ b/supervisor/docker/addon.py @@ -298,7 +298,7 @@ class DockerAddon(DockerInterface): # Host D-Bus system if self.addon.host_dbus: - volumes.update({"/run/dbus": {"bind": "/run/dbus", "mode": "rw"}}) + volumes.update({"/run/dbus": {"bind": "/run/dbus", "mode": "ro"}}) # Configuration Audio if self.addon.with_audio: @@ -309,8 +309,8 @@ class DockerAddon(DockerInterface): "mode": "ro", }, str(self.sys_audio.path_extern_pulse): { - "bind": "/run/pulse.sock", - "mode": "rw", + "bind": "/run/audio", + "mode": "ro", }, str(self.sys_audio.path_extern_asound): { "bind": "/etc/asound.conf",