HEX
Server: LiteSpeed
System: Linux php-prod-3.spaceapp.ru 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: sarli3128 (1010)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/imunify360/venv/lib64/python3.11/site-packages/defence360agent/subsys/systemd_notifier.py
"""Notify systemd about process state"""
import logging
import os

from defence360agent.contracts.config import ANTIVIRUS_MODE


logger = logging.getLogger(__name__)


class AgentState(object):
    """Allowed agent state for notifying systemd."""

    READY = "READY=1"
    STARTING = "STATUS=Starting main process"
    MIGRATING = "STATUS=Applying database migrations"
    DAEMONIZED = "STATUS=Demonized"


def notify(state):
    """
    Send notification to systemd, allowed formats described here
    https://www.freedesktop.org/software/systemd/man/sd_notify.html

    For example:

        notify("STATUS=Almost ready")

    """
    if ANTIVIRUS_MODE:
        return
    try:
        import sdnotify
    # We've made this import inside function deliberately because some
    # systems don't have systemd and stdnotify thus
    except ImportError as e:
        logger.info("Can't import sdnotify, reason: %s", e)
    else:
        if "NOTIFY_SOCKET" not in os.environ:
            logger.warning(
                "$NOTIFY_SOCKET environment variable is not set. It is set by"
                " service manager for supervised processes for status and"
                " start-up completion notification. Nowhere to send the"
                " status."
            )
        else:
            try:
                n = sdnotify.SystemdNotifier(debug=True)
                n.notify(state)

            except Exception as e:  # NOSONAR
                logger.exception(
                    "some problem has occurred during notifying of"
                    " systemd: %s",
                    e,
                )