#!/bin/bash
#
# ypcontrol
#
# Control the netconfd-pro server that is running
#
# yp-control start | stop | reset | reload | status
#


function show_usage {
    echo "Usage: ypcontrol <action>"
    echo "Control the netconfd-pro server"
    echo ""
    echo "ypcontrol cannot be used when the server is initiated using"
    echo "sudo privileges and the --fileloc-fhs=true flag is set."
    echo ""
    echo "  <action> = start | stop | reset | reload | status"
    echo "Example: ypcontrol stop"
}


function start_server {
    /usr/sbin/netconfd-pro &
}

function stop_server {
   PID=$1
   kill -SIGTERM $PID
}

function reset_server {
   PID=$1
   kill -SIGHUP $PID
}

function reload_server {
   PID=$1
   kill -SIGUSR1 $PID
}


function control_server {

    PROGNAME=$1
    ACTION=$2

    #echo "PROGNAME=$PROGNAME"
    #echo "ACTION=$ACTION"

    PIDFILE=$HOME/.yumapro/$PROGNAME.pid

    #echo "Checking PID file $PIDFILE"

    if [ ! -f $PIDFILE ]
    then
      echo "PID file for $PROGNAME not found"
      PID=0
   else
     PID=`cat $PIDFILE`
   fi

   #echo "PID='$PID'"

   case $ACTION in
       'start')
           if [ "$PID" == "0" ]
           then
             start_server
             echo ""
           else
             echo "netconfd-pro server already running as PID $PID"
           fi
           ;;
       'stop')
           if [ "$PID" != "0" ]
           then
             stop_server $PID
           else
             echo "netconfd-pro server is not running"
           fi
           ;;
       'reset')
           if [ "$PID" != "0" ]
           then
             reset_server $PID
           else
             echo "netconfd-pro server is not running"
           fi
           ;;
       'reload')
           if [ "$PID" != "0" ]
           then
             reload_server $PID
           else
             echo "netconfd-pro server is not running"
           fi
           ;;
       'status')
           if [ "$PID" != "0" ]
           then
             echo "netconfd-pro server is running as PID $PID"
           else
             echo "netconfd-pro server is not running"
           fi
           ;;
       *)
         show_usage
         exit 1
         ;;
   esac

}


# main entry point

if [ -z "$HOME" ]; then
    echo "HOME not set. Need to export HOME environment variable."
    exit 1
fi

if [ ! -d "$HOME/.yumapro" ]; then
    echo "$HOME/.yumapro directory not found."
    exit 1
fi

if [ $# != 1 ]; then
    show_usage
    exit 1
fi

control_server netconfd-pro $1
