SIREN

插件系统

通过插件扩展 SIREN 的能力

插件用于在不修改核心代码的前提下扩展 SIREN 的能力。已安装的插件存放在工作目录下的 plugins/ 目录中,每个插件占一个子目录,包含 manifest.json 清单与可执行文件。

插件类型

插件通过清单中的 type 字段区分为两类,二者的启用开关和调用方式不同:

类型配置开关调用方式
reconplugins.<name>仅在 Recon Profile 通过 plugin:<name> 显式引用时执行,结果并入报告
commandplugins.<name>作为独立命令按需调用,输出立即返回

插件名称规则

插件名称必须为 1–128 个字符,且只能包含字母、数字、短横线(-)和下划线(_)。

管理插件

安装、卸载、更新和启停插件,本地模式与远程模式均支持。

./siren plugins                  # 列出已安装插件(NAME / VERSION / TYPE / ENABLED)
./siren plugins install <name>   # 从插件市场下载并安装,安装后默认启用
./siren plugins uninstall <name> # 卸载插件
./siren plugins update <name>    # 重新下载更新,保留当前启用/禁用状态
./siren plugins toggle <name>    # 启用或禁用插件

远程模式下,每个客户端已安装的插件也会显示在 ls 命令输出的 Plugins 列中。

安装 recon 插件不会自动修改任何 Profile。卸载、禁用或更新插件类型会破坏现有 Profile 引用时,操作会被拒绝;先调整 Profile,再执行插件变更。客户端配置正在被 Recon 或其他操作使用时,插件管理会提示稍后重试。Profile 引用了缺失或禁用的插件时,Recon 会在启动校验阶段失败,不开始采集。这与运行时的插件执行错误不同——后者会生成 partial 快照。

command 类型插件安装并启用后,可以直接作为命令调用:

./siren <plugin_name> [args]

插件市场

installupdate配置文件中的 plugins.marketplace 地址下载插件。SIREN 会依次获取插件的 manifest.json 清单、与当前平台匹配的入口二进制文件,以及可选的 setup 安装脚本(如有,安装时执行,超时 5 分钟)。

config.yaml
plugins:
  marketplace: https://oss-siren.oss-cn-hongkong.aliyuncs.com/plugins

提示

install 拒绝覆盖已有插件,请使用 update。更新会先下载、验证并准备新版本,再切换安装,保留原有启用/禁用状态;失败时保留旧安装。回滚仅覆盖插件目录,setup 对宿主机其他位置产生的副作用不会自动撤销。

插件列表

当前内置示例插件集中维护在插件列表中,包括随 Recon 执行的检查插件和按需调用的命令插件。

插件开发

插件通过 manifest.json 声明名称、类型、支持平台和入口文件。完整字段说明、平台约束、发布流程和清单安全校验见插件开发指南

相关内容

On this page