#! /bin/sh
# Copyright (c) 1995-2001 SuSE GmbH Nuernberg, Germany
#               2002,2003 SuSE Linux AG, Nuernberg, Germany
#
# Author: Frank Lemser 
#	  Wolfgang Rosenauer, 2000 - 2003
#
# /etc/init.d/ups
# /usr/sbin/rcups
#
### BEGIN INIT INFO
# Provides:	  ups
# Required-Start: $network $remote_fs $syslog 
# Required-Stop:
# X-UnitedLinux-Should-Start: setserial
# Default-Start:  3 5
# Default-Stop:   0 1 2 6
# Description:    UPS monitoring software (remote/local)
### END INIT INFO

. /etc/rc.status
. /etc/sysconfig/smartups

DRIVERPATH=/usr/lib/ups/driver
POWERDOWNFLAG=/etc/killpower

test -x /usr/sbin/upsd || exit 5
test -x /usr/sbin/upsmon || exit 5

rc_reset
case "$1" in
    start)
        if [ "$SMARTUPS_MASTER" = "localhost" ]; then
          echo "Starting service NUT: "
          echo "-> Starting UPS driver: "
          $DRIVERPATH/upsdrvctl start || rc_failed
          sleep 2
          rc_status -v && \
            (echo "-> Starting upsd: "; startproc /usr/sbin/upsd || rc_failed)
          rc_status -v
          checkproc /usr/sbin/upsd && \
            (echo "-> Starting upsmon: "; startproc /usr/sbin/upsmon || rc_failed; sleep 2)
          rc_status -v
          if [ "x$UPSLOG_INTERVAL" != "x" ]; then
             checkproc /usr/sbin/upsmon && \
               (echo "-> Starting upslog: "; startproc /usr/bin/upslog localhost /var/log/ups.log \
                   $UPSLOG_INTERVAL || rc_failed)
          rc_status -v
          fi
        else 
          echo -n "Starting UPS monitor (slave): "
          startproc /usr/sbin/upsmon
          sleep 2
          rc_status -v
        fi
	;;
    stop)
        echo -n "Shutting down NUT:"
        killproc -TERM /usr/sbin/upsmon || rc_failed
        if [ $SMARTUPS_MASTER = "localhost" ]; then
          killproc -TERM /usr/sbin/upsd || rc_failed
	  $DRIVERPATH/upsdrvctl stop || rc_failed
          if [ "x$UPSLOG_INTERVAL" != "x" ]; then
	    killproc -TERM /usr/bin/upslog || rc_failed
          fi
	fi
        rc_status -v 
        ;;
    try-restart)
	$0 status >/dev/null &&  $0 restart
        rc_status
	;;
    restart)
	$0 stop
	$0 start
	rc_status
	;;
    force-reload)
	echo -n "Restart service NUT"
        $0 stop  &&  $0 start
        rc_status
	;;
    reload)
	rc_failed 3
	rc_status -v
	exit 3
	;;
    status)
	echo "Checking for NUT:"
	#echo -n "ups-driver: "
        #$DRIVERPATH/upsdrvctl status || rc_failed
        #rc_status -v
        echo -n "/usr/sbin/upsd: "
	checkproc /usr/sbin/upsd 
	rc_status -v 
	echo -n "/usr/sbin/upsmon: "
        checkproc /usr/sbin/upsmon 
	rc_status -v
	echo -n "/usr/bin/upslog: "
	checkproc /usr/bin/upslog
	rc_status -v
	;;
    powerdown)
	sync &
        if [ -f $POWERDOWNFLAG ]; then
	  if [ "$SMARTUPS_MASTER" = "localhost" ]; then
 	    echo -n "Instructing UPS to powerdown: "
	    $DRIVERPATH/upsdrvctl shutdown
	  else
	    echo "Cannot instruct UPS to powerdown"
	  fi
	fi
    ;;
    *)
        echo "Usage: $0 {start|stop|try-restart|restart|force-reload|reload|status|powerdown}"
        exit 1
	;;
esac
rc_exit
