fix: 加密 mbank 把密钥写进包内(运行端 get_key() 才取得到)
运行端 public/utils/launch.py 的 init_module_bank 用 PythonToSQLite.get_key() 从 **包内**取密钥,它不读旁挂 <包>.key —— 只写旁挂文件的话,--encrypt 产物启动即报 "模块 'plugins' 的字节码是加密的,但没有提供解密密钥",插件全部加载失败、契约 校验不过,网关直接起不来。 打包时改为一并调 packer.packer_key(key)(module-bank 0.4+ 存在包根部 packer_key, 不进模块清单);旁挂 .key 保留,分发/测试口径不变。
This commit is contained in:
@@ -283,6 +283,11 @@ def _pack_mbank(
|
|||||||
|
|
||||||
encrypt=False(默认,加 --encrypt 才打开)时传 key=None:module-bank 存
|
encrypt=False(默认,加 --encrypt 才打开)时传 key=None:module-bank 存
|
||||||
**明文**字节码,模块元信息里 encrypted=False,加载端不需要密钥也能导入。
|
**明文**字节码,模块元信息里 encrypted=False,加载端不需要密钥也能导入。
|
||||||
|
加密时密钥写两处:旁挂 ``<包>.key``(分发/测试口径)**和包内根部的
|
||||||
|
``packer_key``**(运行端口径)—— ``public/utils/launch.py`` 的 init_module_bank
|
||||||
|
是用 ``PythonToSQLite.get_key()`` 取密钥的,它只读包内那份;只写旁挂文件的话
|
||||||
|
加密产物启动时会报"模块 'plugins' 的字节码是加密的,但没有提供解密密钥",
|
||||||
|
插件全部加载失败、契约校验不过,网关直接起不来。
|
||||||
"""
|
"""
|
||||||
# 每次从空文件开始:旧包里的历史版本既让体积膨胀,也会留下重名/空的版本
|
# 每次从空文件开始:旧包里的历史版本既让体积膨胀,也会留下重名/空的版本
|
||||||
Path(output_path).unlink(missing_ok=True)
|
Path(output_path).unlink(missing_ok=True)
|
||||||
@@ -302,6 +307,8 @@ def _pack_mbank(
|
|||||||
packer.pack_directory(source_dir, package_name)
|
packer.pack_directory(source_dir, package_name)
|
||||||
packer.verify_package_structure()
|
packer.verify_package_structure()
|
||||||
packer.delete_source_code(None)
|
packer.delete_source_code(None)
|
||||||
|
if key:
|
||||||
|
packer.packer_key(key)
|
||||||
packer.sign_version("my_key", key_id="ci-2026")
|
packer.sign_version("my_key", key_id="ci-2026")
|
||||||
# 给"当前这一版(已签名的)"起名,不派生工作版本 —— 加载端跟最新走就是它
|
# 给"当前这一版(已签名的)"起名,不派生工作版本 —— 加载端跟最新走就是它
|
||||||
packer.vfs.rename_snapshot(packer.vfs.snapshot_id, "v1.0.0")
|
packer.vfs.rename_snapshot(packer.vfs.snapshot_id, "v1.0.0")
|
||||||
|
|||||||
Reference in New Issue
Block a user