Files
go-sip/docs/evidence/sip-user-service-nonprod.md
T

9.6 KiB
Raw Blame History

Nonproduction native Asterisk user service — 2026-10-03

This is nonproduction host and isolated-Mock channel evidence, not carrier trunk, outbound-call, external SaaS, or production acceptance. The test host's address and raw logs are omitted from committed evidence.

  • Fresh Debian 13 amd64 host, root directory mode 0755 root:root (read-only inspection).
  • Native Asterisk 22.10.1 stage SHA-256: 68006a1a8efed288be4ca4a2ae3cb9554a31d733eac08eaacf4c646c95faf74d.
  • Installed under rogee's home without sudo; systemctl --user reported go-sip-asterisk.service enabled and active, and the live CLI returned Asterisk 22.10.1.
  • Initial installation: systemctl --user reload succeeded and res_pjsip.so reported running. At that time no PJSIP endpoints were configured. Later authorized three-line loading is documented below; reload during an active call remains unverified.
  • User lingering was disabled by user choice: reboot persistence is not verified. The production installer now refuses installation without lingering; --nonprod is explicitly session-scoped.
  • An earlier user-install draft generated a template-only [directories](!) stanza and missed a startup crash. Corrected to [directories] and a live CLI readiness check; the corrected installer was checked for platform/lingering and no-overwrite behavior, but a fresh-install run of that final revision remains unverified.
  • Prior Debian 12 nonproduction host: a native, same-OS Asterisk 22.10.1 stage was built and its checksum checked. The default installer rejected Debian 12; --nonprod installed the stage. Its system service could not be accepted and the host was subsequently reinstalled; do not count that as a successful Cell deployment.

Authorized native SIP load — 2026-10-03

  • After confirming zero active calls, a fixed UDP transport and Agent-owned include were installed in the rogee user config. Restarting the user service took time; an early CLI query found it unready, so no loaded revision was claimed then. Once ready, go-sip-udp was observed on 0.0.0.0:5060.
  • The project's native renderer and loader applied a complete user-authorized test snapshot that explicitly declares UDP/IP authentication and no REGISTER for three historical trunk addresses and inspected live PJSIP endpoint, AOR/contact, PCMA and transport state. Three endpoints loaded, revision 9 recorded, zero active calls. The initial interrupted observation recorded no revision; recovery required both the exact approved file and matching Asterisk runtime state. No dial, REGISTER, provider authorization, media, or active-call reload was attempted. The carrier has not confirmed that these historical lines actually use the asserted authentication, transport, or registration settings.
  • This initial direct native-loader probe alone did not prove Dispatcher→Agent RPC or RabbitMQ sip.config; the later channel test below does. Only counts, status and revision are retained here; service addresses, caller identities, keys and raw host logs are omitted.

Isolated HTTPS / RabbitMQ / mTLS → native Asterisk — 2026-10-03

  • Test Agent/Dispatcher binary SHA-256 matched locally and on the host: 6e5b7b9b3de0cdd5aeb944d8df842269b4748dd6af4763396b95ea6288f1166d. A private, self-signed test CA and isolated HTTPS config source supplied the approved complete SIP snapshot; an isolated RabbitMQ container had the SaaS-owned topic exchanges and Dispatcher control queue provisioned before the SIP-only Dispatcher started. Only its own assigned control route was consumed. A pinned SSH tunnel carried the Dispatcher's mTLS gRPC session to the SIP-only Agent on the Debian host. No external SaaS or carrier participated.
  • Startup read revision 10 and verified 3 native Asterisk endpoints; the Dispatcher checkpoint became (applied=10, pending=0, call_admission=0).
  • Two persistent sip.config notifications changed only the approved middle trunk's enabled state. Revision 11 loaded 2 native endpoints; revision 12 restored all 3. Each time, the Dispatcher checkpoint reached the matching applied revision, pending=0, and call_admission=0; Agent's persisted revision, live endpoint count, and Asterisk's zero active calls were independently read. The final observed state is revision 12, three endpoints, not an authorization to call.
  • A replay of the already applied revision 12 returned to (12,0,0) with an empty control queue and unchanged managed-config and verified-state file modification times; no second native write/reload was needed. RabbitMQ publisher confirms only broker acceptance; the separate Agent/Asterisk readback and Dispatcher checkpoint established this isolated application's handling. Neither the publisher confirm nor the local Mock response proves external SaaS receipt or production readiness. A transient user-service startup delay was treated as unready rather than inventing a loaded revision. With lingering disabled, this test does not verify service availability after logout or reboot.
  • Restricted test certificates, environment files, raw logs and snapshots remain outside the repository; committed evidence contains no credential, service IP, caller identity, audio, or transcript. The test made no call, registration, media capture, or active-call reload.

