主要更新内容
- 新增插件系统:支持以 ZIP 包安装插件(
komari-plugin.json清单)、启用/禁用、状态持久化及生命周期管理,插件可向管理后台注入页面。 - 插件能力与权限控制:插件可注册 HTTP 路由(
server.route)、请求/响应钩子(server.hook)、调用系统 RPC(server.call)并注册自有 RPC 方法;敏感能力需在清单中声明并经管理员批准,未批准或权限变更时禁止启用;读取自身配置、注册自有 RPC 及插件目录内文件访问默认授予。 - 插件安全与隔离:插件在独立 JavaScript 运行时中运行,文件访问限制在插件目录内;安装时校验清单、Komari 版本约束及 ZIP 路径穿越条目;加载失败自动禁用并在管理端显示错误信息。
- 新增插件市场源配置项
plugin_market_sources,启动时自动创建data/plugin目录。 - 重构 JavaScript 运行时:将内置能力模块化拆分(console、events、fs、child_process、fetch、XHR 等),新增
node:stream模块,并补充接口与兼容性文档。 - JavaScript 运行时新增权限门:
child_process执行、process.kill、本地端口监听(net/httpServer)、全文件访问等默认关闭,需显式开启。
Bug修复
- 修复
process.exit(0)被误判为异常终止的问题,现在按正常退出处理,并改进运行时错误上报。 - 修复插件响应钩子导致流式响应(如 MJPEG 实时画面)被缓冲、客户端收不到数据(黑屏)的回归问题。
其他
- 将 metricstore 从
database/metricstore迁移至internal/metricstore,并按配置、压缩、删除、ping 记录、报告映射等职责拆分组件。 - 移除若干未使用的旧版本兼容代码与数据库辅助函数(如
GetAllOidcConfigs、SaveLoadNotification、GetEnabledTrafficReportByType等)。 .gitignore新增/dist/忽略规则。
Commits
- style: 移除没有使用的旧版本兼容代码,移动 database/metricstore 到 internal/metricstore 并拆分组件 (4077201) @Akizon77
- refactor: javascript runtime (df6ffba) @Akizon77
- refactor(jsruntime): modularize built-ins (3c58382) @Akizon77
- docs(jsruntime): add API and compatibility documentation (54851bd) @Akizon77
- docs(jsruntime): clarify unsupported methods throw instead of no-op (91ae9ed) @Akizon77
- fix(jsruntime): treat process.exit(0) as normal termination and improve error reporting (91cbeb3) @Akizon77
- feat: add plugin system and refactor jsruntime deadline handling (8985adc) @Akizon77
- feat(plugin): enforce server module permission gates (68bf4ed) @Akizon77
- feat(jsruntime): add node:stream module and embed nexttick JS (965afb3) @Akizon77
Full Changelog: 1.3.2...Snapshot-2608011904