#!/bin/sh
# $Id: nagios-notify 9697 2008-04-08 11:10:46Z glen $
#
# Template based Nagios notify script.
# Requires: awk, base64 (coreutils)
#
# Author: Elan Ruusamäe <glen@pld-linux.org>
# License: Same as Nagios (GPL v2)
#

templatedir='/etc/nagios/templates'
export NAGIOS_DATADIR='/usr/share/nagios'
prog="${0##*/}"

# Substutute Nagios $VAR$-s (which are exported to environment by Nagios) inside template.
template_subst() {
	local tmpl="$1"
	awk '
	function base64(file) {
		cmd = "base64 " file;
		out = ""
		while ((cmd | getline) > 0) {
			out = out $0;
		}
		close(cmd);
		return out;
	}
	{
		# replace environ variables
		for (var in ENVIRON) {
			if (substr(var, 1, length("NAGIOS_")) == "NAGIOS_") {
				val = ENVIRON[var];
				var = substr(var, 1 + length("NAGIOS_"));
				gsub("\$" var "\$", val);
			}
		}

		# replace special: base64 handler
		if (match($0, /\$\(base64:(.*)\)/)) {
			file = substr($0, RSTART + 9, RLENGTH - 10);
			left = substr($0, 0, RSTART);
			right = substr($0, RSTART + RLENGTH);
			$0 = left base64(file) right;
		}

		# print out
		print
	}
	' $tmpl
}


if [ "${NAGIOS_STATUSDATAFILE+set}" = set ]; then
	NAGIOS_STATUSDATAFILE=${NAGIOS_STATUSDATAFILE:-/var/lib/nagios/status.dat}
else
	echo >&2 "$prog: This program must be ran from Nagios."
	exit 1
fi

# extract Nagios version from status file
export NAGIOS_VERSION=$(awk -F= '/version=/{print $2}' $NAGIOS_STATUSDATAFILE)

tmpl="$templatedir/$1.tmpl"
if [ ! -f "$tmpl" ]; then
	echo >&2 "$prog: template '$tmpl' can not be found!"
	exit 1
fi

template_subst "$tmpl"
