Files

231 lines
6.1 KiB
Markdown
Raw Permalink 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.
# DbusSmsForward
DbusSmsForward 的重构仓库目前已经具备一套可运行的 **Python 版本主链路**
- 配置加载与兼容旧版 `appSettings`
- 文件短信源轮询
- ModemManager 短信收取/发送抽象
- 多通知通道分发(含 AutmanPush
- Web 控制台(运行总览 / 最近事件 / 配置中心 / 短信测试台)
- CLI 运行、配置校验、环境自检、手工发送、Web 服务启动
- `env-check` 支持 text/json 两种输出,便于人看和自动化集成
- 单元测试与集成测试
仓库里仍保留原始 .NET 版本源码,便于对照迁移;当前建议优先使用 `src/` 下的 Python 实现。
---
## 当前重构状态
已完成的 Python 能力:
- `validate-config`:配置校验
- `env-check`:环境自检(检查 Python / 配置 / DBus / ModemManager 依赖)
- `run`:轮询短信源并分发通知
- `send`:手工触发通知分发;`--real-sms` 走真实短信发送
- `serve-web`:启动 Web 控制台
- Web API
- `GET /api/health`
- `GET /api/system/status`
- `GET /api/dashboard`
- `GET /api/events`
- `GET/POST /api/settings`
- `POST /api/sms/send`
已覆盖的验证:
- 47 个自动化测试全部通过
- `appsettings.python.json` 配置校验通过
- 文件短信源手工跑通
---
## 目录说明
```text
src/dbussmsforward/ Python 重构主实现
tests/ 自动化测试
wwwroot/ Web 控制台静态资源
DbusTest/ 原始 .NET 实现(迁移参考)
appsettings.python.json Python 示例配置
```
---
## 运行要求
- Python 3.11+
- 当前项目采用 `src/` 布局,直接运行时请带上 `PYTHONPATH=src`
如果要接真实 ModemManager / DBus
- 目标机器需要可访问系统 DBus
- 需要存在 `org.freedesktop.ModemManager1`
---
## 快速开始
### 1)校验配置
```bash
PYTHONPATH=src python3 -m dbussmsforward.cli validate-config --config appsettings.python.json
```
### 2)环境自检
```bash
PYTHONPATH=src python3 -m dbussmsforward.cli env-check --config appsettings.python.json
PYTHONPATH=src python3 -m dbussmsforward.cli env-check --config appsettings.python.json --format json
```
- 文件短信源场景:检查配置文件、Python 运行时、通知通道、短信文件路径
- ModemManager 场景:额外检查 `dbus_next``dbus-send` / `dbus-monitor` / `mmcli`、systemd 或 OpenWRT init 脚本提示
- 返回码:`0` 表示全部通过,`2` 表示存在缺项,适合部署脚本或 CI 直接判定
- `--format json`:输出 `results` + `summary`,适合安装器、CI、健康检查脚本消费
### 3)跑文件短信源示例
```bash
PYTHONPATH=src python3 -m dbussmsforward.cli run --config appsettings.python.json
```
### 3)手工发送一条测试短信到通知链路
```bash
PYTHONPATH=src python3 -m dbussmsforward.cli send --config appsettings.python.json --to 10086 --text '测试短信'
```
### 4)真实调用 ModemManager 发送短信
前提:配置中的 `sms_source.kind``modemmanager`
```bash
PYTHONPATH=src python3 -m dbussmsforward.cli send --config appsettings.python.json --to 10086 --text '测试短信' --real-sms
```
### 5)启动 Web 控制台
```bash
PYTHONPATH=src python3 -m dbussmsforward.cli serve-web --config appsettings.python.json --host 0.0.0.0 --port 8080
```
打开:`http://127.0.0.1:8080`
---
## 配置示例
项目内置了 `appsettings.python.json`,包含:
- `forwarding.device_name`
- `notifications.console`
- `notifications.autman_push`
- `sms_source.kind=file`
- `sms_source.path=tests/fixtures/messages.json`
示例里默认启用了 console,AutmanPush 默认关闭,适合本地先验证主链路。
---
## Web 控制台功能
当前 Web 页面的核心能力:
- 运行总览:服务状态、监听地址、设备名、短信源、启用通道
- 最近事件:最近短信转发/发送结果,显示成功失败与通道
- 配置中心:在线修改配置并落盘
- 短信测试台:直接从网页发起手工测试
- 操作结果面板:展示最近一次操作返回
适合 Debian/OpenWRT 场景下作为单机维护后台。
---
## 开发者工作流
### 跑完整测试
```bash
PYTHONPATH=src python3 -m unittest discover -s tests -v
```
### 常用单命令回归
```bash
PYTHONPATH=src python3 -m dbussmsforward.cli validate-config --config appsettings.python.json
PYTHONPATH=src python3 -m dbussmsforward.cli run --config appsettings.python.json
```
### 可编辑安装
```bash
python3 -m pip install -e .
```
安装后可直接使用:
```bash
dbussmsforward validate-config --config appsettings.python.json
dbussmsforward serve-web --config appsettings.python.json --port 8080
```
---
## 兼容性说明
Python 版本配置加载器兼容两类结构:
1. 新结构:`daemon` / `forwarding` / `notifications` / `sms_source`
2. 旧结构:`.NET appSettings` 包装格式
其中 Autman Push 相关配置需包含:
- `ApiUrl` / `api_url`
- `AccessToken` / `access_token`
- `Method` / `method`
---
## 部署
本仓库已经补了部署模板,见:
- `docs/deployment.md`
- `deploy/common/appsettings.deploy.json`
- `deploy/debian/dbussmsforward.service`
- `deploy/debian/install.sh`
- `deploy/openwrt/dbussmsforward.init`
- `deploy/openwrt/install.sh`
支持两类部署方式:
1. **Debian + systemd**
2. **OpenWRT + procd**
服务文件默认使用:
- 配置路径:`/etc/dbussmsforward/appsettings.json`
- 程序目录:`/opt/dbussmsforward`
- 运行模式:`python3 -m dbussmsforward.cli run --iterations 0`
`--iterations 0` 表示持续轮询,适合作为守护进程运行。
---
## 后续建议
虽然主链路、文档和基础部署模板已经齐了,但如果继续往正式交付推进,可以按这个顺序继续:
1. 增加真实 Debian / OpenWRT 机器上的联调记录
2. 补充打包发布流程(wheel / sdist / release artifact
3. 基于真实机器反馈继续扩展环境自检项(例如联网探测、服务状态细查)
4. 再决定是否补 Web 登录、权限和更完整的运维页面
---
## 参考
1. [ModemManager API document](https://www.freedesktop.org/software/ModemManager/api/latest/)
2. [Tmds.DBus](https://github.com/tmds/Tmds.DBus)