代码上传

This commit is contained in:
2025-11-17 18:22:56 +08:00
commit 3a7b41ebce
66 changed files with 10186 additions and 0 deletions

60
license_verifier.py Normal file
View File

@@ -0,0 +1,60 @@
import platform
import uuid
import hashlib
import requests
# 常量配置
ACTIVATE_URL = "http://activate.hzsystems.cn/api/activate_machine"
PACKAGE_NAME = "hertz_studio_django_captcha"
def get_machine_id() -> str:
"""生成机器码。
根据当前系统信息平台、架构、MAC地址生成唯一机器码
使用 SHA256 取前16位并转大写前缀为 HERTZ_STUDIO_。
"""
system_info = f"{platform.platform()}-{platform.machine()}-{uuid.getnode()}"
return 'HERTZ_STUDIO_' + hashlib.sha256(system_info.encode()).hexdigest()[:16].upper()
def request_verify_machine_code(package_name: str, machine_code: str):
"""请求后端校验机器码。
向授权服务器提交包名和机器码,返回 JSON 响应;
如果网络异常,返回 None。
"""
try:
resp = requests.post(
ACTIVATE_URL,
json={"package_name": package_name, "machine_code": machine_code},
timeout=10,
)
return resp.json()
except requests.RequestException as e:
print(f"机器码验证请求失败: {e}")
return None
def verify_machine_license() -> None:
"""运行时验证授权。
在 Django 应用启动时执行授权验证:打印提示、生成机器码并请求校验;
校验失败则抛出 RuntimeError 阻止应用启动。
"""
machine_id = get_machine_id()
print(f"您的机器码: {machine_id}, 当前包名: {PACKAGE_NAME}")
print("请将此机器码发送给作者进行注册。")
resp = request_verify_machine_code(PACKAGE_NAME, machine_id)
if resp and resp.get("success") is True:
print("=" * 60)
print("机器码验证成功!")
print("=" * 60)
return
print("=" * 60)
print("机器码验证失败!请联系作者获取运行权限。")
print("=" * 60)
raise RuntimeError("Hertz Xxxxx license verification failed")