#! /bin/bash

## Description: Startscript for BlockBadIP

## Go has not safe fork function, because of it run bbip like daemon with nohup  and
## edirect stdout/stderr to logfile

## If need adjust variables in /etc/bbip/setvar
SERVERBIN="/usr/local/bin/bbip"
SERVEROPT="-l /var/log/bbip/bbip.log"
SERVEROUT="/var/log/bbip/bbip.log"
SERVERNAME="Block-Bad-IP"

## If exists read files with variables
SETVAR="/etc/bbip/setvar"
if [ -e $SETVAR ] ; then
    . $SETVAR
fi

## Get PID
PID=`ps -ef | grep -e "$SERVERBIN $SERVEROPT" | grep -v grep | tr -s "  " " " | cut -d " " -f 2`

case "$1" in
'start')
      if [ "$PID" == "" ] ; then
          echo Starting $SERVERNAME
          nohup $SERVERBIN $SERVEROPT 1>>$SERVEROUT 2>>$SERVEROUT &
          
          sleep 1
          PID=`ps -ef | grep -e "$SERVERBIN $SERVEROPT" | grep -v grep | tr -s "  " " " | cut -d " " -f 2`
          
          if [ "$PID" == "" ] ; then
              echo $SERVERNAME is not running
          else
              echo $SERVERNAME is running PID $PID
          fi
          
      else
          echo $SERVERNAME ist already running PID $PID
      fi 
      ;;
'stop')
      if [ "$PID" == "" ] ; then
          echo $SERVERNAME is not running
      else
          echo Stopping $SERVERNAME PID $PID
          kill $PID
      fi 
      ;;
'restart')
      if [ "$PID" == "" ] ; then
          echo $SERVERNAME is not running
          
      else
          echo Stopping $SERVERNAME PID $PID
          kill $PID
          
          sleep 2
          
          echo Starting $SERVERNAME
          $SERVERBIN $SERVEROPT
          PID=`ps -ef | grep -e "$SERVERBIN $SERVEROPT" | grep -v grep | tr -s "  " " " | cut -d " " -f 2`
          sleep 1
          
          if [ "$PID" == "" ] ; then
              echo $SERVERNAME is not running
          else
              echo $SERVERNAME is running PID $PID
          fi
      fi
      ;;
'status')
      if [ "$PID" == "" ] ; then
          echo $SERVERNAME is not running
      else
          echo $SERVERNAME is running PID $PID
      fi 
      ;;
*)
      echo "Usage: $0 {start | restart | stop | status }"
      ;;
esac

