Files

软件授权客户端示例程序

演示如何与许可证管理系统集成,包括硬件指纹采集、授权激活和心跳检测功能。

快速开始

编译

cd backend/cmd/client-demo
go build -o client-demo main.go

运行

# 使用命令行参数
./client-demo -server http://localhost:18888

# 或使用配置文件 client_config.json
./client-demo

授权码配置

将授权码保存到 license_code/AUTH_CODE 文件中,程序会自动读取。如果文件不存在或授权码为空,程序在需要激活时会退出并提示错误。

命令行参数

参数 说明 默认值
-server 服务器地址 http://localhost:18888
-version 软件版本 1.0.0
-interval 心跳间隔(秒) 300
-activate-only 仅激活,不启动心跳 false

环境变量

变量名 说明
LICENSE_ENCRYPTION_KEY 许可证文件加密密钥(默认使用服务器默认密钥,长度需 16/24/32 字节)

工作流程

  1. 启动时

    • 采集硬件指纹(MAC 地址、CPU、主机ID)
    • 检查 license_code/LICENSE 文件是否存在
    • 如果文件存在,解析并验证有效期(start_date 和 end_date)
  2. 需要激活时(文件不存在或过期)

    • 从 license_code/AUTH_CODE 文件读取授权码
    • 调用激活接口获取许可证
    • 保存许可证到 license_code/LICENSE
    • 再次验证许可证
  3. 验证通过后

    • 启动心跳服务(每 300 秒或按服务器指定间隔)
    • 自动接收并更新许可证文件

硬件指纹

程序自动采集以下信息生成硬件指纹:

  • MAC 地址(第一个非虚拟网络接口)
  • CPU 型号名称
  • 主机 ID(系统唯一标识符)

格式(随意,只要能唯一标识设备即可,哈希值也行):MAC:xx:xx:xx:xx:xx:xx,CPU:xxx,HOSTID:xxx

许可证文件

许可证文件保存在 license_code/LICENSE,使用 AES-GCM 加密,包含:

  • 许可证密钥和硬件指纹
  • 有效期(开始/结束日期)
  • 功能配置和使用限制

重要:许可证绑定硬件指纹,更换硬件需重新激活。

示例输出

首次运行(自动激活)

=== 软件授权客户端示例程序 ===
硬件指纹: MAC:00:11:22:33:44:55,CPU:Intel(R) Core(TM) i7-8700,HOSTID:abc123
许可证文件检查失败: 许可证文件不存在
尝试重新激活...
✓ 激活成功!许可证文件已保存到 license_code/LICENSE
✓ 激活后验证通过
[心跳] 启动心跳服务...
✓ 心跳成功 [14:30:00] - 状态: active

后续运行(使用本地许可证)

=== 软件授权客户端示例程序 ===
硬件指纹: MAC:00:11:22:33:44:55,CPU:Intel(R) Core(TM) i7-8700,HOSTID:abc123
✓ 许可证验证通过
[心跳] 启动心跳服务...
✓ 心跳成功 [14:30:00] - 状态: active

注意事项

  • 验证优先级:优先检查本地许可证文件,文件不存在或过期时才重新激活
  • 错误处理:许可证验证失败会退出程序;心跳失败仅记录日志
  • 授权码:激活时需要授权码,请将授权码保存到 license_code/AUTH_CODE 文件

故障排查

激活失败

  • 检查服务器地址和授权码是否正确
  • 确认 license_code/AUTH_CODE 文件存在且包含有效的授权码
  • 查看服务器日志了解详细错误

心跳失败

  • 检查网络连接
  • 确认许可证密钥和硬件指纹是否正确

硬件指纹变更

  • 更换硬件需重新激活
  • 联系管理员释放旧的激活记录