#!/bin/bash
# =============================================================================
# SCRIPT TRIỂN KHAI BẢO MẬT TOÀN DIỆN CHO LARAVEL PROJECT
# Tạo bởi: Security Audit 2025-12-08
# Sử dụng: sudo bash deploy_security.sh [project_path]
#
# Script này gọi tất cả các script bảo mật khác theo thứ tự:
# 1. Quét mã độc
# 2. Thiết lập quyền
# 3. Thêm .htaccess bảo vệ
# 4. Thiết lập cronjob giám sát
# =============================================================================

set -e

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

# Lấy đường dẫn script
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_PATH="${1:-$(dirname "$SCRIPT_DIR")}"

echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║        TRIỂN KHAI BẢO MẬT TOÀN DIỆN                        ║${NC}"
echo -e "${BLUE}║        Moro Security Suite v1.0                            ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo "Project: $PROJECT_PATH"
echo "Thời gian: $(date)"
echo ""

# Kiểm tra quyền root
if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}[ERROR] Script cần chạy với quyền root (sudo)${NC}"
    exit 1
fi

# Kiểm tra thư mục tồn tại
if [ ! -d "$PROJECT_PATH" ]; then
    echo -e "${RED}[ERROR] Thư mục không tồn tại: $PROJECT_PATH${NC}"
    exit 1
fi

# ============================================================================
# BƯỚC 1: QUÉT MÃ ĐỘC
# ============================================================================
echo -e "${YELLOW}┌────────────────────────────────────────────────────────────┐${NC}"
echo -e "${YELLOW}│ BƯỚC 1/4: QUÉT MÃ ĐỘC                                      │${NC}"
echo -e "${YELLOW}└────────────────────────────────────────────────────────────┘${NC}"
echo ""

if [ -f "$SCRIPT_DIR/scan_malware.sh" ]; then
    bash "$SCRIPT_DIR/scan_malware.sh" "$PROJECT_PATH" || {
        echo -e "${RED}[WARNING] Phát hiện mã độc! Vui lòng xử lý trước khi tiếp tục.${NC}"
        read -p "Bạn có muốn tiếp tục? (y/n): " confirm
        if [ "$confirm" != "y" ]; then
            exit 1
        fi
    }
else
    echo -e "${YELLOW}[SKIP] Không tìm thấy scan_malware.sh${NC}"
fi
echo ""

# ============================================================================
# BƯỚC 2: THIẾT LẬP QUYỀN
# ============================================================================
echo -e "${YELLOW}┌────────────────────────────────────────────────────────────┐${NC}"
echo -e "${YELLOW}│ BƯỚC 2/4: THIẾT LẬP QUYỀN AN TOÀN                          │${NC}"
echo -e "${YELLOW}└────────────────────────────────────────────────────────────┘${NC}"
echo ""

if [ -f "$SCRIPT_DIR/secure_permissions.sh" ]; then
    bash "$SCRIPT_DIR/secure_permissions.sh" "$PROJECT_PATH"
else
    echo -e "${YELLOW}[SKIP] Không tìm thấy secure_permissions.sh${NC}"
fi
echo ""

# ============================================================================
# BƯỚC 3: THÊM .HTACCESS BẢO VỆ
# ============================================================================
echo -e "${YELLOW}┌────────────────────────────────────────────────────────────┐${NC}"
echo -e "${YELLOW}│ BƯỚC 3/4: THÊM .HTACCESS BẢO VỆ                            │${NC}"
echo -e "${YELLOW}└────────────────────────────────────────────────────────────┘${NC}"
echo ""

if [ -f "$SCRIPT_DIR/add_htaccess_protection.sh" ]; then
    bash "$SCRIPT_DIR/add_htaccess_protection.sh" "$PROJECT_PATH"
else
    echo -e "${YELLOW}[SKIP] Không tìm thấy add_htaccess_protection.sh${NC}"
fi
echo ""

# ============================================================================
# BƯỚC 4: THIẾT LẬP CRONJOB GIÁM SÁT
# ============================================================================
echo -e "${YELLOW}┌────────────────────────────────────────────────────────────┐${NC}"
echo -e "${YELLOW}│ BƯỚC 4/4: THIẾT LẬP GIÁM SÁT TỰ ĐỘNG                       │${NC}"
echo -e "${YELLOW}└────────────────────────────────────────────────────────────┘${NC}"
echo ""

if [ -f "$SCRIPT_DIR/security_monitor.sh" ]; then
    # Copy script giám sát vào /usr/local/bin
    cp "$SCRIPT_DIR/security_monitor.sh" /usr/local/bin/security_monitor.sh
    chmod +x /usr/local/bin/security_monitor.sh

    # Thêm cronjob nếu chưa có
    CRON_CMD="0 6 * * * /usr/local/bin/security_monitor.sh $PROJECT_PATH >> /var/log/security_monitor.log 2>&1"
    (crontab -l 2>/dev/null | grep -v "security_monitor.sh"; echo "$CRON_CMD") | crontab -

    echo -e "  ${GREEN}✓ Đã thiết lập cronjob giám sát (6:00 AM hàng ngày)${NC}"
else
    echo -e "${YELLOW}[SKIP] Không tìm thấy security_monitor.sh${NC}"
fi
echo ""

# ============================================================================
# TỔNG KẾT
# ============================================================================
echo -e "${GREEN}╔════════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║                    HOÀN THÀNH                              ║${NC}"
echo -e "${GREEN}╚════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo "Đã thực hiện các bước bảo mật sau:"
echo "  ✓ Quét mã độc"
echo "  ✓ Thiết lập quyền an toàn (755/644/.env=600)"
echo "  ✓ Thêm .htaccess chặn PHP trong thư mục upload"
echo "  ✓ Thiết lập giám sát tự động hàng ngày"
echo ""
echo -e "${BLUE}Gợi ý tiếp theo:${NC}"
echo "  1. Kiểm tra log: /var/log/security_monitor.log"
echo "  2. Chạy quét thủ công: bash $SCRIPT_DIR/scan_malware.sh"
echo "  3. Đổi mật khẩu database và các service"
echo "  4. Cập nhật PHP và các package"
echo ""
