#!/bin/sh
# WARNING: This file was auto-generated. Do not edit!
#
# $Id: svalert.in,v 1.2 2025-08-12 22:09:43+05:30 Cprogrammer Exp mbhangui $
#

log_syslog()
{
	case "$1" in
		"abnormal startup" | "system failure" | "abnormal shutdown")
		shift
		logger -p daemon.warning --server $probe_server -t svalert $*
		;;
		*)
		shift
		logger -p daemon.info --server $probe_server -t svalert $*
		;;
	esac
}

tmval=$(date +%s)
[ -n "SV_ALERT_PORT" ] && port=$SV_ALERT_PORT || port=3001
[ -n "PROBE_SERVER" ] && probe_server=$PROBE_SERVER || probe_server="probe-server"

case "$#" in
	2) # run/shutdown script arguments
	# when used in run two arguments are passed
	# run script arguments
	# $1 - service directory
	# #2 - startup type
	# "abnormal startup" When ./run exits on its own
	# "system failure"   When supervise is unable to fork to execute ./run
	# "manual restart"   When svc -u or -r is used to start the service
	# "one-time startup" When svc -o is used to start the service
	# "auto startup"     Normal startup after supervise is run by svscan
	#
	# or
	#
	# when used in shutdown script or used as shutdown script
	# two arguments are passed
	# $1 - service directory
	# $2 - pid of process that was shutdown
	#
	if [ -f /etc/indimail/svalerts.filter ] ; then
		t=$(echo $2 | sed -e 's/ /-/g')
		echo $t | /usr/bin/grep -q -w -f /etc/indimail/svalerts.filter
		if [ $? -eq 0 ] ; then
			exit 0
		fi
	fi
	word_count=$(echo "$2" | wc -w)
	if [ $word_count -eq 2 ] ; then # we are being called in ./run
		t=$(echo $2 | sed -e 's/ /-/g')
		if [ -n "USE_SYSLOG" -a -x /usr/bin/logger ] ; then
			log_syslog "$2" $hostname $PWD $1 "$t" - - $tmval
		elif [ -x /usr/bin/udpclient ] ; then
			exec /usr/bin/udpclient -h $probe_server -p $port svalert $hostname $PWD $1 "$t" - - $tmval
		else
			echo svalert $hostname $PWD $1 $t - - $tmval | nc $probe_server -u $port
		fi
	else # we are being called in ./shutdown and $2 is PID
		if [ -n "USE_SYSLOG" -a -x /usr/bin/logger ] ; then
			log_syslog "normal shutdown" $1 "normal shutdown" PID "$t" $tmval
		elif [ -x /usr/bin/udpclient ] ; then
			exec /usr/bin/udpclient -h $probe_server -p $port svalert $hostname $PWD $1 "normal-shutdown" PID $2 $tmval
		else
			echo svalert $hostname $PWD $1 "normal-shutdown" PID $2 $tmval | nc $probe_server -u $port
		fi
	fi
	;;

	3) # run script arguments when svalert gets called as svalert $* instead of svalert "$@"
	# $1 - service directory
	# #2 - startup type (1st word)
	# #3 - startup type (2nd word)
	if [ -f /usr/etc/svalerts.filter ] ; then
		echo "$2"-"$3" | /usr/bin/grep -q -w -f /usr/etc/svalerts.filter
		if [ $? -eq 0 ] ; then
			exit 0
		fi
	fi
	if [ -n "USE_SYSLOG" -a -x /usr/bin/logger ] ; then
		log_syslog "$2 $3" $hostname $PWD $1 "$2-$3" - - $tmval
	elif [ -x /usr/bin/udpclient ] ; then
		exec /usr/bin/udpclient -h $probe_server -p $port svalert $hostname $PWD $1 "$2-$3" - - $tmval
	else
		echo svalert $hostname $PWD $1 "$2-$3" - - $tmval | nc $probe_server -u $port
	fi
	;;

	4) # alert script arguments
	# $1 - service directory
	# $2 - pid of process that died
	# $3 - exit status of process that died / signal that killed the process
	# $4 - exited/stopped/signalled
	if [ -f /usr/etc/svalerts.filter ] ; then
		/usr/bin/grep -q -w "abnormal shutdown" /usr/etc/svalerts.filter
		if [ $? -eq 0 ] ; then
			exit 0
		fi
	fi
	if [ -n "USE_SYSLOG" -a -x /usr/bin/logger ] ; then
		log_syslog "abnormal shutdown" $hostname $PWD $1 "abnormal-shutdown" $4 $3 $tmval
	elif [ -x /usr/bin/udpclient ] ; then
		exec /usr/bin/udpclient -h $probe_server -p $port svalert $hostname $PWD $1 "abormal-shutdown" $4 $3 $tmval
	else
		echo svalert $hostname $PWD $1 "abormal-shutdown" $4 $3 $tmval | nc $probe_server -u $port
	fi
	;;
esac

#
# $Log: svalert.in,v $
# Revision 1.2  2025-08-12 22:09:43+05:30  Cprogrammer
# set probe server using PROB_SERVER env variable
#
# Revision 1.1  2025-02-23 13:57:38+05:30  Cprogrammer
# Initial revision
#
#
