Record standalone sip-call deployment without dialing

This commit is contained in:
2026-10-09 11:13:24 +08:00
parent 6e028d4fea
commit ef1c625119
2 changed files with 58 additions and 1 deletions
+1 -1
View File
@@ -96,7 +96,7 @@
- 2026-10-09 使用者批准修复独立 `sip-call` 的 sudo 归属问题:先将测试机 `pjsip.conf` 恢复为 `rogee:rogee`、保留 `0600` 与原字节,再本地修复工具。主程序必须以配置所属用户运行,写入/抓包前拒绝 root 或归属不匹配;临时与恢复配置保留原用户/组及权限,恢复检查不得只看测试 endpoint 消失。另获明确批准,仅为测试机 `/usr/bin/tcpdump` 配置 `cap_net_raw,cap_net_admin=eip`,已用 `rogee` 验证启动与 SIGINT 停止,输出丢弃、零包、未生成流量;不对主程序提权,不用 sudo 整条命令。调试启动失败须区分“已请求但未启动”和默认“未启用”。归属修复阶段未部署新版工具、未重启服务、未拨号;随后使用者明确仅批准独立工具部署与版本/帮助检查,已将源码基线 `4b27ef3` 及本地 Go 差异固定的工具安装至 `/home/rogee/.local/bin/sip-call`,SHA-256 为 `c6999f84692e31704915450151f9c6c1a31b3e5920acc58a1d3164aafb0941ba`,原工具与来源清单私密保存在 `~/sip-call/tool-backups/20261009T021242Z-c6999f84692e/`;帮助命令通过,原配置和 ENV 未变。此次不启动抓包、不执行 tcpdump→TShark 联合自检、不重启服务、不拨号;此前普通用户中鼎等待接通超时的线路/网络/程序根因仍未证实。详见 [`docs/evidence/sip-call-ownership-repair-20261009.md`](docs/evidence/sip-call-ownership-repair-20261009.md)。
- 2026-10-09 使用者确认独立 `sip-call` 改为 `sip-call [-D|--debug] <线路.env> <原始号码>`,直接移除 `call`/`--sip` 旧写法。临时线路改用主机预先配置且仅配置一次的 `#tryinclude sip-call-managed.conf`:工具只创建本次独立线路文件,确认通话结束及零活动通道后删除、reload 并核对 endpoint/AOR 已卸载;原 `pjsip.conf` 和业务线路不写入、不备份,输入 ENV 保留。入口缺失/重复、旧临时文件或配置变化明确拒绝;未知通道仍保留临时配置与证据,不自动删除。`tool-backups` 是安装时保存的旧工具及来源记录,非 SIP 配置备份,不自动删除。本次仅本地实现、测试和说明;主机添加固定入口、新版部署及拨号均未授权执行。
- 2026-10-09 使用者确认独立 `sip-call` 改为 `sip-call [-D|--debug] <线路.env> <原始号码>`,直接移除 `call`/`--sip` 旧写法。临时线路改用主机预先配置且仅配置一次的 `#tryinclude sip-call-managed.conf`:工具只创建本次独立线路文件,确认通话结束及零活动通道后删除、reload 并核对 endpoint/AOR 已卸载;原 `pjsip.conf` 和业务线路不写入、不备份,输入 ENV 保留。入口缺失/重复、旧临时文件或配置变化明确拒绝;未知通道仍保留临时配置与证据,不自动删除。`tool-backups` 是安装时保存的旧工具及来源记录,非 SIP 配置备份,不自动删除。此前本地阶段未部署;随后使用者批准先提交 push 再部署、不外呼。源码 `6e028d4` 已推送核对,新工具已安装至登记测试机 `/home/rogee/.local/bin/sip-call`,SHA-256 为 `428361822621597ca26e70281d65f4c815251a02d47c11794c1519828f03438a`,固定入口已一次性追加并核对原字节前缀/归属/权限。ENV、业务线路与服务状态/进程号不变,零活动通话;未加载临时线路、reload、重启、抓包、外呼或调用 AI。原工作区并行产生的合同指针/测试改动未覆盖或纳入本次提交;制品来自干净固定提交。来源及验证边界见 [`docs/evidence/sip-call-positional-cli-deployment-20261009.md`](docs/evidence/sip-call-positional-cli-deployment-20261009.md)。
## SaaS、Dispatcher 与 Agent 的现行边界
@@ -0,0 +1,57 @@
# sip-call 新命令及独立临时线路部署(2026-10-09)
## 授权与结论
使用者确认:先提交并 push 本轮代码,核对远端提交后部署独立 `sip-call`;不外呼。范围包括一次性准备已经确认的固定配置入口,不包括业务 Agent/Dispatcher 更新、服务重启、PJSIP reload、抓包或真实 AI 调用。
已完成代码推送、独立工具部署及只读检查。没有发起呼叫,也没有执行临时线路加载/卸载或真实通话验收。
## 来源与安装位置
| 项目 | 事实 |
| --- | --- |
| 已推送源码 | `6e028d4feac47585db5ec1a2e4074498e69de41b`;部署前与 `origin/main` 一致 |
| 构建来源 | 固定上述提交的独立、干净 worktree,使用该提交固定的合同,不采用原工作区后来出现的未提交合同指针改动 |
| 构建方式 | Go 1.27.1,`make build-sip-call`,`-trimpath -buildvcs=false`;外部清单记录来源 |
| 二进制 SHA-256 | `428361822621597ca26e70281d65f4c815251a02d47c11794c1519828f03438a` |
| 登记主机 | `server.sip`,`rogee` 用户,x86_64,原生 Asterisk 22.10.1 |
| SSH 校验 | 已登记 ED25519 `SHA256:F5BqDTk+/Es2pj8vNjM0dwDMHmfcyuTI1trBOfPy6jk`,强制已知主机校验;未新增或覆盖登记 |
| 安装位置 | `/home/rogee/.local/bin/sip-call`,`rogee:rogee`,`0755` |
构建、安装和随后独立读取的二进制 hash 一致;登录 shell 的 `command -v sip-call` 指向上述位置。新帮助展示 `sip-call <线路.env> <原始号码>` 及 `-D, --debug`,不展示旧 `call` 子命令或 `--sip`。
部署准备时发现原工作区有并行产生的未提交改动,未覆盖、暂存或提交它们;部署制品仅来自已推送的固定源码。原工作区的共享合同指针及另行产生的测试修改保留。
## 一次性配置准备
在确认没有活动通话、没有运行中的独立工具、没有遗留 `sip-call-managed.conf` 后,持有与工具相同的 `.sip-call.lock`,向 `~/.config/go-sip-asterisk/pjsip.conf` 追加一次:
```ini
#tryinclude sip-call-managed.conf
```
原文件全部原字节作为前缀保留;所属用户/组及 `0600` 保持不变。写入前核对原 hash 和 metadata,临时文件同步后原子替换。安装后核对固定入口恰好一个,并再次检查原字节前缀和 metadata。
本次没有创建临时线路文件,也没有 reload 或重启 Asterisk。入口文件不存在;其实际测试线路加载与卸载仍须以后独立授权验证。
新版工具今后只创建/删除本次临时线路文件,不改写、不备份整份 `pjsip.conf`;输入 `SIP.env` 保留。结束未知、活动通道或配置变化仍明确拒绝清理,不自动重跑。
## 保留及清理范围
- 旧版安装工具及新版本来源清单保存到 `~/sip-call/tool-backups/` 下本次新建的私有目录,目录 `0700`、JSON 清单 `0600`;旧二进制 hash 核对后才替换安装文件。
- 没有创建整份 `pjsip.conf` 备份,也没有删除既有备份或历史证据。`tool-backups` 属于工具安装记录,不是每通 SIP 配置备份或运行依赖。
- 三份原有 ENV 的 hash、所属用户/组及 `0600` 均不变;`go-sip-managed.conf` 和 `asterisk.conf` 不变。
- 没有覆盖业务程序、旧数据库、恢复文件、录音、凭据或业务线路。
- 安装结束后只删除本次创建、逐文件核对 hash 的 `.deploy-6e028d4` staging 文件及其空目录;其他文件不清理。
- 私有来源、前后快照及部署结果保留在本机 `.local/sip-call-deploy-6e028d4/` 和测试机本次工具备份目录,原始私有配置不进入提交。
## 验证结果与边界
- 已提交源码的 `go vet`、相关 race 测试通过;干净固定 worktree 的相关 race 测试及 `make check` 再次通过,包括隔离 RabbitMQ/HTTPS/mTLS Mock、Proto 和固定合同检查。此前全量 race 测试通过,业务单元覆盖率 70.6%。
- 安装 hash、新帮助及登录 shell 命令位置检查通过。
- 安装前、安装后均确认原生 Asterisk 为零活动通道、零活动通话。
- 前后服务状态和进程号一致。Dispatcher 原有 `activating/auto-restart` 等待状态未由本次操作改变,不能把本次工具安装解释为业务已 ready。
- 前后没有 tcpdump/TShark 进程变化;未启动抓包,未新增工具运行中的呼叫。
- 没有发起 INVITE、调用 AI/OSS、加载临时线路、PJSIP reload、重启服务或修改拨号授权。
本地模拟和安装检查不证明实际 SIP 接通、媒体、AI 或原生 Asterisk 临时线路卸载成功。