Initial commit
This commit is contained in:
commit
8641464a6c
44 files changed
+2192
No files matched your search
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Euo pipefail
|
||||
|
||||
CONFIG_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/hermes-stack-maintenance/config.env"
|
||||
STATE_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/hermes-stack-maintenance"
|
||||
NOTIFIER="$HOME/.local/libexec/hermes-stack-notify"
|
||||
mkdir -p "$STATE_DIR"
|
||||
# shellcheck disable=SC1090
|
||||
source "$CONFIG_FILE"
|
||||
|
||||
set +u
|
||||
set -a
|
||||
# shellcheck disable=SC1090
|
||||
source "$HERMES_ENV" || true
|
||||
set +a
|
||||
set -u
|
||||
|
||||
state_file="$STATE_DIR/signal-health-state"
|
||||
signal_url="${SIGNAL_HTTP_URL:-}"
|
||||
[[ -n "$signal_url" ]] || exit 0
|
||||
|
||||
check_signal() {
|
||||
local status
|
||||
status="$(curl --silent --output /dev/null --max-time 5 \
|
||||
--write-out '%{http_code}' "${signal_url%/}/api/v1/check" || true)"
|
||||
[[ "$status" =~ ^2[0-9][0-9]$ ]]
|
||||
}
|
||||
|
||||
if check_signal; then
|
||||
current=healthy
|
||||
else
|
||||
systemctl --user restart "$SIGNAL_SERVICE" || true
|
||||
sleep 5
|
||||
check_signal && current=healthy || current=unhealthy
|
||||
fi
|
||||
|
||||
previous="$(cat "$state_file" 2>/dev/null || true)"
|
||||
if [[ "$current" == unhealthy && "$previous" != unhealthy ]]; then
|
||||
"$NOTIFIER" "Hermes-Stack: signal-cli ist nicht erreichbar; Neustart wurde versucht." || true
|
||||
elif [[ "$current" == healthy && "$previous" == unhealthy ]]; then
|
||||
"$NOTIFIER" "Hermes-Stack: signal-cli ist wieder erreichbar." || true
|
||||
fi
|
||||
|
||||
printf '%s\n' "$current" >"$state_file"
|
||||
[[ "$current" == healthy ]]
|
||||
Reference in new issue
Block a user