## 实现插件化 以下部分用『RP3』指代 RP3 的核心部分。 ### 服务 每个服务插件,需要提供以下的功能(hook), 以下以 MySQL 举例: * 启用 - 为 MySQL 添加一个用户 * 暂停 - 删除 MySQL 的用户 * 删除 - 删除这个用户所有的数据库 * 默认配置 - 密码默认为禁用 * 修改配置 - 修改密码 * 显示状态 - 如显示 MySQL 数据库磁盘占用 * 监控资源 - 如监控 MySQL 数据库磁盘占用 ### Hook 插件可以注册 RP3 提供的 Hook 来对 RP3 的数据和逻辑进行修改。 如 `rendering.navbar` 表示正在渲染 HTML 输出中的导航条部分。 插件可以注册自己的处理程序,接收一个参数(目前的导航条条目), 返回一个值(处理后的). ### 数据储存 插件与 RP3 使用同一数据库,插件所使用的集合名需添加 `plugin.name` 的前缀,如 `plugin.ssh.info`. ### 路由 插件可以注册或覆盖 RP3 的路由。 ### UI 插件可以在用户的面板添加区块来显示信息。 插件在修改配置时需要提供一段 HTML 表单。 ### 资源监控 需要监控的资源有: * CPU 时间 - 单位 秒(s) * 内存占用 - 单位 百万字节每小时(MiB/h) * 磁盘空间 - 单位 MiB * 外网流量 - 可以延后实现 * 磁盘 OI - 可以延后实现 当然并非每个服务都能精确地监控这些资源,这其中有很多困难,总之尽力而为吧,以下以 SSH 服务的资源监控为例: 插件可以向 RP3 注册监控程序,如: * 每 30s 运行 CPU 监控程序 * 每 60s 运行内存监控程序 * 每 6h 运行磁盘监控程序 监控程序定时向 RP3 返回几种资源的使用情况,RP3 进行汇总统计。