82 lines
1.7 KiB
Bash
82 lines
1.7 KiB
Bash
#! /bin/sh
|
|
#
|
|
# notify-by-matrix
|
|
# Copyright (C) 2021 Vintage Salt <rehashedsalt@cock.li>
|
|
#
|
|
# Distributed under terms of the MIT license.
|
|
#
|
|
|
|
set -e
|
|
|
|
# Set our Matrix-related vars here
|
|
MX_TOKEN="{{ nagios_matrix_token }}"
|
|
MX_SERVER="{{ nagios_matrix_server }}"
|
|
MX_ROOM="{{ nagios_matrix_room }}"
|
|
|
|
# Get a TXN to prefix this particular message with
|
|
MX_TXN="$(date "+%s")$(( RANDOM % 9999 ))"
|
|
|
|
# Read the first line from STDIN
|
|
# This is supposed to be the NOTIFICATIONTYPE
|
|
read notiftype
|
|
prefix=""
|
|
# https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/macrolist.html#notificationtype
|
|
case "$notiftype" in
|
|
PROBLEM)
|
|
# Large Red Circle (U+1F534)
|
|
prefix="🔴"
|
|
;;
|
|
RECOVERY)
|
|
# Large Green Circle (U+1F7E2)
|
|
prefix="🟢"
|
|
;;
|
|
ACKNOWLEDGEMENT)
|
|
# Symbol For Acknowledge (U+2406)
|
|
prefix="␆"
|
|
;;
|
|
FLAPPINGSTART)
|
|
# Large Orange Circle (U+1F7E0)
|
|
prefix="🟠"
|
|
;;
|
|
FLAPPINGSTOP)
|
|
# Large Green Circle (U+1F7E2)
|
|
prefix="🟢"
|
|
;;
|
|
FLAPPINGDISABLED)
|
|
# Bell with Cancellation Stroke (U+1F515)
|
|
prefix="🔕"
|
|
;;
|
|
DOWNTIMESTART)
|
|
# Bell with Cancellation Stroke (U+1F515)
|
|
prefix="🔕"
|
|
;;
|
|
DOWNTIMEEND)
|
|
# Bell (U+1F514)
|
|
prefix="🔔"
|
|
;;
|
|
DOWNTIMECANCELLED)
|
|
# Bell (U+1F514)
|
|
prefix="🔔"
|
|
;;
|
|
*)
|
|
prefix="$notiftype - "
|
|
;;
|
|
esac
|
|
|
|
# Read a message from STDIN
|
|
# NOTE: This is dangerous and stupid and unsanitized
|
|
read message
|
|
while read line; do
|
|
message="${message}\n${line}"
|
|
done
|
|
|
|
# Push it to the channel
|
|
curl -X PUT \
|
|
--header 'Content-Type: application/json' \
|
|
--header 'Accept: application/json' \
|
|
-d "{
|
|
\"msgtype\": \"m.text\",
|
|
\"body\": \"$prefix $message\"
|
|
}" \
|
|
"$MX_SERVER/_matrix/client/unstable/rooms/$MX_ROOM/send/m.room.message/$MX_TXN?access_token=$MX_TOKEN"
|