mirror of
https://github.com/mag37/dockcheck.git
synced 2026-03-15 13:06:29 +01:00
Refactor notifications and add helper functions (#182)
* Refactor notifications and add helper functions * Add helper functions to simplify sourcing files and executing functions if they exist * Create notify_v2.sh wrapper script * Simplify and consolidate notification logic within notify_v2.sh * Support notification management via environment variables * Move secrets to dockcheck.config * Fix NOTIFY_CHANNELS default value when not set * Feedback changes * Remove leading spaces from MessageBody * Check for valid notify v2 variables * Warn on missing configuration and bypass notifications * Update readme * Additional feedback fixes * More comments in default.config with different # depth for comments and settings * Rename NOTIFY_TOPIC_NAME variable to NTFY_TOPIC_NAME for consistency * Add TELEGRAM_TOPIC_ID * Fix AppriseURL variable * Add an ending newline to all MessageBody statements for consistency * Remove troubleshooting echo statement * Prevent attempting to trigger notifications for notification templates if versions are the same --------- Co-authored-by: Matthew Oleksowicz <matt@everyoneneeds.it>
This commit is contained in:
parent
e4b93d113c
commit
c63e2441fa
16 changed files with 366 additions and 564 deletions
|
|
@ -1,57 +1,26 @@
|
|||
### DISCLAIMER: This is a third party addition to dockcheck - best effort testing.
|
||||
NOTIFY_PUSHOVER_VERSION="v0.1"
|
||||
NOTIFY_PUSHOVER_VERSION="v0.2"
|
||||
#
|
||||
# Copy/rename this file to notify.sh to enable the notification snippet.
|
||||
# Required receiving services must already be set up.
|
||||
# Requires jq installed and in PATH.
|
||||
# Modify to fit your setup - set Url and Token.
|
||||
# Do not modify this file directly. Set PUSHOVER_USER_KEY, PUSHOVER_TOKEN, and PUSHOVER_URL in your dockcheck.config file.
|
||||
|
||||
FromHost=$(hostname)
|
||||
if [[ -z "${PUSHOVER_URL:-}" ]] || [[ -z "${PUSHOVER_USER_KEY:-}" ]] || [[ -z "${PUSHOVER_TOKEN:-}" ]]; then
|
||||
printf "Pushover notification channel enabled, but required configuration variables are missing. Pushover notifications will not be sent.\n"
|
||||
|
||||
trigger_notification() {
|
||||
# Modify to fit your setup:
|
||||
PushoverUrl="https://api.pushover.net/1/messages.json"
|
||||
PushoverUserKey="Your Pushover User Key Here"
|
||||
PushoverToken="Your Pushover API Token Here"
|
||||
remove_channel pushover
|
||||
fi
|
||||
|
||||
# Sending the notification via Pushover
|
||||
curl -sS -o /dev/null --show-error --fail -X POST \
|
||||
-F "token=$PushoverToken" \
|
||||
-F "user=$PushoverUserKey" \
|
||||
-F "title=$MessageTitle" \
|
||||
-F "message=$MessageBody" \
|
||||
$PushoverUrl
|
||||
}
|
||||
trigger_pushover_notification() {
|
||||
PushoverUrl="${PUSHOVER_URL}" # e.g. PUSHOVER_URL=https://api.pushover.net/1/messages.json
|
||||
PushoverUserKey="${PUSHOVER_USER_KEY}" # e.g. PUSHOVER_USER_KEY=userkey
|
||||
PushoverToken="${PUSHOVER_TOKEN}" # e.g. PUSHOVER_TOKEN=token-value
|
||||
|
||||
send_notification() {
|
||||
[ -s "$ScriptWorkDir"/urls.list ] && releasenotes || Updates=("$@")
|
||||
UpdToString=$( printf '%s\\n' "${Updates[@]}" )
|
||||
|
||||
# platform specific notification code would go here
|
||||
printf "\nSending pushover notification\n"
|
||||
|
||||
MessageTitle="$FromHost - updates available."
|
||||
# Setting the MessageBody variable here.
|
||||
printf -v MessageBody "🐋 Containers on $FromHost with updates available:\n$UpdToString"
|
||||
|
||||
trigger_notification
|
||||
}
|
||||
|
||||
### Rename (eg. disabled_dockcheck_notification), remove or comment out the following function
|
||||
### to not send notifications when dockcheck itself has updates.
|
||||
dockcheck_notification() {
|
||||
printf "\nSending pushover dockcheck notification\n"
|
||||
|
||||
MessageTitle="$FromHost - New version of dockcheck available."
|
||||
# Setting the MessageBody variable here.
|
||||
printf -v MessageBody "Installed version: $1 \nLatest version: $2 \n\nChangenotes: $3"
|
||||
|
||||
RawNotifyUrl="https://raw.githubusercontent.com/mag37/dockcheck/main/notify_templates/notify_pushover.sh"
|
||||
LatestNotifyRelease="$(curl -s -r 0-150 $RawNotifyUrl | sed -n "/NOTIFY_PUSHOVER_VERSION/s/NOTIFY_PUSHOVER_VERSION=//p" | tr -d '"')"
|
||||
if [[ "$NOTIFY_PUSHOVER_VERSION" != "$LatestNotifyRelease" ]] ; then
|
||||
printf -v NotifyUpdate "\n\nnotify_pushover.sh update avialable:\n $NOTIFY_PUSHOVER_VERSION -> $LatestNotifyRelease\n"
|
||||
MessageBody="${MessageBody}${NotifyUpdate}"
|
||||
fi
|
||||
|
||||
trigger_notification
|
||||
}
|
||||
# Sending the notification via Pushover
|
||||
curl -sS -o /dev/null --show-error --fail -X POST \
|
||||
-F "token=$PushoverToken" \
|
||||
-F "user=$PushoverUserKey" \
|
||||
-F "title=$MessageTitle" \
|
||||
-F "message=$MessageBody" \
|
||||
$PushoverUrl
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue