备份: 完整开发状态(含反混淆脚本和临时文件)

This commit is contained in:
ccdojox-crypto
2025-12-17 17:18:02 +08:00
parent 9e2333c90c
commit 7e9ea173a7
2872 changed files with 326818 additions and 249 deletions

View File

@@ -1,131 +1,111 @@
# CursorPro 后台管理系统
# 蜂鸟CursorPro 后
基于 FastAPI 的 Cursor 账号管理和激活码系统,兼容原 CursorPro 插件 API。
## 域名配置
## 功能特性
| 类型 | 域名 | 说明 |
|------|------|------|
| 主域名 | `api.aicode.edu.pl` | 主后台服务器 |
| 备用域名1 | `hb.aicode.edu.pl` | 反代到主域名 |
| 备用域名2 | `cursor.aicode.edu.pl` | 反代到主域名 |
| 备用域名3 | `pro.aicode.edu.pl` | 反代到主域名 |
- 账号管理:导入、编辑、删除 Cursor 账号
- 激活码系统:生成、管理激活码,支持换号次数限制
- Web 管理后台Vue.js + Tailwind CSS 构建的现代化界面
- 客户端 API完全兼容原 CursorPro 插件
## 登录信息
## 快速开始
```
管理后台: https://api.aicode.edu.pl/
用户名: admin
密码: Hb@2024Pro!
```
### 方式一:本地运行
## 外部API
1. **安装 MySQL 数据库**
```
Token: hb-ext-9kX2mP5nQ8rT1vY4zA7c
Header: X-API-Token
2. **配置环境**
```bash
# 复制配置文件
cp .env.example .env
批量上传: POST /admin/external/accounts/batch
账号统计: GET /admin/external/accounts/stats
```
# 编辑 .env 填入数据库信息
```
3. **启动服务**
```bash
# Windows
start.bat
# Linux/Mac
chmod +x start.sh
./start.sh
```
4. **访问管理后台**
- 地址: http://localhost:8000
- 默认账号: admin / admin123
### 方式二Docker 部署
## 部署
```bash
# 启动 MySQL + 后台服务
docker-compose up -d
# 上传到服务器
cd /opt/cursorpro
# 启动 (首次自动创建venv并安装依赖)
./start.sh
# 停止
./stop.sh
# 查看日志
docker-compose logs -f backend
tail -f cursorpro.log
```
## API 文档
部署信息:
- 管理后台: https://api.aicode.edu.pl/
- API文档: https://api.aicode.edu.pl/docs
- 健康检查: ✅ {"status":"ok"}
启动后访问 http://localhost:8000/docs 查看 Swagger API 文档。
登录信息:
用户名: admin
密码: Hb@2024Pro!
### 客户端 API兼容原插件
外部API Token: hb-ext-9kX2mP5nQ8rT1vY4zA7c
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/verify-key` | POST | 验证激活码 |
| `/api/switch-account` | POST | 切换账号 |
| `/api/version` | GET | 获取版本信息 |
现在需要配置备用域名反代吗?还是先测试插件对接?
### 管理 API
| 接口 | 方法 | 说明 |
|------|------|------|
| `/admin/login` | POST | 管理员登录 |
| `/admin/dashboard` | GET | 仪表盘统计 |
| `/admin/accounts` | GET/POST | 账号列表/创建 |
| `/admin/accounts/import` | POST | 批量导入账号 |
| `/admin/keys` | GET/POST | 激活码列表/生成 |
## Nginx 配置
## 账号数据格式
### 主域名 (api.aicode.edu.pl)
```nginx
server {
listen 443 ssl http2;
server_name api.aicode.edu.pl;
导入账号时使用 JSON 格式:
ssl_certificate /etc/ssl/api.aicode.edu.pl.pem;
ssl_certificate_key /etc/ssl/api.aicode.edu.pl.key;
```json
[
{
"email": "user@example.com",
"access_token": "...",
"refresh_token": "...",
"workos_session_token": "...",
"membership_type": "pro"
}
]
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
## 目录结构
### 备用域名 (反代到主域名)
```nginx
server {
listen 443 ssl http2;
server_name hb.aicode.edu.pl; # 或 cursor.aicode.edu.pl / pro.aicode.edu.pl
```
backend/
├── app/
│ ├── api/ # API 路由
├── admin.py # 管理后台 API
└── client.py # 客户端 API兼容原插件
│ ├── models/ # 数据库模型
│ ├── schemas/ # Pydantic 数据模式
│ ├── services/ # 业务逻辑
│ ├── config.py # 配置
│ ├── database.py # 数据库连接
│ └── main.py # 应用入口
├── templates/ # HTML 模板
├── static/ # 静态文件
├── .env.example # 环境变量示例
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
├── run.py # 启动脚本
└── start.bat/sh # 快捷启动
ssl_certificate /etc/ssl/hb.aicode.edu.pl.pem;
ssl_certificate_key /etc/ssl/hb.aicode.edu.pl.key;
location / {
proxy_pass https://api.aicode.edu.pl;
proxy_set_header Host api.aicode.edu.pl;
proxy_ssl_server_name on;
}
}
```
## 配置说明
## 客户端插件域名配置
`.env` 文件配置项:
插件 `extension/out/api/client.js` 中已配置:
```javascript
const API_DOMAINS = [
'https://api.aicode.edu.pl', // 主域名
'https://hb.aicode.edu.pl', // 备用域名1
'https://cursor.aicode.edu.pl', // 备用域名2
'https://pro.aicode.edu.pl', // 备用域名3
'http://127.0.0.1:8000' // 本地开发
];
```
| 变量 | 说明 | 默认值 |
|------|------|--------|
| DB_HOST | 数据库地址 | localhost |
| DB_PORT | 数据库端口 | 3306 |
| DB_USER | 数据库用户 | root |
| DB_PASSWORD | 数据库密码 | - |
| DB_NAME | 数据库名 | cursorpro |
| JWT_SECRET_KEY | JWT 密钥 | - |
| ADMIN_USERNAME | 管理员账号 | admin |
| ADMIN_PASSWORD | 管理员密码 | admin123 |
## 安全提示
- 生产环境请修改 `JWT_SECRET_KEY`
- 修改默认管理员密码
- 建议使用 HTTPS
自动故障转移:主域名失败会自动切换到备用域名。