#!/bin/bash
# @author: Gia Tuấn
# @website: https://wptangtoc.com
# @email: giatuan@wptangtoc.com
# @description: Bootstrapper Cài đặt WPTangToc OLS
# @since: 2026

# 1. BASH STRICT MODE & ERROR TRAP
set -Eeuo pipefail

WPTT_SECURE_TMP=$(mktemp -d)

wptt_error_trap() {
  local exit_code=$?
  local line_no=$1
  local err_cmd="$2"
  tput cnorm 2>/dev/null || true
  echo -e "\n\e[31m✖ TIẾN TRÌNH KHỞI TẠO BỊ ĐỨT GÃY TẠI DÒNG: $line_no (Mã lỗi: $exit_code)\e[0m"
  echo -e "\e[33mLệnh gây lỗi: $err_cmd\e[0m"
  echo -e "Vui lòng kiểm tra lại môi trường hệ điều hành hoặc liên hệ: giatuan@wptangtoc.com"
  [[ -n "${WPTT_SECURE_TMP:-}" && -d "$WPTT_SECURE_TMP" ]] && rm -rf "$WPTT_SECURE_TMP" || true
}
trap 'wptt_error_trap ${LINENO} "$BASH_COMMAND"' ERR

export LC_ALL=en_US.UTF-8 2>/dev/null || true
export LANG=en_US.UTF-8 2>/dev/null || true
stty iutf8 2>/dev/null || true

# ==============================================================================
# 2. KIỂM TRA HỆ ĐIỀU HÀNH & KIẾN TRÚC CPU
# ==============================================================================
# Kiểm tra CPU (Chỉ hỗ trợ x86_64 và aarch64)
ARCH=$(uname -m)
if [[ "$ARCH" != "x86_64" && "$ARCH" != "aarch64" ]]; then
  clear
  echo -e "\e[31m╭──────────────────────────────────────────────────────────────────────────────╮\e[0m"
  echo -e "\e[31m│\e[0m \e[1;31mLỖI: KIẾN TRÚC CPU '$ARCH' KHÔNG ĐƯỢC HỖ TRỢ!\e[0m                \e[31m│\e[0m"
  echo -e "\e[31m├──────────────────────────────────────────────────────────────────────────────┤\e[0m"
  echo -e "\e[31m│\e[0m WPTangToc OLS yêu cầu độ ổn định và hiệu suất cao nhất. Hệ thống hiện      \e[31m│\e[0m"
  echo -e "\e[31m│\e[0m tại chỉ hỗ trợ chính thức trên các dòng vi xử lý:                          \e[31m│\e[0m"
  echo -e "\e[31m│\e[0m   • Intel / AMD (x86_64)                                                   \e[31m│\e[0m"
  echo -e "\e[31m│\e[0m   • ARM64 (aarch64 - Ampere Altra, AWS Graviton, Apple Silicon...)         \e[31m│\e[0m"
  echo -e "\e[31m╰──────────────────────────────────────────────────────────────────────────────╯\e[0m\n"
  rm -f wptangtoc-ols || true
  exit 1
fi

