# License 管理平台 一个轻量级的 License 验证和管理服务,用于 Chrome 浏览器插件后端。支持激活码管理、设备绑定、批量操作等功能。 ## ✨ 功能特性 ### 核心功能 - 🔑 **License 验证** - 支持设备绑定验证,自动记录激活时间 - 📦 **批量生成** - 一键批量生成激活码(支持最多 1000 个) - 📋 **CRUD 操作** - 完整的激活码增删改查功能 - 🔐 **Token 认证** - 基于 Token 的安全认证机制 - 📊 **设备管理** - 查看已绑定设备和激活时间 - 🎨 **现代化 UI** - 美观易用的 Web 管理界面 ### 技术特性 - 使用 SQLite 文件数据库,部署简单 - RESTful API 设计 - 响应式前端界面 - 支持 CORS(Chrome 插件调用) ## 🚀 快速开始 ### 环境要求 - Go 1.21 或更高版本 - 现代浏览器(Chrome、Firefox、Safari、Edge) ### 安装步骤 1. **克隆项目** ```bash git clone cd license-admin ``` 2. **安装依赖** ```bash go mod download ``` 3. **配置 Token(可选)** ```bash # 设置认证 Token(默认:admin-token-123456) export AUTH_TOKEN=your-secret-token ``` 4. **启动服务** ```bash go run main.go # 或编译后运行 go build -o license-admin ./license-admin ``` 5. **访问管理平台** ``` 浏览器打开:http://localhost:8080 ``` ## 📖 使用指南 ### 登录系统 1. 访问 `http://localhost:8080`,自动跳转到登录页 2. 输入 Token(默认:`admin-token-123456`) 3. 登录成功后进入管理界面 ### 创建激活码 **单个创建:** 1. 点击"创建 License"按钮 2. 填写激活码、最大设备数等信息 3. 点击保存 **批量生成:** 1. 点击"批量生成"按钮 2. 设置前缀(如:VIP) 3. 设置生成数量(1-1000) 4. 设置最大设备数 5. 点击生成 生成的激活码格式:`前缀-32位随机字符串`(如:`VIP-A3B9C2D4E5F6G7H8I9J0K1L2M3N4O5P6`) ### 管理激活码 - **查看列表** - 分页显示所有激活码 - **编辑** - 修改最大设备数、绑定设备列表 - **删除** - 单个删除或批量删除 - **复制** - 一键复制激活码到剪贴板 ### 设备绑定 激活码支持设备绑定功能: - 每个激活码可设置最大设备数(默认 2 个) - 设备首次验证时自动绑定 - 自动记录设备激活时间 - 超过最大设备数时验证失败 ## 🔌 API 文档 ### 公开接口(无需认证) #### 1. License 验证 ```http POST /api/verify Content-Type: application/json { "key": "VIP-123456", "device_id": "device-uuid-123" } ``` **响应:** ```json { "code": 0, "msg": "success", "data": { "valid": true } } ``` #### 2. 登录 ```http POST /api/login Content-Type: application/json { "token": "admin-token-123456" } ``` **响应:** ```json { "code": 0, "msg": "登录成功", "data": { "token": "admin-token-123456" } } ``` ### 管理接口(需要认证) 所有管理接口需要在请求头中添加 Token: ``` Authorization: Bearer your-token ``` #### 1. 获取 License 列表 ```http GET /api/licenses?page=1&page_size=10 Authorization: Bearer your-token ``` #### 2. 获取单个 License ```http GET /api/licenses/:id Authorization: Bearer your-token ``` #### 3. 创建 License ```http POST /api/licenses Authorization: Bearer your-token Content-Type: application/json { "key": "VIP-8888", "max_devices": 2, "bound_devices": "[]" } ``` #### 4. 更新 License ```http PUT /api/licenses/:id Authorization: Bearer your-token Content-Type: application/json { "max_devices": 5, "bound_devices": "[\"device-1\", \"device-2\"]" } ``` #### 5. 删除 License ```http DELETE /api/licenses/:id Authorization: Bearer your-token ``` #### 6. 批量创建 License ```http POST /api/licenses/batch Authorization: Bearer your-token Content-Type: application/json { "prefix": "VIP", "count": 10, "max_devices": 2 } ``` #### 7. 批量删除 License ```http DELETE /api/licenses/batch Authorization: Bearer your-token Content-Type: application/json { "ids": [1, 2, 3] } ``` ## 🗂️ 项目结构 ``` license-admin/ ├── main.go # 主程序入口 ├── go.mod # Go 模块依赖 ├── go.sum # 依赖校验 ├── database/ │ └── database.go # 数据库初始化 ├── models/ │ └── license.go # License 数据模型 ├── handlers/ │ ├── auth.go # 认证处理器 │ ├── license.go # License CRUD 处理器 │ └── verify.go # License 验证处理器 ├── middleware/ │ └── auth.go # Token 认证中间件 ├── web/ │ ├── index.html # 管理平台前端 │ └── login.html # 登录页面 ├── license.db # SQLite 数据库文件(自动生成) └── README.md # 项目文档 ``` ## ⚙️ 配置说明 ### 环境变量 - `AUTH_TOKEN` - 认证 Token(默认:`admin-token-123456`) ### 数据库 - 使用 SQLite 文件数据库 - 数据库文件:`license.db` - 首次启动自动创建表结构 ### 端口配置 默认端口:`8080` 修改端口:编辑 `main.go` 中的 `r.Run(":8080")` ## 🔒 安全建议 1. **生产环境配置** - 修改默认 Token,使用强密码 - 通过环境变量设置 `AUTH_TOKEN` - 使用 HTTPS 部署 2. **Token 管理** - 定期更换 Token - 不要在代码中硬编码 Token - 使用环境变量或密钥管理服务 3. **数据库安全** - 定期备份 `license.db` 文件 - 设置适当的文件权限 ## 📝 开发说明 ### 技术栈 - **后端:** Go 1.21+、Gin、GORM、SQLite - **前端:** HTML5、CSS3、JavaScript (ES6+) ### 依赖包 - `github.com/gin-gonic/gin` - Web 框架 - `gorm.io/gorm` - ORM 框架 - `gorm.io/driver/sqlite` - SQLite 驱动 ### 开发模式 ```bash # 开发模式运行 go run main.go # 编译二进制 go build -o license-admin # 运行测试 go test ./... ``` ## 🐛 常见问题 ### 1. 数据库文件不存在 首次运行会自动创建 `license.db` 文件,确保有写入权限。 ### 2. 端口被占用 修改 `main.go` 中的端口号,或停止占用 8080 端口的程序。 ### 3. Token 验证失败 检查: - Token 是否正确 - 环境变量 `AUTH_TOKEN` 是否设置 - 请求头中是否包含 `Authorization: Bearer ` ### 4. CORS 错误 已在代码中配置 CORS,如仍有问题,检查浏览器控制台错误信息。 ## 📄 许可证 本项目采用 MIT 许可证。 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📧 联系方式 如有问题或建议,请提交 Issue。 --- **注意:** 本项目为轻量级服务,适用于中小规模场景。生产环境使用请做好安全配置和性能优化。