#!/bin/sh
############################################################################## 
# Datei		:	/etc/init.d/smartups
# Beschreibung 	:	Starten/Benden des UPS-Dienstes
# Datum		:	
# orig Autor	:       Based on /etc/init.d/lpd
# orig Autor	:       Taken in part from Miquel Smoorenburg's bcheckrc
############################################################################## 
# Gendert von	:	Peter Bieringer <pb@bieringer.de> 
#  1999-06-25  
############################################################################## 
# Gendert von	:	Ngo Than <than@delix.de> 
#	08.10.98      :	Angepasst fr delix
############################################################################## 
# Gendert von	:	Erik Heim <erik@seitz.de> 
#	26.7.98 :	Angepasst fr das startup.
############################################################################## 
# Possible changes:
#set -x

UPSPLACE=local
#UPSPLACE=remote

UPSMODEL=ups-trust425+625
UPSSERIALDEV=ttyS0
UPSMONITORHOST=some.where

UPSPATH=/usr/local/ups

############################################################################## 

subsys_parameter=$1
LOCKDIR=/var/lock/subsys
STARTUP_OK=0
STARTUP_FAIL=1
STARTUP_NA=2

if [ "$UPSPLACE" = "local" ]; then
    UPSMONITORHOST=localhost
fi

UPSMODELSTATE=/var/state/ups/$UPSMODEL-$UPSSERIALDEV

############################################################################## 
start_and_stop() {
   if [ -f /etc/init.d/functions ]
   then
      source /etc/init.d/functions
   else
      echo "FAIL: Datei /etc/init.d/functions ist nicht vorhanden!"
      exit $STARTUP_FAIL
   fi                                 
   source_file /etc/sysconfig/runservices 		FAIL_ON_ERROR
   check_service "$UPS" UPS               		NA_ON_ERROR

if [ "$UPSPLACE" = "local" ]; then
   check_executable $UPSPATH/bin/$UPSMODEL		FAIL_ON_ERROR
   check_executable $UPSPATH/bin/upsd        		FAIL_ON_ERROR
fi
   check_executable $UPSPATH/bin/upsmon        		FAIL_ON_ERROR
   print_message
   check_lock $LOCKDIR/ups "$subsys_parameter"
}
############################################################################## 
# See how we were called.
############################################################################## 
case "$subsys_parameter" in
  start_msg)
       echo -n "Starte UPS..."
       ;;
  stop_msg)
       echo -n "Beende UPS..."
       ;;
  start)
        start_and_stop
	if [ "$UPSPLACE" = "local" ]; then
    	    logexec daemon $UPSPATH/bin/$UPSMODEL /dev/$UPSSERIALDEV
    	    logexec daemon $UPSPATH/bin/upsd $UPSMODELSTATE
	fi	
        logexec daemon $UPSPATH/bin/upsmon $UPSMONITORHOST
        logexec touch $LOCKDIR/ups
        logecho " "
        exit $FAIL
        ;;
  stop)
        start_and_stop
	logexec killproc upsmon
	if [ "$UPSPLACE" = "local" ]; then
	    logexec killproc upsd
	    logexec killproc $UPSMODEL
	fi
        logexec rm -f $LOCKDIR/ups
        logecho " "
        exit $FAIL
        ;;
  restart)
	$0 stop
	$0 start
	exit $?
	;;
  *)
        echo "Usage: ups {start|stop|restart|start_msg|stop_msg}"
        exit $STARTUP_FAIL
	;;
esac

exit $STARTUP_OK
############################################################################## 
