#!/bin/bash

# 1. 检查是否以 root 权限运行
if [ "$EUID" -ne 0 ]; then 
    echo "❌ 错误：请使用 root 权限运行此脚本 (例如: sudo bash $0)"
    exit 1
fi

# 2. 定义变量
PLANET_URL="https://xz.cqshihua.cn/%E5%85%B6%E5%AE%83/planet"
ZT_DIR="/var/lib/zerotier-one"
NETWORK_ID="42afef45d6859962"

# 定义北京外国语大学(BFSU)镜像源基础地址
BFSU_DEBIAN="https://mirrors.bfsu.edu.cn/debian"
BFSU_UBUNTU="https://mirrors.bfsu.edu.cn/ubuntu"
BFSU_UBUNTU_PORTS="https://mirrors.bfsu.edu.cn/ubuntu-ports"

# 3. 备份并清理第三方软件源
echo "🗑️ 正在备份并清理第三方软件源..."
if [ -d /etc/apt/sources.list.d ]; then
    mv /etc/apt/sources.list.d /etc/apt/sources.list.d.bak.$(date +%s)
    mkdir -p /etc/apt/sources.list.d
    echo "✅ 已备份旧配置并创建新的 sources.list.d 目录。"
fi

# 4. 检测系统发行版并替换为 BFSU 软件源
echo "🔄 正在检测系统并替换为 BFSU 软件源..."
CODENAME=$(lsb_release -cs)
IS_DEBIAN=$(grep -Ei 'debian' /etc/os-release)
IS_UBUNTU=$(grep -Ei 'ubuntu' /etc/os-release)

# 处理 DEB822 格式 (Ubuntu 24.04+ / Debian 12+)
if [ -f /etc/apt/sources.list.d/ubuntu.sources ]; then
    sed -i "s|http://ports.ubuntu.com|$BFSU_UBUNTU_PORTS|g" /etc/apt/sources.list.d/ubuntu.sources
    sed -i "s|https://mirrors.aliyun.com|$BFSU_UBUNTU_PORTS|g" /etc/apt/sources.list.d/ubuntu.sources
elif [ -f /etc/apt/sources.list.d/debian.sources ]; then
    sed -i "s|https://deb.debian.org|$BFSU_DEBIAN|g" /etc/apt/sources.list.d/debian.sources
    sed -i "s|https://mirrors.aliyun.com|$BFSU_DEBIAN|g" /etc/apt/sources.list.d/debian.sources
# 处理传统格式 (Ubuntu 22.04及以下 / Debian 11及以下)
elif [ -f /etc/apt/sources.list ]; then
    if [ -n "$IS_UBUNTU" ]; then
        # Ubuntu 系统
        sed -i "s|http://ports.ubuntu.com|$BFSU_UBUNTU_PORTS|g" /etc/apt/sources.list
        sed -i "s|http://archive.ubuntu.com|$BFSU_UBUNTU|g" /etc/apt/sources.list
        sed -i "s|https://mirrors.aliyun.com|$BFSU_UBUNTU|g" /etc/apt/sources.list
    elif [ -n "$IS_DEBIAN" ]; then
        # Debian 系统
        sed -i "s|https://deb.debian.org|$BFSU_DEBIAN|g" /etc/apt/sources.list
        sed -i "s|http://deb.debian.org|$BFSU_DEBIAN|g" /etc/apt/sources.list
        sed -i "s|https://mirrors.aliyun.com|$BFSU_DEBIAN|g" /etc/apt/sources.list
    fi
fi

# 更新软件包索引
#echo "📥 正在更新软件包索引..."
#apt update

# 5. 安装 ZeroTier (如果尚未安装)
if ! command -v zerotier-cli &> /dev/null; then
    echo "📦 正在安装 ZeroTier..."
    if curl -s https://install.zerotier.com | bash; then
        echo "✅ ZeroTier 安装成功。"
    else
        echo "❌ ZeroTier 安装失败，请检查网络连接。"
        exit 1
    fi
else
    echo "✅ ZeroTier 已安装，跳过安装步骤。"
fi

# 6. 确保目录存在并下载 Planet 文件
echo "🌍 正在下载并替换 Planet 文件..."
mkdir -p "$ZT_DIR"
if wget -P /var/lib/zerotier-one -O planet http://47.92.193.211/%E5%85%B6%E5%AE%83/planet; then
    echo -e "\n✅ Planet 文件替换成功！"
else
    echo -e "\n❌ Planet 文件下载失败，请检查网络或 URL。"
    exit 1
fi

# 7. 重启 ZeroTier 服务
echo "🔄 正在重启 ZeroTier 服务..."
service zerotier-one restart

# 8. 加入网络
echo "🔗 正在加入网络: 42afef45d6859962"
zerotier-cli join 42afef45d6859962

echo "🎉 部署完成！你可以使用 'zerotier-cli status' 或 'zerotier-cli listnetworks' 查看状态。"