#!/bin/sh
export NODE_PATH=/usr/lib/node_modules
ADDONDIR=/usr/local/addons/mediola
ADDONNAME=neo_server
CONFIGDIR=/usr/local/etc/config
HOMEPATH=$ADDONDIR/neo_server/
DAEMON=node
DAEMON_ARGS=${HOMEPATH}/automation.js
PIDFILE=/var/run/neo_server.pid


log() {
  local now=$(date)
  echo "[$now] $CONFIGDIR/rc.d/97NeoServer $@"
  echo "[$now] $CONFIGDIR/rc.d/97NeoServer $@" >> /var/log/neo_server_boot.log
}

if [ "$(cat /usr/local/crontabs/root | grep $ADDONDIR/bin/watchdog)" == "" ] ;then
  echo "*/5 * * * * $ADDONDIR/bin/watchdog" >> /usr/local/crontabs/root
fi

# change to addon directory
cd ${HOMEPATH}

do_start()
{
  log "starting neo_server ..."
  start-stop-daemon --start --quiet --make-pidfile --background --nicelevel -10 --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS
  sleep 1
  if [ -f "$PIDFILE" ]; then
    PID=$(cat $PIDFILE)
    log "neo_server started (pid=$PID)"
  else
    log "neo_server started failed"
  fi
}

do_stop()
{
  log "stopping neo server ..."
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
	if [ -f "$PIDFILE" ]; then
		rm $PIDFILE
	fi
  log "neo_server stopped"
}

check_status()
{
  if [ ! -f "$PIDFILE" ]; then
    log "no pid file $PIDFILE"
    return -1
  fi
  local ps=$(cat $PIDFILE)
  if [ -z "$ps" ]; then
    log "pid file $PIDFILE empty"
    return -2
  fi
  if [ ! -d "/proc/$ps" ]; then
    log "no running process with pid $ps"
    return -3
  fi
  log "neo_server is running (pid=$ps)"
  return 0
}

case "$1" in
  ""|start)
    log "start"
	  if [ -f $ADDONDIR/Disabled ];then
		  log "neo server disabled"
	  else
   		do_start
	  fi
    ;;
  info)
    if [ -d $ADDONDIR ]; then
      VER=$(cat $ADDONDIR/VERSION)
      echo "Version: $VER"
      echo "Info: <b>mediola NEO SERVER CCU Addon</b><br>"
      echo "Info: Copyright (c) 2017-2022 mediola connected living AG<br>"
      echo "Info: <a href='https://www.mediola.com'>mediola connected living AG</a>"
      echo "Name: NEO SERVER"
      echo "Operations: uninstall restart"
      echo "Config-Url: /addons/mediola/index.html"
      echo "Update: /addons/mediola/update-check.cgi"
    fi
    ;;
  stop)
	  do_stop
    ;;
  restart)
		do_stop
    sleep 1
		do_start
    ;;
  uninstall)
    do_stop
    rm -rf $ADDONDIR
    rm -rf $CONFIGDIR/addons/mediola
    rm -rf $CONFIGDIR/addons/www/mediola
    rm -f $CONFIGDIR/rc.d/97NeoServer
    # do not install the neo server after user uninstall
    touch /etc/config/neoDisabled
    ;;
  status)
    check_status
    exit $?
    ;;
  *)
    echo "usage: $ADDONNAME [info|start|stop|restart|uninstall|status]"
	  exit 1
    ;;
esac

exit 0
