mirror of
https://github.com/HackPlan/RootPanel.git
synced 2026-01-13 07:01:20 +08:00
1.7 KiB
1.7 KiB
实现插件化
以下部分用『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 进行汇总统计。