commit de0e27536d3353a14e7e064bc26e415b42eb305b
parent fb2c7506ecb0ec580f6dec344549474a9984a68d
Author: Oscar Benedito <oscar@oscarbenedito.com>
Date: Mon, 17 Aug 2020 19:54:28 +0200
Unify notify function for all scripts
Now it is found on notify.sh, scripts that need to notify can simply
source this file.
Diffstat:
5 files changed, 43 insertions(+), 36 deletions(-)
diff --git a/check-changes-website.sh b/check-changes-website.sh
@@ -16,22 +16,16 @@
# Script that notifies through Gotify when a website has changed.
-GOTIFY_DOMAIN="gotify.oscarbenedito.com"
-API_TOKEN="$(cat "$(dirname "$(realpath "$0")")/gotify_token.txt")"
+# File must implement notify funtion
+. "$(dirname "$(realpath "$0")")/notify.sh"
-check_and_send_message() {
+check_and_notify() {
newhash="$(curl "$URL" 2>/dev/null | sha256sum | cut -f 1 -d " ")"
- [ "$HASH" != "$newhash" ] && \
- curl -X POST "https://$GOTIFY_DOMAIN/message?token=$API_TOKEN" \
- -F "title=$TITLE" \
- -F "message=$URL" \
- -F "priority=5" \
- >/dev/null 2>&1
+ [ "$HASH" != "$newhash" ] && notify "$TITLE" "$URL"
}
-
+# Example usage:
HASH="<hash>"
URL="<url>"
TITLE="<title>"
-
-check_and_send_message
+check_and_notify
diff --git a/deploy-website.sh b/deploy-website.sh
@@ -16,10 +16,11 @@
# Script to deploy a website built with Hugo.
+# File must implement notify funtion
+. "$(dirname "$(realpath "$0")")/notify.sh"
+
HUGO_PATH="/root/oscarbenedito.com"
WEB_PATH="/srv/oscarbenedito.com"
-GOTIFY_DOMAIN="gotify.oscarbenedito.com"
-FILE_DIR="$(dirname "$(realpath "$0")")"
# Pull rewritting history if needed, check that commit is PGP signed by a known
# key and if so, rebuild the website
@@ -53,12 +54,6 @@ sed -i "/<url>/{:a;N;/<\/url>/!ba};N;/<loc>https:\/\/oscarbenedito\.com${path}<\
rsync --perms --recursive --checksum --delete "$HUGO_PATH/public/" "$WEB_PATH"
# Notify
-API_TOKEN="$(cat "$FILE_DIR/gotify_token.txt")"
TITLE="Web update triggered"
MESSAGE="Git hooks triggered an update of the website."
-
-curl -X POST "https://$GOTIFY_DOMAIN/message?token=$API_TOKEN" \
- -F "title=$TITLE" \
- -F "message=$MESSAGE" \
- -F "priority=5" \
- >/dev/null 2>&1
+notify "$TITLE" "$MESSAGE"
diff --git a/login-notify.sh b/login-notify.sh
@@ -16,17 +16,13 @@
# Script that notifies Gotify when someone logs in through SSH to a computer/server.
-GOTIFY_DOMAIN="gotify.oscarbenedito.com"
-API_TOKEN="$(cat "$(dirname "$(realpath "$0")")/gotify_token.txt")"
+# File must implement notify funtion
+. "$(dirname "$(realpath "$0")")/notify.sh"
if [ "$PAM_TYPE" != "close_session" ]; then
TITLE="SSH login: ${PAM_USER}@$(hostname)"
MESSAGE="IP: ${PAM_RHOST}
Date: $(TZ='Europe/Madrid' date)"
- curl -X POST "https://$GOTIFY_DOMAIN/message?token=$API_TOKEN" \
- -F "title=$TITLE" \
- -F "message=$MESSAGE" \
- -F "priority=5" \
- >/dev/null 2>&1
+ notify "$TITLE" "$MESSAGE"
fi
diff --git a/notify.sh b/notify.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env sh
+# Gotify notify
+# Copyright (C) 2020 Oscar Benedito <oscar@oscarbenedito.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+# Implements notify function, that notifies admin through Gotify. This file is
+# imported by other scripts, but it could easily be used on its own adding lines
+# that call the function.
+
+notify() {
+ GOTIFY_DOMAIN="gotify.oscarbenedito.com"
+ GOTIFY_TOKEN="$(cat "$(dirname "$(realpath "$0")")/gotify_token.txt")"
+ curl -X POST "https://$GOTIFY_DOMAIN/message?token=$GOTIFY_TOKEN" \
+ -F "title=$1" -F "message=$2" -F "priority=${3:-5}" \
+ >/dev/null 2>&1
+}
diff --git a/website-backup.sh b/website-backup.sh
@@ -19,8 +19,7 @@
# adding a date to the filename.
FILE_DIR="$(dirname "$(realpath "$0")")"
-GOTIFY_DOMAIN="gotify.oscarbenedito.com"
-API_TOKEN="$(cat "$FILE_DIR/gotify_token.txt")"
+. "$FILE_DIR/notify.sh"
URL_FILE="$FILE_DIR/urls.txt"
BACKUP_PATH="$HOME/backups"
@@ -29,12 +28,7 @@ save() { wget --quiet --output-document "$OUTPUT" "$URL" ; }
error_message () {
TITLE="Website backup error"
MESSAGE="Error backing up $OUTPUT"
-
- curl -X POST "https://$GOTIFY_DOMAIN/message?token=$API_TOKEN" \
- -F "title=$TITLE" \
- -F "message=$MESSAGE" \
- -F "priority=5" \
- >/dev/null 2>&1
+ notify "$TITLE" "$MESSAGE"
}
while IFS= read -r line