From e9879ea2a3647d0ef53db42c78718b70b1129140 Mon Sep 17 00:00:00 2001 From: chakcy <947105045@qq.com> Date: Wed, 14 Oct 2026 15:29:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8A=A0=E5=AF=86=20mbank=20=E6=8A=8A?= =?UTF-8?q?=E5=AF=86=E9=92=A5=E5=86=99=E8=BF=9B=E5=8C=85=E5=86=85=EF=BC=88?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E7=AB=AF=20get=5Fkey()=20=E6=89=8D=E5=8F=96?= =?UTF-8?q?=E5=BE=97=E5=88=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 运行端 public/utils/launch.py 的 init_module_bank 用 PythonToSQLite.get_key() 从 **包内**取密钥,它不读旁挂 <包>.key —— 只写旁挂文件的话,--encrypt 产物启动即报 "模块 'plugins' 的字节码是加密的,但没有提供解密密钥",插件全部加载失败、契约 校验不过,网关直接起不来。 打包时改为一并调 packer.packer_key(key)(module-bank 0.4+ 存在包根部 packer_key, 不进模块清单);旁挂 .key 保留,分发/测试口径不变。 --- src/chongming_cli/build.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/chongming_cli/build.py b/src/chongming_cli/build.py index 9e937fa..1b43ff4 100644 --- a/src/chongming_cli/build.py +++ b/src/chongming_cli/build.py @@ -283,6 +283,11 @@ def _pack_mbank( encrypt=False(默认,加 --encrypt 才打开)时传 key=None:module-bank 存 **明文**字节码,模块元信息里 encrypted=False,加载端不需要密钥也能导入。 + 加密时密钥写两处:旁挂 ``<包>.key``(分发/测试口径)**和包内根部的 + ``packer_key``**(运行端口径)—— ``public/utils/launch.py`` 的 init_module_bank + 是用 ``PythonToSQLite.get_key()`` 取密钥的,它只读包内那份;只写旁挂文件的话 + 加密产物启动时会报"模块 'plugins' 的字节码是加密的,但没有提供解密密钥", + 插件全部加载失败、契约校验不过,网关直接起不来。 """ # 每次从空文件开始:旧包里的历史版本既让体积膨胀,也会留下重名/空的版本 Path(output_path).unlink(missing_ok=True) @@ -302,6 +307,8 @@ def _pack_mbank( packer.pack_directory(source_dir, package_name) packer.verify_package_structure() packer.delete_source_code(None) + if key: + packer.packer_key(key) packer.sign_version("my_key", key_id="ci-2026") # 给"当前这一版(已签名的)"起名,不派生工作版本 —— 加载端跟最新走就是它 packer.vfs.rename_snapshot(packer.vfs.snapshot_id, "v1.0.0")