5.4 KiB
5.4 KiB
chongming-license-gui
机器码授权的可视化工具(厂商侧):密钥管理 / 签发 / 查看校验。
供商务、售后等不习惯命令行的同学使用,功能与 uv run chongming-license(CLI)对等。
所有授权逻辑都调用 chongming-license 库 —— 本包只做界面,
不重复实现密码学、载荷格式或规范化(一旦有两处实现,就会出现"自己签的自己验不过")。
定位
| 使用者 | 形态 | 签发能力 | |
|---|---|---|---|
| 本工具 | 厂商(商务/售后/研发) | 桌面 GUI | ✅ 持有私钥 |
chongming-license CLI |
厂商(研发/自动化) | 命令行 | ✅ 持有私钥 |
| 设备端「授权」页 | 客户 / 现场装机 | 浏览器 /static/license |
❌ 只导出申请码、导入 license |
本工具不随部署产物分发 —— 签发私钥只应存在于厂商机器上。
安装与运行
cd utils/license-gui
uv sync
uv run chongming-license-gui
无图形环境(SSH / CI)下可做冒烟检查:
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:激活流程、命令行参考、机器指纹与容错判定、 强制执行点、安全边界、故障排查(含原因码全表)。