#!/bin/bash
# =============================================================================
# SCRIPT THÊM .HTACCESS BẢO VỆ CHẶN PHP TRONG THƯ MỤC UPLOADS
# Tạo bởi: Security Audit 2025-12-08
# Sử dụng: sudo bash add_htaccess_protection.sh [project_path]
# =============================================================================

set -e

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

PROJECT_PATH="${1:-$(pwd)}"

echo -e "${GREEN}=== THÊM .HTACCESS BẢO VỆ ===${NC}"
echo "Project: $PROJECT_PATH"
echo ""

# Nội dung .htaccess bảo vệ
HTACCESS_CONTENT='# =============================================================================
# SECURITY: Chặn PHP execution trong thư mục này
# Được tạo tự động bởi script bảo mật
# =============================================================================

# Tắt PHP engine hoàn toàn
php_flag engine off

# Chặn tất cả file PHP
<FilesMatch "\.(php|phtml|php3|php4|php5|php7|phps|phar)$">
    Require all denied
</FilesMatch>

# Chặn file ẩn (bắt đầu bằng dấu chấm)
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

# Chặn các file script nguy hiểm khác
<FilesMatch "\.(cgi|pl|py|sh|bash|exe|dll)$">
    Require all denied
</FilesMatch>
'

# Danh sách thư mục cần bảo vệ
# LƯU Ý: Chỉ bảo vệ thư mục upload từ user, KHÔNG bảo vệ thư mục ảnh hệ thống
UPLOAD_DIRS=(
    "public/uploads"
    "public/files"
    "public/media"
    "public/attachments"
    "storage/app/public"
)

# KHÔNG thêm vào các thư mục sau (chứa ảnh hệ thống):
# - public/images (logo, icon hệ thống)
# - public/img (ảnh tĩnh)
# - public/vendor (thư viện frontend)

count=0

for dir in "${UPLOAD_DIRS[@]}"; do
    full_path="$PROJECT_PATH/$dir"
    if [ -d "$full_path" ]; then
        echo "$HTACCESS_CONTENT" > "$full_path/.htaccess"
        chmod 644 "$full_path/.htaccess"
        chown www-data:www-data "$full_path/.htaccess" 2>/dev/null || true
        echo -e "  ${GREEN}✓${NC} $dir/.htaccess"
        ((count++))
    fi
done

echo ""
if [ $count -gt 0 ]; then
    echo -e "${GREEN}=== HOÀN THÀNH ===${NC}"
    echo "Đã tạo $count file .htaccess bảo vệ"
else
    echo -e "${YELLOW}[WARNING] Không tìm thấy thư mục upload nào${NC}"
fi
