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)