#!/usr/bin/env bash
set -e

# ==============================================================
# reality-scanner 一键安装脚本
# 自动检测系统架构并从下载站拉取对应二进制安装到 /usr/local/bin
# ==============================================================

# 下载站基础地址（默认：https://dl.erdaye.shop/Tools/reality-scanner）
# 变更域名时：可直接修改此默认值，也可以在执行时通过环境变量或参数临时指定，例如：
#   DOWNLOAD_BASE="https://new-domain.com/Tools/reality-scanner" bash install.sh
#   或者 bash install.sh "https://new-domain.com/Tools/reality-scanner"
DEFAULT_BASE="https://dl.erdaye.shop/Tools/reality-scanner/dist"
DOWNLOAD_BASE="${1:-${DOWNLOAD_BASE:-$DEFAULT_BASE}}"
# 去除末尾斜杠
DOWNLOAD_BASE="${DOWNLOAD_BASE%/}"

INSTALL_DIR="/usr/local/bin"
BIN_NAME="reality-scanner"

# 1. 检查 root 权限提示
if [ "$(id -u)" -ne 0 ]; then
    echo "提示: 当前非 root 用户，可能需要 sudo 权限写入 ${INSTALL_DIR}"
fi

# 2. 识别操作系统与架构
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
ARCH="$(uname -m)"

case "$OS" in
    linux)   OS="linux" ;;
    darwin)  OS="darwin" ;;
    *)
        echo "不支持的操作系统: $OS"
        exit 1
        ;;
esac

case "$ARCH" in
    x86_64|amd64)
        ARCH="amd64"
        ;;
    aarch64|arm64)
        ARCH="arm64"
        ;;
    *)
        echo "不支持的CPU架构: $ARCH"
        exit 1
        ;;
esac

TARGET_URL="${DOWNLOAD_BASE}/reality-scanner-${OS}-${ARCH}"

echo "=================================================="
echo " 开始安装 reality-scanner"
echo " 系统: ${OS} | 架构: ${ARCH}"
echo " 下载地址: ${TARGET_URL}"
echo "=================================================="

# 3. 创建目录并下载
mkdir -p "$INSTALL_DIR"
TMP_BIN="/tmp/${BIN_NAME}_$RANDOM"

if command -v curl >/dev/null 2>&1; then
    curl -fsSL "$TARGET_URL" -o "$TMP_BIN"
elif command -v wget >/dev/null 2>&1; then
    wget -qO "$TMP_BIN" "$TARGET_URL"
else
    echo "错误: 系统中未找到 curl 或 wget，请先安装"
    exit 1
fi

chmod +x "$TMP_BIN"
mv "$TMP_BIN" "${INSTALL_DIR}/${BIN_NAME}"

echo ""
echo "✅ 安装成功！路径: ${INSTALL_DIR}/${BIN_NAME}"
echo "版本检查:"
"${INSTALL_DIR}/${BIN_NAME}" --version || true
echo ""
echo "快速使用示例:"
echo "  reality-scanner 1.1.1.0/28"
echo "  reality-scanner --sni www.cloudflare.com 1.1.1.1:443"