|
|
#!/usr/bin/env bash |
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
|
|
BACKEND_DIR="$(realpath "$SCRIPT_DIR/..")" |
|
|
SPACE_NAME="thryyyyy/open-webui" |
|
|
|
|
|
function check_requirements() { |
|
|
if ! command -v gpg >/dev/null; then |
|
|
echo "Error: gpg is not installed" |
|
|
return 1 |
|
|
fi |
|
|
} |
|
|
|
|
|
function validate_secrets() { |
|
|
if [ -z "$BACKUP_PASSPHRASE" ]; then |
|
|
echo "Error: BACKUP_PASSPHRASE secret not set" |
|
|
return 1 |
|
|
fi |
|
|
|
|
|
if [ -z "$HF_TOKEN" ]; then |
|
|
echo "Error: HF_TOKEN secret not set" |
|
|
return 1 |
|
|
fi |
|
|
} |
|
|
|
|
|
function decrypt_database() { |
|
|
validate_secrets || return 1 |
|
|
|
|
|
mkdir -p "$BACKEND_DIR/data" |
|
|
|
|
|
if [ -f "$BACKEND_DIR/db_backup/webui.db.gpg" ]; then |
|
|
echo "Decrypting database backup..." |
|
|
gpg --batch --yes --passphrase "$BACKUP_PASSPHRASE" -d \ |
|
|
-o "$BACKEND_DIR/data/webui.db" "$BACKEND_DIR/db_backup/webui.db.gpg" |
|
|
|
|
|
if [ $? -eq 0 ]; then |
|
|
echo "Database decrypted successfully" |
|
|
return 0 |
|
|
else |
|
|
echo "Failed to decrypt database" |
|
|
return 1 |
|
|
fi |
|
|
else |
|
|
echo "No encrypted backup found at db_backup/webui.db.gpg" |
|
|
|
|
|
return 0 |
|
|
fi |
|
|
} |
|
|
|
|
|
function encrypt_database() { |
|
|
validate_secrets || return 1 |
|
|
|
|
|
if [ ! -f "$BACKEND_DIR/data/webui.db" ]; then |
|
|
echo "Database not found at data/webui.db" |
|
|
return 1 |
|
|
fi |
|
|
|
|
|
mkdir -p "$BACKEND_DIR/db_backup" |
|
|
|
|
|
echo "Encrypting database..." |
|
|
gpg --batch --yes --passphrase "$BACKUP_PASSPHRASE" -c --cipher-algo AES256 \ |
|
|
-o "$BACKEND_DIR/db_backup/webui.db.gpg" "$BACKEND_DIR/data/webui.db" |
|
|
|
|
|
if [ $? -eq 0 ]; then |
|
|
echo "Database encrypted successfully" |
|
|
cd "$BACKEND_DIR" || exit 1 |
|
|
|
|
|
|
|
|
git config --local user.email "space-bot@huggingface.co" |
|
|
git config --local user.name "Space Bot" |
|
|
|
|
|
echo "Committing and pushing changes..." |
|
|
git add db_backup/webui.db.gpg |
|
|
git commit -m "Update encrypted database backup" |
|
|
|
|
|
|
|
|
REPO_URL="https://user:$HF_TOKEN@huggingface.co/spaces/$SPACE_NAME" |
|
|
if git push "$REPO_URL" main; then |
|
|
echo "Successfully pushed backup to repository" |
|
|
cd - >/dev/null |
|
|
return 0 |
|
|
else |
|
|
echo "Failed to push to repository" |
|
|
cd - >/dev/null |
|
|
return 1 |
|
|
fi |
|
|
else |
|
|
echo "Failed to encrypt database" |
|
|
return 1 |
|
|
fi |
|
|
} |
|
|
|
|
|
|
|
|
check_requirements || exit 1 |
|
|
|
|
|
|
|
|
|
|
|
if [ "${BASH_SOURCE[0]}" = "$0" ]; then |
|
|
encrypt_database |
|
|
fi |
|
|
|