#!/bin/bash
# Thêm mật khẩu công khai (123) cho toàn bộ file .zip trong thư mục.
# Mục đích: chặn scanner tự động đọc nội dung, KHÔNG phải bảo mật chống người dùng thật.
#
# Cách dùng:
#   1. Test 1 file trước:  ./add_password_batch.sh Yabe_v2.0.0.zip
#   2. Chạy toàn bộ:       ./add_password_batch.sh

DIR="/www/wwwroot/files.viet33.com/taimienphi-2"
PASSWORD="123"
BACKUP_DIR="$DIR/_backup_before_password"

set -u
cd "$DIR" || { echo "Không vào được thư mục $DIR"; exit 1; }
mkdir -p "$BACKUP_DIR"

process_one() {
    local FILE="$1"
    local TMP_DIR="temp_$$_$(basename "$FILE" .zip)"
    local NEW_FILE="${FILE}.new"

    echo "Đang xử lý: $FILE"
    cp -n "$FILE" "$BACKUP_DIR/$FILE"   # backup gốc, không ghi đè nếu đã backup rồi

    rm -rf "$TMP_DIR"
    mkdir -p "$TMP_DIR"

    local file_type
    file_type=$(file -b "$FILE")
    if [[ "$file_type" == *"RAR archive"* ]]; then
        if ! command -v unrar >/dev/null 2>&1; then
            echo "  -> LỖI: chưa cài unrar, bỏ qua file này."
            rm -rf "$TMP_DIR"
            return 1
        fi
        unrar x -o+ "$FILE" "$TMP_DIR/" > /dev/null 2>&1
    else
        unzip -q "$FILE" -d "$TMP_DIR"
    fi

    # Nén lại với mật khẩu, ghi ra file MỚI, không đụng file gốc ở bước này
    ( cd "$TMP_DIR" && zip -q -r -P "$PASSWORD" "../$NEW_FILE" . )

    # Chỉ thay thế file gốc SAU KHI xác nhận file mới mở đúng bằng mật khẩu
    if unzip -tP "$PASSWORD" "$NEW_FILE" > /dev/null 2>&1; then
        mv "$NEW_FILE" "$FILE"
        echo "  -> OK: đã thêm mật khẩu cho $FILE"
    else
        echo "  -> LỖI: file mới không hợp lệ, giữ nguyên file gốc."
        rm -f "$NEW_FILE"
    fi

    rm -rf "$TMP_DIR"
}

if [ $# -eq 1 ]; then
    # Chế độ test 1 file: ./add_password_batch.sh Yabe_v2.0.0.zip
    process_one "$1"
else
    # Chế độ chạy toàn bộ
    for f in *.zip; do
        [ -e "$f" ] || continue
        case "$f" in
            *_backup*) continue ;;
        esac
        process_one "$f"
    done
fi

echo ""
echo "Hoàn tất. File gốc (chưa mật khẩu) được backup tại: $BACKUP_DIR"
echo "Đừng quên hiển thị 'Password giải nén: $PASSWORD' trên trang web cạnh nút tải."