#!/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_VAULTWARDEN:?ERROR: OUTPUT_VAULTWARDEN не задан в $ENV_FILE!}"
: "${RCLONE_SERVICES:?ERROR: RCLONE_SERVICES не задан в $ENV_FILE!}"
: "${RCLONE_FOLDER_VAULTWARDEN:?ERROR: RCLONE_FOLDER_VAULTWARDEN не задан в $ENV_FILE!}"

# Останавливаем сервис
/boot/dietpi/dietpi-services stop vaultwarden

SRC_DIR="/mnt/dietpi_userdata/vaultwarden"
FILES=(
    "$SRC_DIR/vaultwarden.env"
    "$SRC_DIR/db.sqlite3"
    "$SRC_DIR/attachments"
    "$SRC_DIR/sends"
)

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

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

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

# Запускаем сервис
/boot/dietpi/dietpi-services start vaultwarden

# Отправка уведомления в Telegram (опционально)
if [[ -n "$TELEGRAM_BOT_TOKEN" && -n "$TELEGRAM_CHAT_ID" ]]; then
    if [ "$UPLOAD_STATUS" -eq 0 ]; then
        MESSAGE="Vaultwarden backup completed successfully!"
    else
        MESSAGE="Vaultwarden 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
