#!/bin/sh
# Startup script for ups
#
# chkconfig: 2345 95 05

# Source function library.
. /etc/rc.d/init.d/functions
. /etc/ups/fideltronik/options.cfg

# slowo daemon action success itp ze spacja jest potrzebne,
# zeby wywolac ten skrypt normalnie, a nie przez action

KLIENT="UPS Monitor Klient"
SERWER="UPS Monitor Serwer"

RETVAL=0

if [ ! -f ${PATH_BINARY}/upsmonc -o ! -f ${PATH_BINARY}/upsmons ]; then
    echo "Nie ma plikow binarnych"
    exit 0
fi

if [ `id -u` -ne 0 ]; then
	echo "Musisz posiadac prawa administratora"
	exit 1
fi

prog="upsstart"

start() {
	echo -n "Uruchamianie $SERWER"
	${PATH_BINARY}/upsmons > /dev/nul 2>&1
	RETVAL=$?
	if [ $RETVAL -ne 0 ]; then
		echo_failure
		echo
		case $RETVAL in
		1)
			echo "-> Nie znaleziono zasilacza"
			;;
		2)
			echo "-> Blad otwarcia portu szeregowego"
			;;
		4)
			echo "-> Blad odczytu konfiguracji"
			;;
		7)
			echo "-> Blad przy tworzeniu polaczenia sieciowego"
			;;
		*)
			echo "-> Blad krytyczny nr $RETVAL"
			;;
		esac
		if [ $RETVAL -ne 1 ]; then	#jeszcze nie znalazl, ale bedzie szukal dalej, tylko w tle
			return $RETVAL
		fi
	else
		echo_success
		echo
	fi
	echo -n "Uruchamianie $KLIENT"
	${PATH_BINARY}/upsmonc > /dev/nul 2>&1
	RETVAL=$?
	if [ $RETVAL -ne 0 ]; then
		echo_failure
		echo
		case $RETVAL in
		2)
			echo "-> Blad otwarcia konfiguracji zasilaczy"
			;;
		3 | 4 | 5)
			echo "-> Blad skladni konfiguracji zasilaczy $RETVAL"
			;;
		6 | 7)
			echo "-> Blad polaczenia sieciowego"
			;;
		19)
			echo "-> Blad otwarcia konfiguracji globalnej"
			;;
		*)
			echo "-> Blad krytyczny nr $RETVAL"
			;;
		esac
		return $RETVAL
	else
		echo_success
		echo
	fi
#	echo "Start UPS `date`" >> ${PATH_LOG}/ups.log
	return $RETVAL
}

stop() {
	CLOSED=0
	if test "x`pidof upsmonc`" != x; then
		echo -n "Zamykanie $KLIENT"
		killall -9 upsmonc 2> /dev/nul
		echo_success
		echo
		CLOSED=1
	fi
	if test "x`pidof upsmons`" != x; then
		echo -n "Zamykanie $SERWER"
		killall -9 upsmons
		echo_success
		echo
		CLOSED=1
	fi
	if [ $CLOSED -eq 0 ]; then
		echo "UPS Monitor nie uruchomiony"
	fi
    return 0
}

case "$1" in
	start)
	    start
	    ;;

	stop)
	    stop
	    ;;

	status)
		if [ -n "`pidof upsmons`" ]; then
			killall -10 upsmons > /dev/nul 2>&1
		else
			echo "Serwer nie pracuje" > ${PATH_CONFIG}/statuss.dat
		fi
		if [ -n "`pidof upsmonc`" ]; then
			killall -10 upsmonc > /dev/nul 2>&1
		else
			echo "Klient nie pracuje" > ${PATH_CONFIG}/statusc.dat
		fi
		sleep 1
		cat ${PATH_CONFIG}/statuss.dat
		cat ${PATH_CONFIG}/statusc.dat
	    ;;
	restart)
	    stop
	    start
	    ;;
	*)
	    echo $"Usage: $0 {start|stop|status|restart}"
	    exit 1

esac

exit 0
