#!/bin/sh

MOD_TITLE=MQTT_Manager
MOD_NAME=mqttmgr
MOD_DEFAULTS=/opt/$MOD_NAME/etc/defaults
MOD_SETTINGS=/opt/$MOD_NAME/etc/settings
[ -L "$MOD_SETTINGS" ] && MOD_SETTINGS=`readlink $MOD_SETTINGS`

DAEMON_NAME=mqttmgr
DAEMON_TMP=/run/$MOD_NAME
DAEMON_BIN=/opt/$MOD_NAME/bin/$DAEMON_NAME
GPSD_INIT=/opt/gps/etc/init

[ -f "$MOD_SETTINGS" ] || cp $MOD_DEFAULTS $MOD_SETTINGS
[ -x "/sbin/hash_verify" ] && [ ! -f "$MOD_SETTINGS.hash" ] && cp $MOD_DEFAULTS.hash $MOD_SETTINGS.hash

. $MOD_SETTINGS

case "$1" in

  start)
    [ -x "/sbin/hash_verify" ] && ! hash_verify $MOD_SETTINGS && exit 1
    echo -n "Starting $MOD_TITLE..."
    if [ "$MOD_MQTTMGR_ENABLED" != "1" ]; then
      echo "skipped"
      exit 0
    fi
    mkdir -p $DAEMON_TMP
    if [ -n "$MOD_MQTTMGR_CACERT" ]; then
      decode $MOD_MQTTMGR_CACERT >$DAEMON_TMP/ca.pem
    else
      rm -f $DAEMON_TMP/ca.pem
    fi
    if [ -n "$MOD_MQTTMGR_LOCALCERT" ]; then
      decode $MOD_MQTTMGR_LOCALCERT >$DAEMON_TMP/cert.pem
    else
      rm -f $DAEMON_TMP/cert.pem
    fi
    if [ -n "$MOD_MQTTMGR_LOCALKEY" ]; then
      decode $MOD_MQTTMGR_LOCALKEY >$DAEMON_TMP/key.pem
    else
      rm -f $DAEMON_TMP/key.pem
    fi
    if [ -n $MOD_MQTTMGR_MON_GNSS_DATA -a -x $GPSD_INIT ]; then
      $GPSD_INIT start >/dev/null
    fi
    $DAEMON_BIN &
    echo "done"
    exit 0;
  ;;

  stop)
    echo -n "Stopping $MOD_TITLE..."
    killall -q -SIGTERM $DAEMON_NAME
    rm -f $DAEMON_TMP/ca.pem
    rm -f $DAEMON_TMP/cert.pem
    rm -f $DAEMON_TMP/key.pem
    echo "done"
    exit $?;
  ;;

  restart)
    $0 stop
    $0 start
  ;;

  status)
    echo -n "$MOD_TITLE is "
    killall -0 $DAEMON_NAME 2>/dev/null
    RETVAL=$?
    if [ $RETVAL = 0 ]; then echo "running"; else echo "stopped"; fi
    exit $RETVAL
  ;;

  defaults)
    cp $MOD_DEFAULTS $MOD_SETTINGS 2>/dev/null
    [ -f "$MOD_DEFAULTS.hash" ] && cp $MOD_DEFAULTS.hash $MOD_SETTINGS.hash
    exit 0
  ;;

  *)
    echo "Usage: $0 {start|stop|restart|status|defaults}"
    exit 1
  ;;

esac
