#!/bin/bash

# CORS跨域问题快速修复脚本

echo "=== CORS跨域问题修复工具 ==="

# 检查当前目录
if [ ! -f "main.py" ]; then
    echo "错误: 请在包含main.py的项目根目录下运行此脚本"
    exit 1
fi

echo "当前目录: $(pwd)"

# 1. 更新配置文件
echo ""
echo "1. 更新CORS配置..."

# 更新config.py
echo "更新 app/core/config.py..."
sed -i 's/ALLOWED_HOSTS: List\[str\] = \[.*\]/ALLOWED_HOSTS: List[str] = ["*"]  # 允许所有域名访问/' app/core/config.py

if [ $? -eq 0 ]; then
    echo "✓ config.py 更新成功"
else
    echo "✗ config.py 更新失败，请手动检查"
fi

# 2. 更新.env文件
echo ""
echo "2. 更新环境配置..."
if [ -f ".env" ]; then
    # 备份原始文件
    cp .env .env.backup.$(date +%Y%m%d_%H%M%S)

    # 更新CORS配置
    sed -i 's/ALLOWED_HOSTS=\[.*\]/ALLOWED_HOSTS=["*"]/' .env

    if grep -q 'ALLOWED_HOSTS=\["\*"\]' .env; then
        echo "✓ .env 文件更新成功"
    else
        echo "✗ .env 文件更新失败，请手动检查"
    fi
else
    echo ".env 文件不存在，创建新的配置..."
    cat > .env << EOF
# 基础配置
ENVIRONMENT=production
DEBUG=false

# 数据库配置
DATABASE_URL=mysql+pymysql://用户名:密码@localhost:3306/数据库名

# Redis配置
REDIS_URL=redis://localhost:6379

# JWT配置
JWT_SECRET_KEY=your-super-secret-jwt-key-change-in-production-$(date +%s)
JWT_ALGORITHM=HS256
JWT_EXPIRE_MINUTES=30

# 文件上传配置
UPLOAD_DIR=uploads
MAX_FILE_SIZE=10485760

# CORS配置
ALLOWED_HOSTS=["*"]
EOF
    echo "✓ .env 文件创建成功"
fi

# 3. 验证配置
echo ""
echo "3. 验证CORS配置..."

# 检查config.py
if grep -q 'ALLOWED_HOSTS: List\[str\] = \["\*"\]' app/core/config.py; then
    echo "✓ config.py CORS配置正确"
else
    echo "✗ config.py CORS配置可能有问题"
fi

# 检查.env文件
if grep -q 'ALLOWED_HOSTS=\["\*"\]' .env; then
    echo "✓ .env CORS配置正确"
else
    echo "✗ .env CORS配置可能有问题"
fi

# 4. 重启服务提示
echo ""
echo "4. 重启服务..."
echo "配置更新完成，请重启应用以使配置生效"
echo ""
echo "重启方式："
echo "1. 如果应用正在运行，请按 Ctrl+C 停止"
echo "2. 然后重新启动: python main.py"
echo "3. 或者使用启动脚本: ./start_app.sh"
echo ""
echo "如果使用Docker部署："
echo "1. 重新构建镜像: docker build -t cloud-drive-backend:latest ."
echo "2. 重新运行容器: docker run -d -p 8002:8002 cloud-drive-backend:latest"

# 5. 测试CORS
echo ""
echo "5. CORS测试建议..."
echo "重启后，可以通过以下方式测试CORS："
echo "1. 浏览器开发者工具 -> Network -> 查看请求头"
echo "2. 检查是否有 'Access-Control-Allow-Origin: *' 头"
echo "3. 使用curl测试: curl -H 'Origin: http://example.com' -H 'Access-Control-Request-Method: POST' -H 'Access-Control-Request-Headers: X-Requested-With' -X OPTIONS http://localhost:8002/api/v1/health"

echo ""
echo "=== CORS修复完成 ==="
echo ""
echo "注意事项:"
echo "- 允许所有域名访问 (\"*\") 仅适用于开发和测试环境"
echo "- 生产环境建议设置具体的允许域名列表"
echo "- 如需更安全的CORS配置，请手动修改 ALLOWED_HOSTS"