#!/bin/bash
# ============================================================
# easyNag Notification Script for Centreon
# ============================================================
EASYNAG_INSTANCE="MyCentreon"
EASYNAG_API_URL="https://api.easynag.com/v1/push/alert"

WHAT=""; NOTIFICATIONTYPE=""; HOSTNAME=""; SERVICE=""
STATE=""; OUTPUT=""; DATE=""; AUTHOR=""; COMMENT=""
EASYNAG_USER_KEY=""

while [[ $# -gt 0 ]]; do
    case "$1" in
        --what)     WHAT="$2";                     shift 2 ;;
        --type)     NOTIFICATIONTYPE="$2";         shift 2 ;;
        --hostname) HOSTNAME="$2";                 shift 2 ;;
        --service)  SERVICE="$2";                  shift 2 ;;
        --state)    STATE="$2";                    shift 2 ;;
        --output)   OUTPUT="$2";                   shift 2 ;;
        --date)     DATE="$2";                     shift 2 ;;
        --author)   AUTHOR="$2";                   shift 2 ;;
        --comment)  COMMENT="$2";                  shift 2 ;;
        --user-key) EASYNAG_USER_KEY="$2";         shift 2 ;;
        --instance) EASYNAG_INSTANCE="$2"; shift 2 ;;
        *)          shift ;;
    esac
done

if [ -z "${EASYNAG_USER_KEY}" ]; then
    echo "easyNag: no user_key" >&2
    exit 0
fi

DATE="${DATE:-$(date '+%Y-%m-%d %H:%M')}"
OUTPUT_ESCAPED=$(echo "${OUTPUT}" | sed 's/\\/\\\\/g; s/"/\\"/g')

curl -s -o /dev/null \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
        \"user_key\":  \"${EASYNAG_USER_KEY}\",
        \"what\":      \"${WHAT}\",
        \"type\":      \"${NOTIFICATIONTYPE}\",
        \"state\":     \"${STATE}\",
        \"hostname\":  \"${HOSTNAME}\",
        \"service\":   \"${SERVICE}\",
        \"output\":    \"${OUTPUT_ESCAPED}\",
        \"author\":    \"${AUTHOR}\",
        \"comment\":   \"${COMMENT}\",
        \"date\":      \"${DATE}\",
        \"instance\":  \"${EASYNAG_INSTANCE}\"
    }" \
    "${EASYNAG_API_URL}"
