#!/bin/sh

# Basic support for IRIX style chkconfig
# chkconfig: 2345 50 30
# description: Kaspersky Anti-Virus server

# Basic support for the Linux Standard Base Specification 1.0.0 (to be used by
# insserv for exemple)
### BEGIN INIT INFO
# Provides: aveserver
# Required-Start: $network $syslog
# Required-Stop:
# Default-Start:
# Default-Stop:
# Description: Kaspersky Anti-Virus server
### END INIT INFO

# PROVIDE: aveserver
# REQUIRE: NETWORK 
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# aveserver_enable (bool):         Set to NO by default.
#                               Set it to YES to enable fusefs.
#


AVESERVER_BIN=/usr/local/kav/5.5/kav4mailservers/bin/aveserver
KAV_CONF=/usr/local/kav/5.5/kav4mailservers/etc/kavdaemon.conf

. /etc/rc.subr

name="aveserver"
rcvar=${name}_enable

extra_commands="status reload"

start_cmd="kav_start"
stop_cmd="kav_stop"
status_cmd="kav_status"
reload_cmd="kav_reload"

get_avpid() {
  if [ -n "$KAV_CONF" -a -s $KAV_CONF ]; then
      AVPID=`grep "^\s*PidPath=" $KAV_CONF | cut -d= -f2`
      if [ -n "$AVPID" ] ; then
        PID=`head $AVPID 2>/dev/null`
	if [ -n "$PID" ] ; then
	    echo $PID
	    return 0 
	else
    	    return 1 
	fi
      else
        return 2
      fi
    else
      return 3 
  fi 
}

error_msg() {
   case $1 in
      1) echo "PID file is empty" ;;
      2) echo "Can't find pid file $AVPID";;
      3) echo "Config file not found";; 
   esac
}

kav_start() {
  if [ -x $AVESERVER_BIN ]; then
      if [ -n $KAV_CONF ]; then 
    	$AVESERVER_BIN -c $KAV_CONF
      else 
        $AVESERVER_BIN 
      fi
      
      if [ $? -eq 0 ]; then
          echo "aveserver was started"
        else 
          echo "aveserver couldn't be started"
	  exit 1 
      fi
    else 
      echo "$AVESERVER_BIN was not found"
      exit 2
  fi  
  
}

kav_stop() {
 
  pid=`get_avpid`
  rc=$?

  if [ $rc -eq 0 ] ; then
    kill -TERM $pid 2> /dev/null
    if [ $? -eq 0 ]; then
        echo "aveserver was stopped"
        return 0
    fi
  else 
    error_msg $rc
  fi
  echo "aveserver couldn't be stopped" 
  return 1 
}

kav_status() {
    pid=`get_avpid`
    rc=$?

    if [ $rc -eq 0 ] ; then
	kill -0 $pid 2>/dev/null
	if [ $? -eq 0 ] ; then
	    status="running"
		rc=0
	else
	    status="dead"
		rc=1
	fi
    else
        error_msg $rc
	status="stopped"
	rc=3
    fi
    echo "aveserver is $status"
    exit $rc 
}

kav_reload() {
  pid=`get_avpid`
  rc=$?

  if [ $rc -eq 0 ] ; then
    kill -HUP $pid 2> /dev/null
    if [ $? -eq 0 ]; then
        echo "aveserver was reloaded"
        exit 0
    fi
  else
    error_msg $rc
  fi
  echo "aveserver couldn't be reloaded"
  exit 1
}

load_rc_config $name

: ${aveserver_enable="NO"}

run_rc_command "$1"
