From e8eba43647a37d95154e32fcf9791ca60286e3b3 Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Sun, 20 Apr 2025 16:16:51 +0200 Subject: [PATCH] feat(dbus): Add avahi-daemon configuration to system services Introduce a `configure_avahi_daemon` function to manage the avahi-daemon service and socket with proper post actions. Update the interface configuration to enable avahi management using the new function. --- .../system_config/interface_config.py | 4 ++-- .../dbus_middleware1/system_config/revpi_config.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py b/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py index f3aec0f..fd53d14 100644 --- a/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py +++ b/src/revpi_middleware/dbus_middleware1/system_config/interface_config.py @@ -5,7 +5,7 @@ from collections import namedtuple from logging import getLogger -from .revpi_config import ConfigActions, configure_gui, simple_systemd +from .revpi_config import ConfigActions, configure_avahi_daemon, configure_gui, simple_systemd from ..dbus_helper import DbusInterface log = getLogger(__name__) @@ -85,6 +85,6 @@ AVAILABLE_FEATURES = { "revpipyload": FeatureFunction(simple_systemd, ["revpipyload.service"]), "bluetooth": False, "ieee80211": False, - "avahi": False, + "avahi": FeatureFunction(configure_avahi_daemon, []), "external-antenna": False, } diff --git a/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py b/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py index 40b57a7..95741dd 100644 --- a/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py +++ b/src/revpi_middleware/dbus_middleware1/system_config/revpi_config.py @@ -93,6 +93,18 @@ class RevPiConfig: return self._cm_with_wifi +def configure_avahi_daemon(action: ConfigActions): + return_value = simple_systemd(action, "avahi-daemon.service") + + # Post actions for avahi-daemon + if action in (ConfigActions.ENABLE, ConfigActions.DISABLE): + # Apply the enable/disable action to the avahi socket AFTER the service + # unit, because a connected socket could interrupt stop + simple_systemd(action, "avahi-daemon.socket") + + return return_value + + def configure_gui(action: ConfigActions): gui_available = access("/usr/bin/startx", X_OK)