#!/bin/sh
#
# VMTux
#
#
PATH=/bin:/sbin

umask 022

if [ "$(id -u)" -ne 0 ]; then echo "This command can only be used by root" >&2 ; exit 1; fi

start()
{
  echo -n "Starting ${SERVICENAME}... "
  ${SERVICE} &  >/dev/null 2>&1
  RETVAL=$?
  PID=$!
  if [ $RETVAL != 0 ]; then
    echo "error"
  else
    echo $PID > ${PIDFILE}
    echo
    echo "Started successfully"
  fi
}

stop()
{
  echo -n "Stopping ${SERVICENAME}... "
  if [ -f  ${PIDFILE} ]; then
    pid=$(cat ${PIDFILE})
    if [ -d /proc/${pid}/ ]; then
      kill -QUIT $pid 2>/dev/null
      RETVAL=$?
      if [ $RETVAL != 0 ]; then
        echo "error"
      else
        rm -f ${PIDFILE}
	echo
	echo "Stopped sucessfully"
      fi
    fi
  fi
}

status()
{
  if [ ! -f ${PIDFILE} ]; then
    echo "${SERVICENAME} is stopped"
  else
    pid=$(cat ${PIDFILE})
    if [ -d /proc/${pid}/ ]; then
      echo "${SERVICENAME} is running"
    else
      echo "${SERVICENAME} is stopped"
      rm -f ${PIDFILE}
    fi
  fi
}

reload()
{
  echo -n "Reloading (HUP) ${SERVICENAME}..."
  if [ -f ${PIDFILE} ]; then
    kill -HUP $(cat ${PIDFILE}) 2>/dev/null
    if [ $? -ne 0 ]; then echo "error" ; fi
  fi
  sleep 1
  if [ -f ${PIDFILE} ]; then
    pid=$(cat ${PIDFILE})
    if [ -d /proc/${pid}/ ]; then exit 0 ; fi
  fi
  echo "process has died"
  start
}

restart()
{
    echo "Restarting ${SERVICENAME}"
    stop
    sleep 1
    start
}

SERVICENAME=$1

if [ -x ${SERVICENAME} ];then
  SERVICE=${SERVICENAME}
fi

if [ ! -x ${SERVICE} ];then
  SERVICE=/usr/local/bin/${SERVICENAME}
fi

if [ ! -x ${SERVICE} ];then
  SERVICE=/usr/local/sbin/${SERVICENAME}
fi

if [ ! -x ${SERVICE} ];then
  echo "Service ${SERVICENAME} not found" ; exit 1
fi

SERVICENAME=$(basename ${SERVICE})
PIDFILE=/var/run/${SERVICENAME}.pid
COMMAND=$2

case "${COMMAND}" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    reload)
        reload
    ;;
    restart)
        restart
    ;;
    status)
        status
    ;;
    *)
        echo "Usage: $0 <service> {start|stop|status|reload|restart}"
    ;;
esac

exit 0
