#!/bin/sh

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

MODLOG=/tmp/$MOD_NAME/$MOD_NAME.log
EXE_CMD=/opt/$MOD_NAME/bin/mb2mqtt_exe

MODEXE=/opt/$MOD_NAME/bin/$MOD_NAME
POLLEXE=poll_mb2mqtt.sh
POLLDCMD=/opt/$MOD_NAME/bin/$POLLEXE

[ -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

do_start() {
  echo "start $MOD_NAME" >> $MODLOG
  $EXE_CMD
  RETVAL=$?
  if [ $RETVAL != 0 ]; then
    # disable check
    if [ $RETVAL = 1 ]; then
      RETVAL=0
    fi
    return $RETVAL
  fi
  poll=$(ps | grep -w $POLLEXE | grep -v grep | wc -l)
  [ "$poll" == "0" ] && {
    echo "start $POLLEXE" >> $MODLOG
    $POLLDCMD &
  }
  return $RETVAL
}

do_stop() {
  echo "killall $POLLEXE" >> $MODLOG
  killall $POLLEXE 2> /dev/null
  #sleep 1
  echo "killall $MOD_NAME" >> $MODLOG
  killall $MOD_NAME 2> /dev/null
  RETVAL=$?
  return $RETVAL
}

case "$1" in

  start|restart)
    [ -x "/sbin/hash_verify" ] && ! hash_verify $MOD_SETTINGS && exit 1
    if [ "$1" = "restart" ]; then
      do_stop
    fi
    do_start
    RETVAL=$?
    if [ $RETVAL = 0 ]; then echo "$1: done"; else echo "$1: failed"; fi
    exit $RETVAL
  ;;

  stop)
    do_stop
    RETVAL=$?
    if [ $RETVAL = 0 ]; then echo "$1: done"; else echo "$1: failed"; fi
    exit $RETVAL
  ;;

  defaults)
    echo "$MOD_NAME defaults" >> $MODLOG
    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|defaults}"
    exit 1
  ;;

esac
