feat: add simadmin interactive config menu
This commit is contained in:
+101
-13
@@ -2,6 +2,7 @@
|
||||
|
||||
管理员专用 Python 插件,支持多个 SimAdmin 实例:
|
||||
|
||||
- 多级菜单交互式配置管理
|
||||
- 查询全部或指定实例状态
|
||||
- 通过指定实例发送短信
|
||||
- 兼容 SimAdmin API:
|
||||
@@ -28,33 +29,115 @@ plugin/scripts/simadmin_multi.py
|
||||
# [admin: true]
|
||||
# [rule: ^sim帮助$]
|
||||
# [rule: ^sim配置$]
|
||||
# [rule: ^sim管理$]
|
||||
# [rule: ^sim状态(?:\s+\S+)?$]
|
||||
# [rule: ^sim短信\s+\S+\s+\S+\s+[\s\S]+$]
|
||||
```
|
||||
|
||||
即:仅管理员可用。
|
||||
即:仅管理员可用。代码内也会再次判断 `sender.isAdmin()`。
|
||||
|
||||
## 配置
|
||||
## 配置存储
|
||||
|
||||
在 Autman 数据桶写入:
|
||||
插件配置存入 Autman 数据桶:
|
||||
|
||||
- bucket:`otto`
|
||||
- key:`simadmin_instances`
|
||||
|
||||
### 推荐:JSON 数组
|
||||
插件会用 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
|
||||
},
|
||||
{
|
||||
"name": "副卡",
|
||||
"base_url": "http://192.168.68.2:3000",
|
||||
"timeout": 10,
|
||||
"token": "可选,如果前面有反代/网关鉴权"
|
||||
"token": "可选,如果前面有反代/网关鉴权",
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
```
|
||||
@@ -70,18 +153,21 @@ plugin/scripts/simadmin_multi.py
|
||||
| `enabled` | 否 | 是否启用,默认 true |
|
||||
| `headers` | 否 | 自定义请求头对象 |
|
||||
|
||||
### 简写:多行 alias=url
|
||||
### 旧版简写
|
||||
|
||||
```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
|
||||
@@ -93,7 +179,7 @@ sim短信 all 10086 测试短信
|
||||
- `sim状态`:查询全部启用实例。
|
||||
- `sim状态 <实例名>`:查询指定实例;支持名称包含匹配。
|
||||
- `sim短信 <实例名|all> <号码> <内容>`:发送短信。
|
||||
- `all` 会向所有实例发送同一条短信,谨慎使用。
|
||||
- `all` 会向所有启用实例发送同一条短信,谨慎使用。
|
||||
|
||||
## 返回示例
|
||||
|
||||
@@ -119,7 +205,9 @@ IMSI: 460...
|
||||
## 安全约定
|
||||
|
||||
- 插件头注和代码内都做了管理员限制。
|
||||
- 配置管理、短信发送都仅管理员可用。
|
||||
- 不在源码中硬编码任何 SimAdmin 地址或密钥。
|
||||
- `token` 只用于兼容反代/网关鉴权;当前 SimAdmin 本身 API 如无鉴权也可留空。
|
||||
- 短信号码只允许数字、空格、`-`、国际区号 `+`。
|
||||
- 短信内容最大 1000 字,避免误发超长内容。
|
||||
- 删除实例需要输入 `yes` 二次确认。
|
||||
|
||||
Reference in New Issue
Block a user