Files
autman-plugins/plugins/simadmin/README.md
T

214 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SimAdmin 多实例 Autman 插件
管理员专用 Python 插件,支持多个 SimAdmin 实例:
- 多级菜单交互式配置管理
- 查询全部或指定实例状态
- 通过指定实例发送短信
- 兼容 SimAdmin API
- `GET /api/health`
- `GET /api/sim`
- `GET /api/network`
- `GET /api/stats`
- `GET /api/sms/stats`
- `POST /api/sms/send`
插件文件:`simadmin_multi.py`
## 安装位置
复制到 Autman 的 Python 脚本插件目录,例如:
```text
plugin/scripts/simadmin_multi.py
```
插件头注已设置:
```text
# [admin: true]
# [rule: ^sim帮助$]
# [rule: ^sim配置$]
# [rule: ^sim管理$]
# [rule: ^sim状态(?:\s+\S+)?$]
# [rule: ^sim短信\s+\S+\s+\S+\s+[\s\S]+$]
```
即:仅管理员可用。代码内也会再次判断 `sender.isAdmin()`
## 配置存储
插件配置存入 Autman 数据桶:
- bucket`otto`
- key`simadmin_instances`
插件会用 JSON 数组保存配置。也兼容读取旧的多行简写配置。
## 多级菜单配置管理
发送:
```text
sim配置
```
或:
```text
sim管理
```
进入菜单:
```text
SimAdmin 配置管理(多级菜单)
当前实例数:0
1. 查看实例列表
2. 添加实例
3. 编辑实例
4. 删除实例
5. 启用/禁用实例
6. 测试状态查询
7. 导出配置 JSON
q. 退出
```
### 添加实例流程
```text
sim配置
2
请输入实例名称,例如:主卡
主卡
请输入 SimAdmin 地址,例如:http://192.168.68.1:3000
http://192.168.68.1:3000
请输入超时时间秒数,直接回车默认 10
10
请输入 token,可直接回车留空
是否启用?输入 1/是 启用,0/否 禁用;直接回车默认启用
1
确认添加?
yes
```
### 编辑实例流程
菜单选择 `3. 编辑实例` 后,选择实例编号,再进入二级菜单:
```text
编辑【主卡】
1. 修改名称
2. 修改地址
3. 修改 timeout
4. 修改 token
5. 切换启用/禁用(当前:启用)
6. 保存并返回
q. 放弃返回
```
### 删除实例流程
菜单选择 `4. 删除实例`,选择编号后,需要输入 `yes` 二次确认。
### 启用/禁用实例
菜单选择 `5. 启用/禁用实例`,选择编号后立即切换。
### 测试状态查询
菜单选择 `6. 测试状态查询`,选择编号后会调用该实例的状态接口并返回摘要。
### 导出配置
菜单选择 `7. 导出配置 JSON`,会输出当前完整 JSON,方便备份或迁移。
## 兼容的手工配置格式
虽然推荐直接使用菜单管理,但仍可手工写入数据桶。
### JSON 数组
```json
[
{
"name": "主卡",
"base_url": "http://192.168.68.1:3000",
"timeout": 10,
"token": "可选,如果前面有反代/网关鉴权",
"enabled": true
}
]
```
字段:
| 字段 | 必填 | 说明 |
|---|---:|---|
| `name` | 是 | 实例别名,指令里使用 |
| `base_url` | 是 | SimAdmin 地址,不要以 `/` 结尾 |
| `timeout` | 否 | 请求超时秒数,默认 10,范围 3-60 |
| `token` | 否 | 可选;会同时带 `Authorization: Bearer <token>``X-API-Token` |
| `enabled` | 否 | 是否启用,默认 true |
| `headers` | 否 | 自定义请求头对象 |
### 旧版简写
```text
主卡=http://192.168.68.1:3000
副卡=http://192.168.68.2:3000,token=xxx,timeout=10
```
插件能读取这种格式;通过菜单保存后会自动转换为 JSON 数组。
## 日常指令
```text
sim帮助
sim配置
sim管理
sim状态
sim状态 主卡
sim短信 主卡 10086 CXLL
sim短信 all 10086 测试短信
```
说明:
- `sim状态`:查询全部启用实例。
- `sim状态 <实例名>`:查询指定实例;支持名称包含匹配。
- `sim短信 <实例名|all> <号码> <内容>`:发送短信。
- `all` 会向所有启用实例发送同一条短信,谨慎使用。
## 返回示例
```text
【主卡】
健康: ok 版本: 1.0.0
SIM: 13800138000
ICCID: 8986...
IMSI: 460...
网络: China Mobile / registered / 信号:-70
系统: CPU 12.1% / MEM 45.2% / 温度 52 / 运行 1d2h
短信: 收 12 / 发 3
```
短信发送:
```text
短信发送结果:
✅ 主卡 发送成功 path=/xxx
❌ 副卡 发送失败: timed out
```
## 安全约定
- 插件头注和代码内都做了管理员限制。
- 配置管理、短信发送都仅管理员可用。
- 不在源码中硬编码任何 SimAdmin 地址或密钥。
- `token` 只用于兼容反代/网关鉴权;当前 SimAdmin 本身 API 如无鉴权也可留空。
- 短信号码只允许数字、空格、`-`、国际区号 `+`
- 短信内容最大 1000 字,避免误发超长内容。
- 删除实例需要输入 `yes` 二次确认。