#!/bin/bash
if [ -z "$BASE" ]; then
    BASE="/mnt"
fi

# 参数解析：-s 或 --skip-docker 跳过Docker安装检查
SKIP_DOCKER=false
while [[ "$#" -gt 0 ]]; do
    case $1 in
        -s|--skip-docker) SKIP_DOCKER=true ;;
        *) echo "Unknown parameter passed: $1"; exit 1 ;;
    esac
    shift
done

# 检查Docker是否已安装（可通过参数跳过）
if [ "$SKIP_DOCKER" = false ] && ! [ -x "$(command -v docker)" ]; then
  echo "Docker is not installed, installing now..."

  # 检测操作系统类型
  detect_os() {
    if [ -f /etc/os-release ]; then
      . /etc/os-release
      OS=$NAME
      VERSION=$VERSION_ID
    elif [ -f /etc/redhat-release ]; then
      OS=$(cat /etc/redhat-release | cut -d' ' -f1)
      VERSION=$(cat /etc/redhat-release | grep -o '[0-9]\+' | head -n1)
    else
      OS="Unknown"
      VERSION="Unknown"
    fi
  }

  detect_os
  echo "Detected OS: $OS $VERSION"

  # 根据操作系统选择安装方式
  install_docker() {
    # 检查是否为 Rocky Linux 9.x / RHEL 9.x
    if [[ "$OS" == *"Rocky Linux"* && "$VERSION" == "9"* ]] || [[ "$OS" == *"Red Hat"* && "$VERSION" == "9"* ]]; then
      echo "Using manual Docker installation for $OS $VERSION..."
      
      # 卸载旧版本
      sudo dnf remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y 2>/dev/null || true
      
      # 安装依赖
      sudo dnf -y install dnf-plugins-core
      
      # 添加 Docker 仓库
      sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      
      # 清理缓存并重新生成
      sudo dnf clean all
      sudo dnf makecache
      
      # 方案 A：尝试安装 docker-ce
      if sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; then
        echo "Docker installed successfully using method A"
      else
        # 方案 B：搜索可用的 docker 包
        echo "Method A failed, trying alternative packages..."
        sudo dnf search docker | grep -i "docker-ce\|docker" | head -10
        echo "Attempting to install docker package..."
        sudo dnf -y install docker 2>/dev/null || true
      fi
    else
      # 默认使用官方脚本安装
      echo "Using official Docker installation script..."
      curl -fsSL https://get.docker.com | bash -s docker
    fi
  }

  install_docker
  # 启动Docker服务
  sudo systemctl enable docker
  sudo systemctl start docker
  #开机启动
  sudo systemctl enable --now docker
  echo "Docker has been installed and started."
else
  echo "Docker is already installed."
fi


curl -O https://s.sunqida.cn/gate.tar.enc
# openssl enc -aes-256-cbc -salt -in gate.tar -out gate.tar.enc
openssl enc -d -aes-256-cbc -pbkdf2 -in gate.tar.enc | tar -xvf -

rm gate.tar.enc
# 提示用户输入变量值
#尝试读取环境变量 HOST_IP,如果未设置,并提示用户输入回车默认为 10.10.10.1
if [ -z "$HOST_IP" ]; then
  HOST_IP="10.10.10.1"
  echo "未设置环境变量 HOST_IP，使用默认值 $HOST_IP"
  echo "输入虚拟网IP：默认（$HOST_IP）"
  read IP
  #检查用户是否输入了值,如果未输入,则使用默认值
  if [ -z "$IP" ]; then
    echo "未输入IP，使用默认值 $HOST_IP"
    IP="$HOST_IP"
  fi
  #更新环境变量 HOST_IP，使其他脚本可以使用,永久生效,写入 /etc/profile
  echo "export HOST_IP=$IP" | sudo tee -a /etc/profile | source /etc/profile
else
  IP=$HOST_IP
fi
echo "IP 设定:$IP"


#尝试读取环境变量 HOST_DOMAIN,如果未设置,并提示用户输入回车默认为 localhost
if [ -z "$HOST_DOMAIN" ]; then
  HOST_DOMAIN="localhost"
  echo "未设置环境变量 HOST_DOMAIN，使用默认值 $HOST_DOMAIN"
  echo "输入域名：默认（$HOST_DOMAIN）"
  read DOMAIN
  # 检查用户是否输入了值,如果未输入,则使用默认值
  if [ -z "$DOMAIN" ]; then
    echo "未输入域名，使用默认值 $HOST_DOMAIN"
    DOMAIN=$HOST_DOMAIN
  fi
  #更新环境变量 HOST_DOMAIN，使其他脚本可以使用,永久生效,更新 /etc/profile
  echo "export HOST_DOMAIN=$DOMAIN" | sudo tee -a /etc/profile | source /etc/profile
else
  DOMAIN=$HOST_DOMAIN   
fi
echo "域名 设定:$DOMAIN"
echo "========================================"
#./headscale-client.sh
#./n2n_edge.sh $IP
./zerotier.sh
./ddns.sh $DOMAIN
#./socks5.sh
#./http-proxy.sh
./agent.sh
./upload.sh
#./xray.sh
#./samba.sh $IP sun
echo "N2N测试"
ping -c 3 10.10.10.1
echo "域名测试"
ping -c 3 $DOMAIN
