#!/bin/bash
#
# Redirect commands from pipe A to pipe B and C
#

set -e
set -u

ICINGA_CMD=${1:-"/usr/local/icinga/var/rw/icinga.cmd"}
ICINGA_MYSQL_CMD=${2:-"/usr/local/icinga-mysql/var/rw/icinga.cmd"}
ICINGA_PGSQL_CMD=${3:-"/usr/local/icinga-pgsql/var/rw/icinga.cmd"}

trap 'rm -f "$ICINGA_CMD"; exit' EXIT SIGKILL

if [[ -p "$ICINGA_CMD" ]]; then
    rm -f "$ICINGA_CMD"
fi

mkfifo -m 660 "$ICINGA_CMD"
chown icinga.icinga-cmd "$ICINGA_CMD"

while true
do
    if read COMMAND
    then
        if [[ -p "$ICINGA_MYSQL_CMD" ]]; then
            echo "$COMMAND" > "$ICINGA_MYSQL_CMD"
        else
            logger -p local0.err Can\'t distribute command to the Icinga MySQL instance since its command pipe doesn\'t exist
        fi
        if [[ -p "$ICINGA_PGSQL_CMD" ]]; then
            echo "$COMMAND" > "$ICINGA_PGSQL_CMD"
        else
            logger -p local0.err Can\'t distribute command to the Icinga PostgreSQL  instance since its command pipe doesn\'t exist
        fi
    fi
done < "$ICINGA_CMD" 3> "$ICINGA_CMD"

# Reset all traps
trap - EXIT SIGKILL

exit 0