Files
chongming-license-gui/README.md
T
2026-09-21 14:06:55 +08:00

5.4 KiB
Raw Blame History

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:激活流程、命令行参考、机器指纹与容错判定、 强制执行点、安全边界、故障排查(含原因码全表)。