#!/bin/sh
# Standard Synology SDK skeleton package lifecycle script - see
# https://help.synology.com/developer-guide/getting_started/first_package.html
#
# Runs the headless agent_server binary as a background process independent
# of any DSM desktop session - closing the web UI tab must never stop it, so
# there is deliberately no dependency here on a browser or DSM's own X11/
# desktop layer (this package has neither).

PACKAGE="invlocal-agent"
INSTALL_DIR="/var/packages/${PACKAGE}/target"
VAR_DIR="/var/packages/${PACKAGE}/var"
PID_FILE="${VAR_DIR}/${PACKAGE}.pid"
LOG_FILE="${VAR_DIR}/${PACKAGE}.log"
DAEMON="${INSTALL_DIR}/agent_server"

is_running() {
  [ -f "${PID_FILE}" ] && kill -0 "$(cat "${PID_FILE}")" 2>/dev/null
}

start_daemon() {
  mkdir -p "${VAR_DIR}"
  if is_running; then
    exit 0
  fi
  "${DAEMON}" \
    --data-dir "${VAR_DIR}" \
    --web-root "${INSTALL_DIR}/web" \
    >>"${LOG_FILE}" 2>&1 &
  echo $! >"${PID_FILE}"
}

stop_daemon() {
  if [ -f "${PID_FILE}" ]; then
    kill "$(cat "${PID_FILE}")" 2>/dev/null
    rm -f "${PID_FILE}"
  fi
}

case "$1" in
  start)
    start_daemon
    ;;
  stop)
    stop_daemon
    ;;
  status)
    if is_running; then
      exit 0
    else
      exit 1
    fi
    ;;
  *)
    echo "Usage: $0 {start|stop|status}" >&2
    exit 1
    ;;
esac

exit 0
