#!/bin/sh
#
# mrtg		mrtg loggerr
#
# chkconfig:	345 86 14
# description:	mrtg is a network traffic logging daemon.
# processname:	mrtg
# pidfile:	/var/run/mrtg.pid

# Source function library
. /etc/rc.d/init.d/functions

RETVAL=0

# Initial values:
CONFIGDIR="/etc/mrtg/conf.d"
DAEMON_USER="stats"

# Get service config
[ -f /etc/sysconfig/mrtg ] && . /etc/sysconfig/mrtg

# mrtg doesn't work in utf-8 locale
for k in LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES \
	LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION LC_ALL; do
	eval v=$`echo $k`
	if [[ "$v" == *[Uu][Tt][Ff]-8 ]]; then
		eval export $k=\${$k%.[Uu][Tt][Ff]-8}
	fi
done

checkconfigs() {
	for file in ${CONFIGDIR}/*.cfg; do
		f=`basename ${file}`
		run_cmd "Checking MRTG configuration: ${f}" mrtg --check ${file}
		RETVAL=$?
		if [ $RETVAL -ne 0 ]; then
			exit 1
		fi
	done
}

# For obsolete multiple configs - to be droped soon:
checkconfigs_old() {
	for file in ${CONFIGS}; do
		run_cmd "Checking MRTG configuration: ${file}" mrtg --check ${CONFIGDIR}/${file}
		RETVAL=$?
		if [ $RETVAL -ne 0 ]; then
			exit 1
		fi
	done
}


start() {
	if [ ! -f /var/lock/subsys/mrtg ]; then
		if [ ! "${CONFIGS}" ]; then
			checkconfigs
			for file in ${CONFIGDIR}/*.cfg; do
				f=`basename ${file}`
				msg_starting "mrtg (${f})"
				daemon --user ${DAEMON_USER} mrtg ${file} --daemon \
					--logging /var/log/mrtg/${f}.log \
					--pid-file=/var/run/mrtg/${f}.pid \
					--lock-file=/var/run/mrtg/${f}_l \
					--confcache-file=/var/lib/mrtg/${f}.ok
			done
		else
			echo "WARNING: using obsolete CONFIGS definition."
			echo "WARNING: look at /etc/sysconfig/mrtg for hints."
			checkconfigs_old
			for i in $CONFIGS; do
				msg_starting "mrtg ($i)"
				daemon --user ${DAEMON_USER} mrtg $CONFIGDIR/$i --daemon \
					--logging /var/log/mrtg/$i.log \
					--pid-file=/var/run/mrtg/$i.pid \
					--lock-file=/var/run/mrtg/${f}_l \
					--confcache-file=/var/lib/mrtg/${f}.ok
			done
		fi
		RETVAL=$?
		[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mrtg
	else
		msg_already_running mrtg
	fi
}

stop() {
	if [ -f /var/lock/subsys/mrtg ]; then
		msg_stopping mrtg
		killproc mrtg
		rm -f /var/lock/subsys/mrtg /var/run/mrtg.pid >/dev/null 2>&1
	else
		msg_not_running mrtg
	fi
}


# See how we were called.
case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  restart)
	stop
	start
	exit $?
	;;
  reload|force-reload)
	if [ -f /var/lock/subsys/mrtg ]; then
		msg_reloading mrtg
		killproc mrtg -HUP
		RETVAL=$?
	else
		msg_not_running mrtg >&2
		exit 7
	fi
	;;
  status)
	status mrtg
	exit $?
	;;
  *)
	msg_usage "$0 {start|stop|restart|reload|force-reload|status}"
	exit 3
esac

exit $RETVAL

# This must be last line !
# vi:syntax=sh:tw=78
