#!/bin/bash # vexor-notify - forwards Naemon events to Vexor notification dispatcher set -euo pipefail TOKEN_FILE=/etc/vexor/notify-token API_URL="http://127.0.0.1:8080/api/v1/notify/dispatch-internal" LOG=/var/log/vexor/notify.log mkdir -p /var/log/vexor 2>/dev/null || true [ -r "$TOKEN_FILE" ] || exit 0 TOKEN=$(cat "$TOKEN_FILE") KIND="${1:-}"; shift || true case "$KIND" in host) HOST="${1:-}"; STATE="${2:-}"; OUTPUT="${3:-}" PAYLOAD=$(python3 -c 'import json,sys; print(json.dumps({"host":sys.argv[1],"service":"","severity":sys.argv[2],"output":sys.argv[3]}))' "$HOST" "$STATE" "$OUTPUT") ;; service) HOST="${1:-}"; DESC="${2:-}"; STATE="${3:-}"; OUTPUT="${4:-}" PAYLOAD=$(python3 -c 'import json,sys; print(json.dumps({"host":sys.argv[1],"service":sys.argv[2],"severity":sys.argv[3],"output":sys.argv[4]}))' "$HOST" "$DESC" "$STATE" "$OUTPUT") ;; *) exit 0 ;; esac echo "$(date -Is) SEND $KIND $PAYLOAD" >> $LOG if ! curl -fsS --max-time 10 -H 'Content-Type: application/json' -H "X-Internal-Token: $TOKEN" -d "$PAYLOAD" "$API_URL" >> $LOG 2>&1; then echo "$(date -Is) FAIL curl rc=$?" >> $LOG fi echo >> $LOG