#!/bin/bash

# 检查是否具有root权限
if [ "$EUID" -ne 0 ]; then
  echo "***请以root用户运行此脚本。"
  exit 1
fi

# 检查星桥客户端是否已经安装
if command -v zerotier-cli &> /dev/null; then
  echo "***星桥客户端已经安装，跳过安装步骤。"
else
  # 安装星桥客户端
  echo "***星桥客户端未安装，正在安装星桥客户端..."
  curl -s https://install.yyds.fr/zerotier.sh | sudo bash

  # 检查安装是否成功
  if ! command -v zerotier-cli &> /dev/null; then
    echo "***星桥客户端安装失败，请检查网络连接或安装脚本。"
    exit 1
  fi
fi

# 确定planet目录位置
PLANET_DIR=""

if [ -d "/var/lib/zerotier-one" ]; then
  PLANET_DIR="/var/lib/zerotier-one"
elif [ -d "/etc/zerotier-one" ]; then
  PLANET_DIR="/etc/zerotier-one"
elif [ -d "/etc/config/zero" ]; then
  PLANET_DIR="/etc/config/zero"
elif [ -d "/Library/Application Support/ZeroTier/One/" ]; then
  PLANET_DIR="/Library/Application Support/ZeroTier/One/"
else
  echo "***找不到星桥客户端的planet目录，请检查安装。"
  exit 1
fi

# 定义基础URL
BASE_URL="https://dl.hbytw.cc"

# 下载并替换planet和local.conf文件
echo "***正在下载并替换planet和local.conf文件..."
cd "$PLANET_DIR"
curl -O "$BASE_URL/planet"
curl -O "$BASE_URL/local.conf"

# 重启星桥客户端服务
echo "***正在重启星桥客户端服务..."
if systemctl is-active --quiet zerotier-one; then
  systemctl restart zerotier-one
elif service zerotier-one status &> /dev/null; then
  service zerotier-one restart
elif [ -x "/etc/init.d/zerotier-one" ]; then
  /etc/init.d/zerotier-one restart
elif [ "$(uname)" == "Darwin" ]; then
  launchctl unload /Library/LaunchDaemons/com.zerotier.one.plist
  launchctl load /Library/LaunchDaemons/com.zerotier.one.plist
else
  echo "***无法重启星桥客户端服务，请手动重启。"
  exit 1
fi

# 获取ZeroTier客户端ID
echo
echo
CLIENT_ID=$(cat "$PLANET_DIR/identity.public" | cut -d : -f 1)
echo "***星桥客户端安装和配置完成。您的星桥客户端ID是 [ $CLIENT_ID ]."
echo