if command -v nginx &> /dev/null; then
    echo "✅ Nginx 已安装，跳过安装步骤"
else
    echo "🚀 安装 Nginx"
    # 检测系统类型
    if command -v apt &> /dev/null; then
        # Debian/Ubuntu 系统
        apt install -y nginx
    elif command -v yum &> /dev/null; then
        # CentOS/RHEL 系统
        yum install -y nginx
    elif command -v dnf &> /dev/null; then
        # 较新版本的 Fedora/RHEL 系统
        dnf install -y nginx
    else
        echo "❌ 不支持的操作系统：未找到支持的包管理器"
        exit 1
    fi
fi

# 函数：尝试使用指定的包管理器安装
try_install() {
    local cmd=$1
    if command -v "$cmd" &> /dev/null; then
        echo "📦 尝试使用 $cmd 安装 snapd..."
        if sudo "$cmd" install -y snapd; then
            return 0
        fi
    fi
    return 1
}

# 检查 Certbot 是否已安装
if command -v certbot &> /dev/null; then
    echo "✅ Certbot 已安装，跳过安装步骤"
else
    echo "🚀 安装 Certbot"

    # 检测系统类型
    if [ -f /etc/debian_version ]; then
        # Ubuntu/Debian 系统
        apt install -y certbot python3-certbot-nginx
        # 也可以使用snapd安装
#        apt  install -y snapd
#        # 使用snap安装 certbot
#        snap install --classic certbot
#        # Prepare the Certbot command
#        sudo ln -s /snap/bin/certbot /usr/bin/certbot
    elif [ -f /etc/redhat-release ]; then
        # CentOS/RHEL 系统
        # 首先安装 EPEL 仓库
        yum install -y epel-release
        # 安装 snapd
        # 检查是否已安装
        if command -v snap &> /dev/null; then
            echo "✅ snapd 已经安装"
            exit 0
        fi

        echo "🔍 检测系统包管理器..."

        # 尝试使用 dnf 安装
        if try_install "dnf"; then
            echo "✅ 使用 dnf 安装 snapd 成功"

        # 尝试使用 yum 安装
        elif try_install "yum"; then
            echo "✅ 使用 yum 安装 snapd 成功"

        # 尝试使用 apt-get 安装（适用于 Debian/Ubuntu）
        elif try_install "apt-get"; then
            echo "✅ 使用 apt-get 安装 snapd 成功"

        else
            echo "❌ 无法安装 snapd，未找到支持的包管理器"
            exit 1
        fi

        # 启用 snapd 服务
        systemctl enable --now snapd.socket

        # 创建符号链接
        ln -s /var/lib/snapd/snap /snap

        # 安装 certbot
        snap install --classic certbot
        # Prepare the Certbot command
        sudo ln -s /snap/bin/certbot /usr/bin/certbot
    else
        echo "❌ 不支持的操作系统"
        exit 1
    fi
fi

# 验证安装
echo "🔍 验证安装"
if command -v nginx &> /dev/null && command -v certbot &> /dev/null; then
    echo "✅ Nginx 和 Certbot 安装成功"
    nginx -v
    certbot --version
else
    echo "❌ 安装验证失败"
    exit 1
fi

echo "🚀 复制当前目录的配置文件到nginx配置文件目录"
cp -r ./easyai-proxy.conf /etc/nginx/conf.d/
echo "🚀 重载nginx"
sudo nginx -s reload

# 停止 Nginx 服务以释放 80 端口
sudo nginx -s stop

echo "🚀 使用certbot 自动配置证书"
# 从 Nginx 配置文件中提取所有域名
DOMAINS=$(find /etc/nginx/conf.d/ -name "easyai-proxy.conf" -type f -exec grep "server_name" {} \; | \
    grep -v "#" | \
    awk '{for(i=2;i<=NF;i++) if($i!=";") print $i}' | \
    sed 's/;//g' | \
    sort -u | \
    tr '\n' ' ')

if [ -n "$DOMAINS" ]; then
    # 停止 Nginx 服务
    echo "停止 Nginx 服务..."
    sudo nginx -s stop

    # 构建域名参数字符串
    DOMAIN_ARGS=""
    for domain in $DOMAINS; do
        DOMAIN_ARGS="$DOMAIN_ARGS -d $domain"
    done

    # 使用 certbot --nginx 插件安装证书
    sudo certbot --nginx \
        --non-interactive \
        --agree-tos \
        --email wangbo@51easyai.com \
        --rsa-key-size 2048 \
        --preferred-challenges http \
        --force-renewal \
        $DOMAIN_ARGS

    # 启动 Nginx 服务
    echo "启动 Nginx 服务..."
    sudo nginx
fi