#!/bin/bash

### Настройки основные
ENV_FILE="/root/scripts/backup.env"

# Проверка наличия zip
if ! command -v zip &> /dev/null; then
    echo "Утилита 'zip' не найдена. Установи:"
    echo "  sudo apt install zip"
    exit 1
fi
# Проверка наличия rclone
if ! command -v rclone &> /dev/null; then
    echo "Утилита 'rclone' не найдена"
    echo "  Почитай https://blog.tatarinovms.space/rclone4yd/"
    exit 1
fi

# Проверка наличия env-файла и загрузка переменных
if [ -f "$ENV_FILE" ]; then
    source "$ENV_FILE"
else
    echo "Файл переменных $ENV_FILE не найден!"
    exit 1
fi

# Проверка необходимых переменных, если нет — скрипт завершится с ошибкой
: "${SECRET_KEY:?ERROR: SECRET_KEY не задан в $ENV_FILE!}"
: "${OUTPUT_UPTIMEKUMA:?ERROR: OUTPUT_UPTIMEKUMA не задан в $ENV_FILE!}"
: "${RCLONE_SERVICES:?ERROR: RCLONE_SERVICES не задан в $ENV_FILE!}"
: "${RCLONE_FOLDER_UPTIMEKUMA:?ERROR: RCLONE_FOLDER_UPTIMEKUMA не задан в $ENV_FILE!}"

# Останавливаем сервис
pm2 stop uptime-kuma

SRC_DIR="/root/uptime-kuma/data"
FILES=(
    "$SRC_DIR/kuma.db"
    "$SRC_DIR/kuma.db-shm"
    "$SRC_DIR/kuma.db-wal"
)

# Создание zip-архива с паролем
zip -r -P "$SECRET_KEY" "$OUTPUT_UPTIMEKUMA" "${FILES[@]}"

# Загружаем файл через rclone и проверяем результат
if rclone copy "$OUTPUT_UPTIMEKUMA" "$RCLONE_SERVICES":"$RCLONE_FOLDER_UPTIMEKUMA"; then
    echo "Файл успешно загружен в $RCLONE_SERVICES:$RCLONE_FOLDER_UPTIMEKUMA"
    UPLOAD_STATUS=0
else
    echo "Ошибка загрузки файла в $RCLONE_SERVICES:$RCLONE_FOLDER_UPTIMEKUMA"
    UPLOAD_STATUS=1
fi

# Удаляем архив
rm -f "$OUTPUT_UPTIMEKUMA"

# Запускаем сервис
pm2 start uptime-kuma

# Отправка уведомления в Telegram (опционально)
if [[ -n "$TELEGRAM_BOT_TOKEN" && -n "$TELEGRAM_CHAT_ID" ]]; then
    if [ "$UPLOAD_STATUS" -eq 0 ]; then
        MESSAGE="UptimeKuma backup completed successfully!"
    else
        MESSAGE="UptimeKuma backup FAILED during upload!"
    fi

    curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
        -d chat_id="$TELEGRAM_CHAT_ID" \
        -d text="$MESSAGE" \
        -d parse_mode="Markdown"
else
    echo "Telegram уведомление пропущено: TELEGRAM_BOT_TOKEN или TELEGRAM_CHAT_ID не заданы."
fi
