From ef1c625119663086372d0714e5fbe16336b88b7c Mon Sep 17 00:00:00 2001 From: Rogee Date: Fri, 9 Oct 2026 11:13:24 +0800 Subject: [PATCH] Record standalone sip-call deployment without dialing --- AGENTS.md | 2 +- ...call-positional-cli-deployment-20261009.md | 57 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 docs/evidence/sip-call-positional-cli-deployment-20261009.md diff --git a/AGENTS.md b/AGENTS.md index c297153..5aa96f4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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 的现行边界 diff --git a/docs/evidence/sip-call-positional-cli-deployment-20261009.md b/docs/evidence/sip-call-positional-cli-deployment-20261009.md new file mode 100644 index 0000000..6713946 --- /dev/null +++ b/docs/evidence/sip-call-positional-cli-deployment-20261009.md @@ -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 临时线路卸载成功。