#!/bin/sh

if [ "$#" -lt 1 -o "$#" -gt 2 ]; then
    echo "Usage: $0 <systemd unit> [<mail address>]" >&2
    exit 1
fi

include () {
    test -f "$1" && . "$1"
}

include /usr/etc/default/systemd-status-mail
include /etc/default/systemd-status-mail

HOSTNAME=${HOSTNAME:-$(hostname)}
SERVICE="$1"
if [ -n "$2" ]; then
    TO="$2"
elif [ -n "$ADDRESS" ]; then
    TO="$ADDRESS"
else
    TO="root@localhost"
fi

if [ -z "$FROM" ]; then
    FROM="systemd <root@$HOSTNAME>"
fi

if [ -z "${MAILER}" ]; then
    if [ -x /usr/sbin/sendmail ]; then
	MAILER="sendmail"
    elif [ -x /usr/bin/mailx ]; then
	MAILER="mailx"
    else
	echo "ERROR: $0 - no mail program found!" >&2
    fi
fi

case $MAILER in
    sendmail)
	/usr/sbin/sendmail -t <<EOF
To: $TO
From: $FROM
Subject: $SERVICE ($HOSTNAME)
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8

$(systemctl status --lines=500 --full "$SERVICE" 2>&1)
EOF
	;;
    mailx)
	MAILRC=`mktemp --tmpdir systemd-status-mail-mailx-conf.XXXXXXXXXX` || exit 1
	export MAILRC
	echo "set sendwait" >> $MAILRC
	if [ -n "${RELAYHOST}" ]; then
	    echo "set smtp=${RELAYHOST@Q}" >> $MAILRC
	fi
	if [ -n "${MAILX_AUTH_USER}" ]; then
	    echo "set smtp-auth-user=${MAILX_AUTH_USER@Q}" >> $MAILRC
	fi
	if [ -n "${MAILX_AUTH_PASSWORD}" ]; then
	    echo "set smtp-auth-password=${MAILX_AUTH_PASSWORD@Q}" >> $MAILRC
	fi
	mailx $MAILX_OPTIONS -s "$SERVICE ($HOSTNAME)" -r "$FROM" "$TO" <<EOF
$(systemctl status --lines=500 --full "$SERVICE" 2>&1)
EOF
	rm $MAILRC
	;;
    *)
	echo "ERROR: \"$MAILER\" is not a valid entry!" >&2
	echo "       Only \"sendmail\" and \"mailx\" are." >&2
	;;
esac
