#!/bin/bash
# ==========================================
#  修罗工具箱 (fg) 一键安装脚本
#  适用: CentOS 7 / Ubuntu / Debian (x86_64)
#  用法: wget -q -O- https://dl.haoyaoshop.cn/pjsqj/install.sh | bash
# ==========================================

# 下载源优先级：HTTPS 域名 → HTTP 域名 → 裸 IP（任一可用即止）
MIRRORS=(
    "https://dl.haoyaoshop.cn"
    "http://dl.haoyaoshop.cn"
    "http://39.107.91.250"
)
BIN="/usr/bin/wd"
TMP="/tmp/xl_fg_install"

RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
BLUE='\033[36m'
OFF='\033[0m'

ok()   { echo -e "${GREEN}[ OK ]${OFF} $1"; }
info() { echo -e "${BLUE}[信息]${OFF} $1"; }
warn() { echo -e "${YELLOW}[警告]${OFF} $1"; }
fail() { echo -e "${RED}[失败]${OFF} $1"; }

echo ""
echo -e "${BLUE}========================================${OFF}"
echo -e "${BLUE}   修罗工具箱 (fg) 一键安装${OFF}"
echo -e "${BLUE}========================================${OFF}"
echo ""

# ---------- 1. 检查 root ----------
if [ "$(id -u)" != "0" ]; then
    fail "请使用 root 用户执行（或前面加 sudo）"
    exit 1
fi
ok "root 权限检查通过"

# ---------- 2. 检查架构 ----------
ARCH=$(uname -m)
case "$ARCH" in
    x86_64|amd64) ok "系统架构: $ARCH" ;;
    *)
        fail "不支持的架构: $ARCH（目前仅提供 x86_64 版本）"
        exit 1
        ;;
esac

# ---------- 3. 备份旧版本 ----------
if [ -f "$BIN" ]; then
    cp -f "$BIN" "${BIN}.bak" 2>/dev/null && \
        info "已备份旧版本 -> ${BIN}.bak"
fi

# ---------- 4. 下载（主源失败自动回退） ----------
DL_OK=0
USED_MIRROR=""
for M in "${MIRRORS[@]}"; do
    info "正在从 $M 下载 ..."
    rm -f "$TMP"
    if command -v wget >/dev/null 2>&1; then
        wget -q --no-check-certificate --timeout=60 --tries=2 -O "$TMP" "$M/pjsqj/fg" && DL_OK=1
    elif command -v curl >/dev/null 2>&1; then
        curl -sSk --connect-timeout 15 --max-time 180 -o "$TMP" "$M/pjsqj/fg" && DL_OK=1
    else
        fail "系统里既没有 wget 也没有 curl，无法下载"
        exit 1
    fi
    if [ "$DL_OK" = "1" ] && [ -s "$TMP" ]; then
        USED_MIRROR="$M"
        break
    fi
    warn "$M 下载失败，尝试下一个源 ..."
    DL_OK=0
done

if [ "$DL_OK" != "1" ] || [ ! -s "$TMP" ]; then
    fail "所有下载源均不可用，请检查网络"
    rm -f "$TMP"
    exit 1
fi
ok "下载源: $USED_MIRROR"

# ---------- 5. 校验文件 ----------
SIZE=$(stat -c %s "$TMP" 2>/dev/null || stat -f %z "$TMP" 2>/dev/null || echo 0)
if [ "$SIZE" -lt 1048576 ]; then
    fail "下载的文件异常（仅 ${SIZE} 字节），可能不是完整程序"
    rm -f "$TMP"
    exit 1
fi
ok "下载完成 ($(( SIZE / 1024 / 1024 )) MB)"

if ! head -c 4 "$TMP" | grep -q 'ELF' 2>/dev/null; then
    warn "文件头不是 ELF，可能下载到了错误内容"
fi

# ---------- 6. 安装 ----------
mv -f "$TMP" "$BIN" || { fail "无法写入 $BIN"; exit 1; }
chmod 755 "$BIN" || { fail "无法设置执行权限"; exit 1; }
ok "已安装到 $BIN"

# ---------- 7. 运行验证 ----------
# 注意：wd 是交互式 TUI，直接执行会挂起等待输入，所以不能用 wd --version 验证
if command -v file >/dev/null 2>&1; then
    FT=$(file -b "$BIN")
    ok "文件验证通过 ($FT)"
else
    ok "文件已安装完成"
fi

# ---------- 8. 成功提示 ----------
echo ""
echo -e "${GREEN}========================================${OFF}"
echo -e "${GREEN}   修罗工具箱安装成功！${OFF}"
echo -e "${GREEN}========================================${OFF}"
echo ""
echo -e "  启动命令:  ${YELLOW}wd${OFF}"
echo ""
echo -e "  说明: 首次启动会校验本机 IP 授权"
echo -e "        未授权的机器会提示输入激活码"
echo -e "        授权地址: ${BLUE}https://dm.haoyaoshop.cn${OFF}"
echo ""
echo -e "  现在输入 ${YELLOW}wd${OFF} 回车即可启动工具箱"
echo ""
exit 0