OUTPUT=$(cat /etc/*release 2>/dev/null || true)
if echo "$OUTPUT" | grep -q "AlmaLinux 8\|Rocky Linux 8\|Red Hat Enterprise Linux 8\|Oracle Linux Server 8"; then
  SERVER_OS='almalinux'
elif echo "$OUTPUT" | grep -q "AlmaLinux 9\|Rocky Linux 9\|Red Hat Enterprise Linux 9\|Oracle Linux Server 9"; then
  SERVER_OS='almalinux-9'
elif echo "$OUTPUT" | grep -q "AlmaLinux 10\|Rocky Linux 10\|Red Hat Enterprise Linux 10\|Oracle Linux Server 10"; then
  SERVER_OS='almalinux-10'
elif echo "$OUTPUT" | grep -q "Ubuntu 22.04\|Ubuntu 24.04"; then
  SERVER_OS='ubuntu'
else
  echo -e "\e[31mHiện tại WPTangToc OLS không hỗ trợ hệ điều hành $(hostnamectl 2>/dev/null | grep System | cut -f2 -d':' | sed 's/^ //g' || echo 'hiện tại') của bạn.\e[0m"
  echo "Hệ điều hành khuyên dùng: AlmaLinux 8, 9, 10 | Rocky Linux 8, 9, 10 | Ubuntu 22.04, 24.04."
  rm -f wptangtoc-ols || true
  exit 1
fi

if [[ "$ARCH" == 'aarch64' && "$SERVER_OS" == 'almalinux' ]]; then
  clear
  echo -e "\e[31mWPTangToc OLS không hỗ trợ CPU ARM trên phiên bản AlmaLinux 8.\e[0m"
  echo "Để chạy trên kiến trúc ARM, vui lòng sử dụng AlmaLinux 9, Rocky Linux 9 hoặc Ubuntu."
  rm -f wptangtoc-ols || true
  exit 1
fi

# YÊU CẦU QUYỀN ROOT
check_root=$(whoami 2>/dev/null || who | awk '{print $1}' | head -n 1 || echo "root")
if [[ "$check_root" != "root" ]]; then
  echo -e "\e[31mLỗi: Vui lòng sử dụng tài khoản root để cài đặt WPTangToc OLS.\e[0m"
  echo "Hướng dẫn login root: https://wptangtoc.com/wptangtoc-ols-cau-hoi-thuong-gap/"
  rm -f wptangtoc-ols || true
  exit 1
fi

# KIỂM TRA MÔI TRƯỜNG DOCKER / THIẾU SYSTEMD
if [[ ! -d /run/systemd/system ]]; then
  clear
  echo -e "\e[31mLỖI MÔI TRƯỜNG: Phát hiện Docker, Container hoặc hệ thống thiếu Systemd!\e[0m"
  echo "WPTangToc OLS quản lý các dịch vụ cốt lõi (LiteSpeed, MariaDB, Firewall...) thông qua Systemd."
  echo "Môi trường hiện tại không hỗ trợ Systemd (PID 1) nên không thể tiếp tục cài đặt."
  echo -e "\e[33m➜ Hướng xử lý: Vui lòng cài đặt trên VPS / Máy chủ vật lý (KVM, VMware...) có hệ điều hành đầy đủ.\e[0m"
  rm -f wptangtoc-ols || true
  exit 1
fi

# ==============================================================================
# 3. QUÉT MÔI TRƯỜNG & PANEL CŨ CẠNH TRANH
# ==============================================================================
function canh_bao_panel_cu() {
  local ten_panel="$1"
  clear
  echo -e "\e[31mCẢNH BÁO: Máy chủ của bạn đã cài đặt sẵn \e[33m${ten_panel}\e[31m!\e[0m"
  echo "Để WPTangToc OLS hoạt động mượt mà và bảo mật nhất, yêu cầu hệ điều hành mới tinh (Fresh OS)."
  echo -e "\n➜ Hướng xử lý: Hãy Rebuild/Reinstall lại VPS (Khuyên dùng: AlmaLinux 9)."
  rm -f wptangtoc-ols || true
  exit 1
}

if [[ -d /etc/wptt ]]; then
  clear
  echo -e "\e[32mMáy chủ của bạn đã được cài đặt WPTangToc OLS từ trước!\e[0m"
  echo "Yêu cầu hỗ trợ: Gia Tuấn - Email: giatuan@wptangtoc.com"
  rm -f wptangtoc-ols || true
  exit 0
fi

declare -A cac_panel_khac=(
  # === Control Panel thương mại ===
  ["/var/cpanel/cpanel.config"]="WHM/cPanel"
  ["/usr/local/directadmin"]="DirectAdmin"
  ["/etc/psa/.psa.shadow"]="Plesk"
  ["/usr/local/webuzo"]="Webuzo"
  ["/usr/local/mgr5"]="ispmanager v5"
  ["/usr/local/mgr6"]="ispmanager v6"

  # === Control Panel mã nguồn mở / Miễn phí phổ biến ===
  ["/usr/local/lscp"]="CyberPanel"
  ["/www/server/panel"]="aaPanel / BT-Panel"
  ["/opt/1panel"]="1Panel"
  ["/usr/local/cloudpanel"]="CloudPanel"
  ["/usr/local/fastpanel2"]="FastPanel"
  ["/usr/local/vesta"]="VestaCP"
  ["/usr/local/hestia"]="HestiaCP"
  ["/usr/local/cwpsrv"]="CentOS Web Panel (CWP)"
  ["/etc/webmin"]="Webmin"
  ["/etc/webmin/virtual-server"]="Virtualmin"
  ["/usr/local/ispconfig"]="ISPConfig"
  ["/var/sentora"]="Sentora"

  # === Script quản trị VPS tại Việt Nam ===
  ["/etc/hocvps/scripts.conf"]="HocVPS"
  ["/root/vpssim.conf"]="VPSSIM"
  ["/etc/larvps/.larvps.conf"]="LarVPS"
  ["/opt/tinopanel"]="TinoPanel"
  ["/var/hostvn/hostvn.conf"]="HostVN"
  ["/opt/vpanel"]="Vpanel"
  ["/etc/flashvps"]="FlashVPS"

  # === LEMP / CLI ===
  ["/usr/local/bin/wo"]="WordOps"
  ["/usr/local/bin/ee"]="EasyEngine v3"
  ["/opt/easyengine"]="EasyEngine v4"
  ["/home/kusanagi"]="Kusanagi"
  ["/root/oneinstack"]="OneinStack"
  ["/bin/lnmp"]="LNMP.org"
  ["/root/lnmp"]="LNMP.org"

  # === Cloud Panel Quản lý (Agent-based) ===
  ["/etc/runcloud"]="RunCloud"
  ["/etc/serverpilot"]="ServerPilot"
  ["/etc/ploi"]="Ploi.io"
  ["/root/.forge"]="Laravel Forge"
  ["/opt/gridpane"]="GridPane"
  ["/etc/spinupwp"]="SpinupWP"

  # === Trùng lặp nền tảng LiteSpeed ===
  ["/usr/local/lsws"]="LiteSpeed Web Server"
  ["/home/lsws"]="LiteSpeed Web Server"
)

for path in "${!cac_panel_khac[@]}"; do
  if [[ -e "$path" ]]; then
		canh_bao_panel_cu "${cac_panel_khac[$path]}"
  fi
done

# ==============================================================================
# 4. TỰ ĐỘNG XỬ LÝ LỖI PHÂN VÙNG /home DUNG LƯỢNG LỚN (LVM AUTO-MERGE)
# ==============================================================================
HOME_DEV=$(df -P /home 2>/dev/null | awk 'NR==2 {print $1}' || echo "")
ROOT_DEV=$(df -P / 2>/dev/null | awk 'NR==2 {print $1}' || echo "")
FS_TYPE=$(df -Th 2>/dev/null | awk '$NF=="/" {print $2}' || echo "")

if [[ -n "$HOME_DEV" && -n "$ROOT_DEV" && "$HOME_DEV" != "$ROOT_DEV" ]]; then
  if [[ "${PWD:-}" == /home* ]]; then
    clear
    echo -e "\e[31mLỖI NGHIÊM TRỌNG: Script đang chạy từ bên trong thư mục /home!\e[0m"
    echo "Hệ thống không thể gộp phân vùng ổ cứng khi bạn đang đứng bên trong nó."
    echo -e "\e[33m➜ Hướng xử lý: Chuyển ra thư mục /root và chạy lại:\e[0m"
    echo "mv wptangtoc-ols /root/ && cd /root && bash wptangtoc-ols"
    exit 1
  fi

  HOME_TYPE=$(lsblk -no TYPE "$HOME_DEV" 2>/dev/null | grep -ow "lvm" || echo "")
  ROOT_TYPE=$(lsblk -no TYPE "$ROOT_DEV" 2>/dev/null | grep -ow "lvm" || echo "")

  if [[ "$HOME_TYPE" == "lvm" && "$ROOT_TYPE" == "lvm" ]]; then
    clear
    echo -e "\e[33m╭──────────────────────────────────────────────────────────────────────────────╮\e[0m"
    echo -e "\e[33m│                  CẢNH BÁO: TÁI CẤU TRÚC PHÂN VÙNG Ổ CỨNG                     │\e[0m"
    echo -e "\e[33m├──────────────────────────────────────────────────────────────────────────────┤\e[0m"
    echo -e "\e[33m│\e[0m Hệ thống phát hiện VPS của bạn đang chia phần lớn dung lượng cho ổ \e[36m/home\e[0m.    \e[33m│\e[0m"
    echo -e "\e[33m│\e[0m WPTangToc OLS lưu trữ dữ liệu Web và Database tại phân vùng gốc \e[36m/\e[0m.             \e[33m│\e[0m"
    echo -e "\e[33m│\e[0m Nếu không gộp, website của bạn sẽ rất nhanh bị đầy ổ cứng và sập MariaDB.    \e[33m│\e[0m"
    echo -e "\e[33m├──────────────────────────────────────────────────────────────────────────────┤\e[0m"
    echo -e "\e[33m│\e[0m \e[1;31mRỦI RO TỚI DỮ LIỆU:\e[0m Việc gộp LVM can thiệp rất sâu vào nhân hệ điều hành.    \e[33m│\e[0m"
    echo -e "\e[33m│\e[0m Yêu cầu bạn phải \e[1;31mCHỤP SNAPSHOT / BACKUP\e[0m toàn bộ VPS trên trang quản lý của   \e[33m│\e[0m"
    echo -e "\e[33m│\e[0m nhà cung cấp trước khi bấm Đồng ý để phòng sự cố cúp điện hoặc Kernel Panic. \e[33m│\e[0m"
    echo -e "\e[33m╰──────────────────────────────────────────────────────────────────────────────╯\e[0m"
    echo ""

    while true; do
      echo -en "\e[36m➤ Bạn có ĐỒNG Ý thực hiện gộp ổ /home vào nhánh gốc (/) không? (y/n): \e[0m"
      read -r confirm_merge
      if [[ "$confirm_merge" == "n" || "$confirm_merge" == "N" ]]; then
        echo -e "\n\e[31mĐã hủy tiến trình cài đặt.\e[0m"
        echo "Lời khuyên: Bạn có thể chủ động cài lại hệ điều hành (Rebuild OS) từ trang quản lý Cloud và thiết lập cấp 100% dung lượng cho ổ / (Root), sau đó chạy lại mã cài đặt."
        rm -f wptangtoc-ols || true
        exit 1
      elif [[ "$confirm_merge" == "y" || "$confirm_merge" == "Y" ]]; then
        echo -e "\n\e[32mĐã xác nhận! Bắt đầu phẫu thuật gộp phân vùng...\e[0m"
        break
      else
        echo -e "\e[31m❌ Vui lòng nhập 'y' (Đồng ý) hoặc 'n' (Hủy bỏ).\e[0m"
      fi
    done

    SECURE_HOME_BACKUP=$(mktemp -d)
    cp -a /home/. "$SECURE_HOME_BACKUP/" 2>/dev/null || true

    for user_dir in /home/*; do
      if [[ -d "$user_dir" ]]; then
        username=$(basename "$user_dir")
        [[ "$username" != "root" ]] && (pkill -9 -u "$username" >/dev/null 2>&1 || true)
      fi
    done

    if ! command -v fuser >/dev/null 2>&1; then
      if command -v dnf >/dev/null 2>&1; then dnf install psmisc -y >/dev/null 2>&1 || true; fi
      if command -v apt-get >/dev/null 2>&1; then env DEBIAN_FRONTEND=noninteractive apt-get install psmisc -y >/dev/null 2>&1 || true; fi
    fi
    command -v fuser >/dev/null 2>&1 && (fuser -k -m -9 /home >/dev/null 2>&1 || true)

    sync && sleep 3

    umount_success=0
    for i in {1..3}; do
      if umount -f /home >/dev/null 2>&1; then
        umount_success=1
        break
      fi
      sleep 2
    done

    if [[ $umount_success -eq 0 ]]; then
      clear
      echo -e "\e[31mTHẤT BẠI: Không thể ngắt kết nối ổ /home.\e[0m"
      echo "Vui lòng khởi động lại (reboot) máy chủ và chạy lại kịch bản từ /root."
      exit 1
    fi

    if ! lvremove -y "$HOME_DEV" >/dev/null 2>&1; then
      mount "$HOME_DEV" /home 2>/dev/null || true
      echo -e "\e[31mTHẤT BẠI: Lỗi khi xóa Logical Volume.\e[0m"
      exit 1
    fi

    lvextend -l +100%FREE "$ROOT_DEV" >/dev/null 2>&1 || true
    if [[ "$FS_TYPE" == "xfs" ]]; then
      xfs_growfs / >/dev/null 2>&1 || true
    else
      resize2fs "$ROOT_DEV" >/dev/null 2>&1 || true
    fi

    sed -i '/[[:space:]]\/home[[:space:]]/d' /etc/fstab || true
    mkdir -p /home
    shopt -s dotglob

    mv "$SECURE_HOME_BACKUP"/* /home/ 2>/dev/null || true
    shopt -u dotglob
    rm -rf "$SECURE_HOME_BACKUP" || true

    echo -e "\e[32mGộp phân vùng ổ cứng thành công!\e[0m"
    sleep 2
  else
    clear
    echo -e "\e[31mLỖI: Máy chủ chia phân vùng /home riêng không dùng LVM.\e[0m"
    echo "WPTangToc OLS yêu cầu 100% dung lượng nằm ở nhánh gốc (/)."
    echo -e "\e[33m➜ Hướng xử lý: Hãy Reinstall lại VPS và chọn cấp 100% dung lượng cho nhánh gốc (/).\e[0m"
    rm -f wptangtoc-ols || true
    exit 1
  fi
fi

# ==============================================================================
# 5. XÁC THỰC BẢO MẬT GPG & TÍNH TOÀN VẸN MÃ NGUỒN (GPG + SHA256)
# ==============================================================================
rm -f "wptangtoc-ols" "wptangtoc-ols-$SERVER_OS" || true

echo "Đang chuẩn bị môi trường bảo mật..."

echo "Đang chuẩn bị môi trường bảo mật..."

for tool in curl gpg sha256sum; do
  if ! command -v "$tool" >/dev/null 2>&1; then
    
    if command -v dnf >/dev/null 2>&1; then
      # Sử dụng mảng (array) để lưu gói cài đặt
      pkgs=("$tool")
      [[ "$tool" == "gpg" ]] && pkgs=("gnupg2")
      [[ "$tool" == "sha256sum" ]] && pkgs=("coreutils")

      if [[ "$SERVER_OS" == 'almalinux' ]]; then
        dnf -y clean packages >/dev/null 2>&1 || true
        rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux >/dev/null 2>&1 || true
      fi
      dnf install -y -q "${pkgs[@]}" >/dev/null 2>&1 || true
      
    elif command -v apt-get >/dev/null 2>&1; then
      pkgs=("$tool")
      [[ "$tool" == "gpg" ]] && pkgs=("gnupg" "gpg-agent" "dirmngr")
      [[ "$tool" == "sha256sum" ]] && pkgs=("coreutils")
      
      env DEBIAN_FRONTEND=noninteractive apt-get update -q >/dev/null 2>&1 || true
      # Gọi mảng chuẩn xác, ShellCheck sẽ xanh lè
      env DEBIAN_FRONTEND=noninteractive apt-get install -y -q "${pkgs[@]}" >/dev/null 2>&1 || true
    fi
  fi
done

echo -en "\033[1A\033[2K\r"

secure_download() {
  local url="$1"
  local dest="$2"
  local max_attempts=3
  local attempt=1

  while [[ $attempt -le $max_attempts ]]; do
    if curl --tlsv1.2 -sfL --connect-timeout 15 --max-time 45 -A "checksum wptangtoc ols" "$url" -o "$dest"; then
      return 0
    fi
    sleep 5
    ((attempt++))
  done
  return 1
}

EXPECTED_FP="EE091EEB9A5189BC80837C059AA528D37B902267"
KEY_EMAIL="giatuan@wptangtoc.com"
PUB_KEY_TMP="$WPTT_SECURE_TMP/wptangtoc-gpg-pub.key"

if ! gpg --list-keys "$EXPECTED_FP" 2>/dev/null | grep -qi "$KEY_EMAIL"; then
  echo "Đang nạp và đối soát Khóa bảo mật GPG WPTangToc..."

  if ! secure_download "https://wptangtoc.com/share/wptangtoc-gpg-pub.key" "$PUB_KEY_TMP"; then
    if ! secure_download "https://raw.githubusercontent.com/wptangtoc/wptangtoc-ols/refs/heads/main/wptangtoc-gpg-pub.key" "$PUB_KEY_TMP"; then
      echo -e "\e[31mLỖI: Không thể tải Khóa bảo mật GPG từ máy chủ chính và GitHub sau nhiều lần thử!\e[0m"
      exit 1
    fi
  fi

  REAL_FP=$(gpg --show-keys --with-colons "$PUB_KEY_TMP" 2>/dev/null | awk -F: '$1 == "fpr" {print $10}' | head -n 1 || echo "")

  if [[ -n "$REAL_FP" && "$REAL_FP" == "$EXPECTED_FP" ]]; then
    gpg --import "$PUB_KEY_TMP" >/dev/null 2>&1 || true
    rm -f "$PUB_KEY_TMP" || true
  else
    rm -f "$PUB_KEY_TMP" || true
    clear
    echo -e "\n\e[31m╭──────────────────────────────────────────────────────────────────────────────╮\e[0m"
    echo -e "\e[31m│\e[0m \e[1;33mCẢNH BÁO BẢO MẬT: PHÁT HIỆN PUBLIC KEY BỊ GIẢ MẠO (MITM)!\e[0m                  \e[31m│\e[0m"
    echo -e "\e[31m├──────────────────────────────────────────────────────────────────────────────┤\e[0m"
    echo -e "\e[31m│\e[0m Fingerprint thực tế: $REAL_FP"
    echo -e "\e[31m│\e[0m Fingerprint chuẩn : $EXPECTED_FP"
    echo -e "\e[31m│\e[0m Tiến trình cài đặt bị HỦY NGAY LẬP TỨC để bảo vệ máy chủ an toàn!              \e[31m│\e[0m"
    echo -e "\e[31m╰──────────────────────────────────────────────────────────────────────────────╯\e[0m\n"
    exit 1
  fi
  echo -en "\033[1A\033[2K\r"
fi

function download_and_verify() {
  local url_script="$1"
  local url_checksum="$2"
  local url_sig="$3"

  local tmp_checksum="$WPTT_SECURE_TMP/SHA256SUMS.txt"
  local tmp_sig="$WPTT_SECURE_TMP/SHA256SUMS.txt.sig"
  local target_script="wptangtoc-ols-$SERVER_OS"

  # Tải file checksum và file chữ ký (có Retry)
  if ! secure_download "$url_checksum" "$tmp_checksum" || ! secure_download "$url_sig" "$tmp_sig"; then
    return 1
  fi

  # [ENTERPRISE GPG CHUẨN VERIFY] Kiểm tra tính toàn vẹn VÀ ghim cứng Fingerprint
  local status_out
  status_out=$(gpg --status-fd 1 --batch --verify "$tmp_sig" "$tmp_checksum" 2>/dev/null || true)
  if ! (grep -q '\[GNUPG:\] GOODSIG' <<<"$status_out" &&
    grep -qE "\[GNUPG:\] VALIDSIG ${EXPECTED_FP}" <<<"$status_out"); then
    echo -e "\e[31m[CẢNH BÁO BẢO MẬT] Chữ ký GPG không hợp lệ hoặc không được ký bởi tác giả WPTangToc OLS!\e[0m"
    return 1
  fi

  # Tải Script chính (có Retry)
  if ! secure_download "$url_script" "$target_script"; then
    rm -f "$target_script" || true
    return 1
  fi

  # Quét Regex cực kỳ nghiêm ngặt để trích xuất Hash từ file Checksum
  local expected_hash actual_hash
  expected_hash=$(grep -E "^[a-f0-9]{64}[[:space:]]+${target_script}$" "$tmp_checksum" | tr -d '\r' | awk '{print $1}' || true)

  if [[ -z "$expected_hash" ]]; then
    rm -f "$target_script" || true
    return 1
  fi

  actual_hash=$(sha256sum "$target_script" 2>/dev/null | awk '{print $1}' || true)

  if [[ "$expected_hash" == "$actual_hash" ]]; then
    return 0
  else
    rm -f "$target_script" || true
    return 1
  fi
}

echo "Đang tải và kiểm chứng mã nguồn (GPG & SHA256)..."
DOWNLOAD_SUCCESS=0

if download_and_verify \
  "https://wptangtoc.com/share/wptangtoc-ols-$SERVER_OS" \
  "https://hub.wptangtoc.com/SHA256SUMS.txt" \
  "https://hub.wptangtoc.com/SHA256SUMS.txt.sig"; then
  DOWNLOAD_SUCCESS=1
  echo -en "\033[1A\033[2K\r"
else
  echo -en "\033[1A\033[2K\r"
  echo -e "\e[33mNguồn chính gián đoạn. Tự động chuyển vùng sang GitHub Releases...\e[0m"
  if download_and_verify \
    "https://github.com/wptangtoc/wptangtoc-ols/releases/latest/download/wptangtoc-ols-$SERVER_OS" \
    "https://github.com/wptangtoc/wptangtoc-ols/releases/latest/download/SHA256SUMS.txt" \
    "https://github.com/wptangtoc/wptangtoc-ols/releases/latest/download/SHA256SUMS.txt.sig"; then
    DOWNLOAD_SUCCESS=1
    echo -en "\033[1A\033[2K\r"
  fi
fi

if [[ $DOWNLOAD_SUCCESS -eq 0 ]]; then
  echo ""
  echo -e "\e[31m╭──────────────────────────────────────────────────────────────────────────────╮\e[0m"
  echo -e "\e[31m│\e[0m \e[1;31mLỖI BẢO MẬT: KHÔNG THỂ XÁC MINH TÍNH TOÀN VẸN CỦA BẢN CÀI ĐẶT!\e[0m               \e[31m│\e[0m"
  echo -e "\e[31m├──────────────────────────────────────────────────────────────────────────────┤\e[0m"
  echo -e "\e[31m│\e[0m Hệ thống không thể xác thực Chữ ký số GPG hoặc mã băm SHA256 từ các nguồn.   \e[31m│\e[0m"
  echo -e "\e[31m│\e[0m Tiến trình tự động HỦY để bảo vệ VPS của bạn khỏi các cuộc tấn công MITM.    \e[31m│\e[0m"
  echo -e "\e[31m│\e[0m Vui lòng kiểm tra lại kết nối mạng hoặc liên hệ tác giả: Gia Tuấn.           \e[31m│\e[0m"
  echo -e "\e[31m╰──────────────────────────────────────────────────────────────────────────────╯\e[0m\n"
  exit 1
fi

echo -e "\e[32m✔ Xác minh Chữ ký số GPG & SHA256 hoàn tất: Bản cài đặt chính chủ 100%!\e[0m"
sleep 1
echo -en "\033[1A\033[2K\r"

# ==============================================================================
# 6. THỰC THI GÓI CÀI ĐẶT CHÍNH THỨC & DỌN DẸP
# ==============================================================================
[[ -n "${WPTT_SECURE_TMP:-}" && -d "$WPTT_SECURE_TMP" ]] && rm -rf "${WPTT_SECURE_TMP:?}" || true
trap - ERR EXIT SIGINT SIGTERM
bash "wptangtoc-ols-$SERVER_OS" "$@"
