#!/usr/bin/env bash set -Eeuo pipefail APP_DIR="${APP_DIR:-/opt/proxpanel}" SECRET_FILE="${SECRET_FILE:-$APP_DIR/.backup.env}" BACKUP_SCRIPT="${APP_DIR}/infra/deploy/db-backup-encrypted.sh" REPLICATE_SCRIPT="${APP_DIR}/infra/deploy/db-backup-replicate-offsite.sh" NOTIFY_SCRIPT="${APP_DIR}/infra/deploy/notify-backup-alert.sh" job_failed() { local line="$1" local message="Daily backup job failed (line ${line}) on host $(hostname -f 2>/dev/null || hostname)" APP_DIR="$APP_DIR" "$NOTIFY_SCRIPT" \ --event backup_failed \ --severity critical \ --status failed \ --source db-backup-job \ --message "$message" \ --context-json "{\"line\":${line}}" } main() { trap 'job_failed $LINENO' ERR APP_DIR="$APP_DIR" "$BACKUP_SCRIPT" APP_DIR="$APP_DIR" "$REPLICATE_SCRIPT" local send_success="false" if [[ -f "$SECRET_FILE" ]]; then # shellcheck disable=SC1090 source "$SECRET_FILE" send_success="${BACKUP_ALERT_SEND_SUCCESS:-false}" fi if [[ "$send_success" == "true" ]]; then APP_DIR="$APP_DIR" "$NOTIFY_SCRIPT" \ --event backup_success \ --severity info \ --status ok \ --source db-backup-job \ --message "Daily backup + offsite replication completed successfully" fi trap - ERR } main "$@"