#!/bin/sh

### BEGIN INIT INFO
# Provides: resilio-connect-management-console
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: daemonized version of Resilio Connect Management Console
# Description: Starts the resilio-connect-management-console daemon.
### END INIT INFO

set -e

USER="rslconsole"
PKG_NAME="resilio-connect-management-console"
PRODUCT_NAME="Resilio Connect Management Console"
UMASK="0002"

SRVCTRL_DIR="/opt/${PKG_NAME}"
STORAGE_PATH="/var/opt/${PKG_NAME}"
LAUNCHER="${SRVCTRL_DIR}/srvctrl"

START_DEB_SYS_CMD="start-stop-daemon --start --background --name ${USER} --chuid ${USER} --user ${USER} --umask ${UMASK} --exec ${LAUNCHER} -- 'run --appdata ${STORAGE_PATH}'"
STOP_DEB_SYS_CMD="start-stop-daemon --stop --oknodo --user ${USER} --retry 1"

START_RPM_SYS_CMD="${LAUNCHER} start --appdata ${STORAGE_PATH}"
STOP_RPM_SYS_CMD="${LAUNCHER} stop --appdata ${STORAGE_PATH}"

START_CMD=""
STOP_CMD=""

deprecation_warning()
{
    COMMAND=$1
    printf "\033[1;33mWARNING: init.d script is deprecated and will be removed in a future release.\033[0m\n"
    printf "\033[1;33mPlease use '%s' instead.\033[0m\n" "${COMMAND}"
    printf "\033[1;33mGet help: https://helpfiles.resilio.com/ConnectTicket\033[0m\n"
}

check_superuser_permissions() {
    if [ "$(id -u)" -ne 0 ]; then
        if ! which sudo >/dev/null 2>&1; then
            run_as="root"
        else
            run_as="root or via sudo"
        fi
        printf "\033[1;33mError: this script must be run as %s.\033[0m\n" "${run_as}"
        deprecation_warning systemctl
        exit 1
    fi
}

init_sys()
{
    if [ -x /sbin/start-stop-daemon ]; then
        START_CMD="${START_DEB_SYS_CMD}"
        STOP_CMD="${STOP_DEB_SYS_CMD}"
    else
        START_CMD="${START_RPM_SYS_CMD}"
        STOP_CMD="${STOP_RPM_SYS_CMD}"
    fi
}

start()
{
  eval " ${START_CMD}"
}

stop()
{
  eval " ${STOP_CMD}"
}

check_superuser_permissions
init_sys

case "$1" in
  start)
    start
    echo "${PRODUCT_NAME} started"
    deprecation_warning "systemctl start ${PKG_NAME}"
    ;;
  stop)
    stop
    echo "${PRODUCT_NAME} stopped"
    deprecation_warning "systemctl stop ${PKG_NAME}"
    ;;
  restart)
      stop
      start
      echo "${PRODUCT_NAME} restarted"
      deprecation_warning "systemctl restart ${PKG_NAME}"
    ;;
  *)
    echo "Usage: /etc/init.d/${PKG_NAME} {start|stop|restart}"
    echo "Or: service ${PKG_NAME} {start|stop|restart}"
    deprecation_warning "systemctl {start|stop|restart} ${PKG_NAME}"
    exit 1
    ;;
esac

exit 0