Capture-tool preflight — 2026-10-04

  • On the same pinned Debian 13 test host, rogee now passes noninteractive sudo -n true. With explicit user authorization, installed Debian tcpdump 4.99.5-2 and libpcap0.8t64 1.10.5-2; tcpdump executable SHA-256 0d426e2571a22de0d30996fd01bb44c1f267f33065023abea092c88bad16d2d2.
  • sudo -n tcpdump -D reported 8 interfaces. This is only a capability check: no packet capture or call was started. Asterisk ARI/HTTP config is still absent on this rebuilt host, the business call executable remains Mock-only, and a real provider/task snapshot has not been signed off. At inspection Asia/Shanghai was 08:15, before the authorized 09:00 opening; installation of tcpdump alone is not dialing permission.

Authorized nonproduction ARI/HTTP setup — 2026-10-04

  • After read-only confirmation of zero active calls and channels, the committed and locally tested configure-asterisk-user-ari.sh (1d12007) created only the rogee user's private ari.conf, http.conf and ari-secret, all mode 0600; no existing file was overwritten and no credential was printed or committed. HTTP binds only 127.0.0.1:8088. The user-level Asterisk service was then explicitly restarted and reported enabled+active with a live CLI; anonymous ARI status returned 401, and a read-only authenticated ARI information request returned 200. No outbound call, registration or media capture was performed.
  • Very short independent SSH probes had observed the service active before its control socket appeared. In a sustained SSH session, its PID stayed stable and the socket and CLI became available after startup; this was a session/startup observation, not evidence of a broken Asterisk binary. Lingering is still disabled: availability after logout or reboot remains unverified. Real Agent ARI use, signed task/provider snapshots, carrier requirements and capture-first host validation have not been accepted.

Native Agent ARI SDK readback — 2026-10-04

  • On the same pinned test host, an explicitly opt-in, CGO-disabled Go test read the owner-only ari-secret in memory (no value logged) and used the existing github.com/CyCoreSystems/ari/v5/client/native client against the loopback ARI endpoint. native.Connect and the authenticated read-only Asterisk status request both passed. The test binary was temporary and removed after the check; no channel was created, no call originated, no RTP/audio was captured and no OSS or AI request was issued. internal/asterisk/ari.go fails closed for missing, non-regular, non-0600, malformed or mismatched credentials. SDK readback does not establish real Agent execution, Stasis/media handling, recording or carrier acceptance.

Still required before a real call or production acceptance

  1. Verify the effect of endpoint updates during an active authorized call separately; SIP-only does not enable business dialing. Unsupported authentication/REGISTER and transport changes must continue to fail closed, and provider-side authentication, registration, routing and capacity remain unverified.
  2. Obtain carrier-confirmed authentication, transport and registration requirements for each real line, provide approved real line configuration, and arrange each whitelist trial (trunk, original number, time, attempt count). The fixed Asia/Shanghai 09:00–20:00 gate and per-number daily cap remain mandatory.
  3. Establish the approved task/provider snapshots, real ASR/TTS/recording chain and nonproduction call-evidence capture. One isolated Bailian LLM request and one unique-object OSS PUT succeeded independently (evidence); neither proves a phone call or SaaS application receipt. tcpdump and passwordless sudo are now present, and deploys/test/nonprod-call-evidence.sh now has an explicit user-service scope verified with local fail-closed tests; its host preflight and actual PJSIP logger/capture are not yet verified. User-level ARI/HTTP is configured as above, but the formal Agent business call route still rejects non-Mock execution. Verify the host diagnostics, real media and signed snapshots before any call; any unavailable step fails closed.
  4. Enable rogee user lingering and verify reboot-persistent enabled+active before claiming production readiness. Complete the host/network/dependency diagnostics and external signoffs separately; local make check cannot replace them.