first commit
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
# chongming-license-gui
|
||||
|
||||
机器码授权的**可视化工具(厂商侧)**:密钥管理 / 签发 / 查看校验。
|
||||
|
||||
供商务、售后等不习惯命令行的同学使用,功能与 `uv run chongming-license`(CLI)对等。
|
||||
所有授权逻辑都调用 [`chongming-license`](../license/) 库 —— 本包**只做界面**,
|
||||
不重复实现密码学、载荷格式或规范化(一旦有两处实现,就会出现"自己签的自己验不过")。
|
||||
|
||||
## 定位
|
||||
|
||||
| | 使用者 | 形态 | 签发能力 |
|
||||
| --- | --- | --- | --- |
|
||||
| **本工具** | 厂商(商务/售后/研发) | 桌面 GUI | ✅ 持有私钥 |
|
||||
| `chongming-license` CLI | 厂商(研发/自动化) | 命令行 | ✅ 持有私钥 |
|
||||
| 设备端「授权」页 | 客户 / 现场装机 | 浏览器 `/static/license` | ❌ 只导出申请码、导入 license |
|
||||
|
||||
**本工具不随部署产物分发** —— 签发私钥只应存在于厂商机器上。
|
||||
|
||||
## 安装与运行
|
||||
|
||||
```bash
|
||||
cd utils/license-gui
|
||||
uv sync
|
||||
uv run chongming-license-gui
|
||||
```
|
||||
|
||||
无图形环境(SSH / CI)下可做冒烟检查:
|
||||
|
||||
```bash
|
||||
QT_QPA_PLATFORM=offscreen uv run python -c "
|
||||
from PySide6.QtWidgets import QApplication
|
||||
from chongming_license_gui.app import MainWindow
|
||||
app = QApplication([]); w = MainWindow(); w.show()
|
||||
print('界面构建成功')
|
||||
"
|
||||
```
|
||||
|
||||
## 三个页面
|
||||
|
||||
### 签发(默认页)
|
||||
|
||||
日常最高频的操作。让操作者在**按下签发之前**就看清"给谁、哪台机器、哪些插件、多久"。
|
||||
|
||||
- **签名私钥**:显示当前生效的私钥路径与公钥指纹(签发前核对,避免拿错密钥)
|
||||
- **签发依据**(三选一):
|
||||
- *申请码*(推荐)—— 粘贴 `CM1-...`,自动解析出机器码与各来源指纹,支持换硬件容错
|
||||
- *来源 JSON 文件* —— `show --json` 的导出文件
|
||||
- *仅机器码* —— 精确匹配、无容错(界面会明确警示)
|
||||
- **授权插件**:勾选式列表,自动从 `<项目根>/config/workers/*/config.toml` 读出本项目实际插件;
|
||||
也可手工添加任意 type;支持全选/全不选/移除
|
||||
- **授权信息**:客户、授权编号(留空自动生成)、备注、密钥标识、有效期(N 天 / 指定日期 / 永久)
|
||||
- **预览与签发**:载荷 JSON 预览(与签名用的是同一个对象,所见即所签)→ 签发并保存
|
||||
|
||||
### 台账
|
||||
|
||||
已签发授权的检索与管理。**签发页签发的每一份都会自动入库**(含机器指纹)。
|
||||
|
||||
- **检索**:客户 / 机器码 / 插件 / 状态 / 关键字 / 即将到期窗口;按到期日升序,最急的在前
|
||||
- **概览**:总数与有效/即将到期/已过期/永久/未生效计数
|
||||
- **续期**:选中一条 →「续期选中…」→ 只改要变的部分 → 续期并保存。
|
||||
**指纹复用自台账,无需再向客户索取申请码**;默认生成新编号(新旧都留台账可追溯),
|
||||
旧记录自动加上 `已续期 → <新编号>` 批注
|
||||
- **备注**:人工批注,重新导入 license 不会覆盖(载荷里的 `note` 是签名内容的一部分,
|
||||
台账的 `note` 是厂商自己的批注)
|
||||
- **详情**:查看各来源指纹与**原始 license 文件内容**(当初签发的那份)
|
||||
- **导出**:`.lic`(可选按客户分目录)+ CSV 清单(UTF-8 BOM,Excel 中文不乱码)
|
||||
|
||||
台账库默认 `~/.chongming/licenses.db`,可在此页切换;单文件 SQLite,可直接进备份。
|
||||
|
||||
### 密钥
|
||||
|
||||
- **生成密钥对**:一键生成 Ed25519 密钥对,私钥写为 `0600` 的 PEM,
|
||||
公钥自动复制到剪贴板(下一步注入构建就要用)
|
||||
- **加载现有私钥**:显示对应公钥与指纹,用于确认"这把私钥对应哪把公钥"
|
||||
- 公钥 base64(可直接填进 `[license] public_key`)与 PEM 都可单独复制
|
||||
|
||||
### 查看 / 校验
|
||||
|
||||
- 打开 `.lic` 查看全部字段(不验签也能看)
|
||||
- 填公钥后验签,给出结论 + 原因码 + 命中/不匹配的来源
|
||||
- **指纹比对基准**可选:
|
||||
- *本机指纹* —— 在厂商机器上通常对不上,属正常
|
||||
- *指定机器*(填客户设备的申请码)—— **发货前自检**的关键:
|
||||
确认这份 license 确实是为目标设备签发的,而不是只验出"签名有效"
|
||||
|
||||
## 与 CLI 的对应关系
|
||||
|
||||
| GUI 操作 | CLI |
|
||||
| --- | --- |
|
||||
| 详情面板 / 状态栏 | `chongming-license verify` |
|
||||
| 签发 → 签发并保存 | `chongming-license issue` |
|
||||
| 密钥 → 生成密钥对 | `chongming-license keygen` |
|
||||
| 密钥 → 加载私钥(显示公钥/指纹) | `chongming-license keygen` 的输出 / `inspect --key` |
|
||||
| 查看 / 校验 → 仅查看内容 | `chongming-license inspect` |
|
||||
| 查看 / 校验 → 指定机器 | `chongming-license verify --request-code` |
|
||||
|
||||
批量签发(一次几十台)建议直接用 CLI 脚本化;GUI 面向单台/少量、需要人工核对信息的场景。
|
||||
|
||||
## 安全注意
|
||||
|
||||
- 本工具会在 `QSettings` 里记住**私钥路径、客户名、备注、输出目录**(便于连续签发),
|
||||
**不会**记住私钥内容本身。
|
||||
- 私钥文件权限为 `0600`,且 `.gitignore` 忽略 `license_private*.pem`。
|
||||
- `uv run build` 会扫描构建产物,发现私钥即终止构建。
|
||||
- ⚠ 私钥丢失 = 无法再签发新授权;私钥泄漏 = 任何人都能签发授权。请离线备份。
|
||||
|
||||
## 完整文档
|
||||
|
||||
见仓库 [docs/license.md](../../docs/license.md):激活流程、命令行参考、机器指纹与容错判定、
|
||||
强制执行点、安全边界、故障排查(含原因码全表)。
|
||||
Reference in New Issue
Block a user