#!/bin/bash

# 快速部署脚本 - 简化版一键部署
# 使用方法: ./quick-deploy.sh

set -e

# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"

echo -e "${BLUE}🚀 CodeLook Proxy Server 快速部署向导${NC}"
echo ""

# 检查 .env 文件
ENV_FILE="$PROJECT_DIR/docker/.env"
if [ ! -f "$ENV_FILE" ]; then
    echo -e "${YELLOW}创建环境配置文件...${NC}"
    cp "$PROJECT_DIR/docker/.env.example" "$ENV_FILE"
fi

# 加载现有配置
source "$ENV_FILE"

# 交互式配置
echo -e "${BLUE}请输入部署配置：${NC}"
echo ""

# 服务器地址
read -p "$(echo -e ${YELLOW}服务器地址 \(IP或域名\): ${NC})" REMOTE_HOST
if [ -z "$REMOTE_HOST" ]; then
    echo -e "${RED}错误: 服务器地址不能为空${NC}"
    exit 1
fi

# 服务器用户
read -p "$(echo -e ${YELLOW}SSH 用户名 [root]: ${NC})" REMOTE_USER
REMOTE_USER=${REMOTE_USER:-root}

# SSH 端口
read -p "$(echo -e ${YELLOW}SSH 端口 [22]: ${NC})" REMOTE_PORT
REMOTE_PORT=${REMOTE_PORT:-22}

# 代理端口
read -p "$(echo -e ${YELLOW}代理服务端口 [8080]: ${NC})" PROXY_PORT
PROXY_PORT=${PROXY_PORT:-8080}

# 生成或使用现有令牌
if [ -z "$PROXY_AUTH_TOKEN" ] || [ "$PROXY_AUTH_TOKEN" = "pst_YOUR_SECRET_TOKEN_HERE" ]; then
    echo -e "${YELLOW}生成认证令牌...${NC}"
    PROXY_AUTH_TOKEN=$(node -e "
    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    let token = 'pst_';
    for (let i = 0; i < 32; i++) {
        token += chars.charAt(Math.floor(Math.random() * chars.length));
    }
    console.log(token);
    " 2>/dev/null || echo "pst_$(openssl rand -hex 16)")
fi

# 更新 .env 文件
cat > "$ENV_FILE" << EOF
# 代理服务器端口
PORT=$PROXY_PORT

# 认证令牌
PROXY_AUTH_TOKEN=$PROXY_AUTH_TOKEN

# 日志级别 (debug, info, warn, error)
LOG_LEVEL=${LOG_LEVEL:-info}

# 速率限制（每分钟最大请求数）
RATE_LIMIT_MAX=${RATE_LIMIT_MAX:-100}

# 速率限制窗口（毫秒）
RATE_LIMIT_WINDOW=${RATE_LIMIT_WINDOW:-60000}
EOF

echo ""
echo -e "${BLUE}📋 部署配置确认：${NC}"
echo -e "  服务器: ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PORT}"
echo -e "  代理端口: ${PROXY_PORT}"
echo -e "  认证令牌: ${PROXY_AUTH_TOKEN:0:10}..."
echo ""

# 确认部署
read -p "$(echo -e ${YELLOW}开始部署？ [Y/n]: ${NC})" -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]] && [[ ! -z $REPLY ]]; then
    echo -e "${RED}取消部署${NC}"
    exit 1
fi

# 执行部署
echo ""
echo -e "${GREEN}开始部署...${NC}"
"$SCRIPT_DIR/deploy.sh" "$REMOTE_HOST" "$REMOTE_USER" "$REMOTE_PORT"