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

PANEL_URL="http://xapi.reality.pp.ua"
CONFIG_FILE="/etc/xboard-node/config.yml"

if [ "$(id -u)" -ne 0 ]; then
    echo -e "\033[31m[错误] 请以 root 权限运行此脚本！\033[0m"
    exit 1
fi

echo -e "\033[32m========================================\033[0m"
echo -e "\033[32m  Xboard 服务器管理 (Machine) 纯净部署   \033[0m"
echo -e "\033[32m========================================\033[0m"

# 1. 交互收集基础机器信息
while true; do
    read -rp "请输入 Xboard 服务器 ID (Machine ID, 正整数): " MACHINE_ID
    if [[ "$MACHINE_ID" =~ ^[0-9]+$ ]]; then
        break
    else
        echo -e "\033[31m[错误] Machine ID 必须是正整数！\033[0m"
    fi
done

while true; do
    read -rp "请输入 Xboard 服务器管理 Token (Machine Token): " MACHINE_TOKEN
    [ -n "$MACHINE_TOKEN" ] && break
done

# 2. 清理系统 DNS 中的 IPv6 地址（仅净化域名解析通道，完全不改动任何 IPv6 路由/出站/送中配置）
echo -e "\n\033[34m[1/3] 净化系统 DNS 解析通道 (保持 IPv6 业务分流)... \033[0m"
cat << 'EOF' > /etc/resolv.conf
nameserver 8.8.8.8
nameserver 1.1.1.1
EOF

# 3. 清理旧环境并安装 Machine 服务
echo -e "\n\033[34m[2/3] 注册并拉起 Machine 实例...\033[0m"
systemctl stop xboard-node 2>/dev/null || true
killall -9 xboard-node 2>/dev/null || true
rm -rf /etc/xboard-node

curl -fsSL https://raw.githubusercontent.com/cedar2025/xboard-node/dev/install.sh | \
    bash -s -- --mode machine \
    --panel "${PANEL_URL}" \
    --machine-id "${MACHINE_ID}" \
    --token "${MACHINE_TOKEN}"

# 4. 注入日志过滤配置（屏蔽公网扫描刷屏）
echo -e "\n\033[34m[3/3] 优化日志级别...\033[0m"
systemctl stop xboard-node 2>/dev/null || true

if [ -f "$CONFIG_FILE" ]; then
    if grep -q "log:" "$CONFIG_FILE"; then
        sed -i '/log:/,/level:/ s/level:.*/level: "warn"/' "$CONFIG_FILE"
    else
        cat << 'YAML' >> "$CONFIG_FILE"
log:
  level: "warn"
  timestamp: true
YAML
    fi
fi

systemctl daemon-reload
systemctl restart xboard-node

echo -e "\n\033[32m========================================\033[0m"
echo -e "\033[32m    Machine 部署完成！日志与双栈已就绪   \033[0m"
echo -e "\033[32m========================================\033[0m"
sleep 2
journalctl -u xboard-node -f