""" Service management utilities for pyMC Repeater. Provides functions for service control operations like restart. """ import logging import subprocess from typing import Tuple logger = logging.getLogger("ServiceUtils") def restart_service() -> Tuple[bool, str]: """ Restart the pymc-repeater service via systemctl. Uses polkit for authentication (requires proper polkit rules configured). NoNewPrivileges systemd flag prevents sudo from working. Returns: Tuple[bool, str]: (success, message) """ try: result = subprocess.run( ['systemctl', 'restart', 'pymc-repeater'], capture_output=True, text=True, timeout=5 ) if result.returncode == 0: logger.info("Service restart command executed successfully") return True, "Service restart initiated" else: error_msg = result.stderr or "Unknown error" logger.error(f"Service restart failed: {error_msg}") return False, f"Restart failed: {error_msg}" except subprocess.TimeoutExpired: logger.warning("Service restart command timed out (service may be restarting)") return True, "Service restart initiated (timeout - likely restarting)" except FileNotFoundError: logger.error("systemctl not found") return False, "systemctl not available" except Exception as e: logger.error(f"Error executing restart command: {e}") return False, f"Restart command failed: {str(e)}"