code wiki / _hdl_build / nx_video_2party_probe.nx
nx_video_2party_probe.nx source
↩ module page · 74 lines · 4543 B
1// nx_video_2party_probe.nx -- LIVE end-to-end media fan-out proof (operator: "I want our video system to
2// WORK"). Opens TWO concurrent TLS-1.3 + WebSocket sessions to the REAL nishifamily.com/signal/<room>,
3// has peer A send a masked WS BINARY frame with a known marker, and verifies peer B RECEIVES that marker
4// via the relay's content-blind broadcast -- proving media actually flows peer -> relay -> peer over the
5// real edge (TLS -> sites.elf /signal pump -> nx_signaling_v2 -> broadcast). Beyond serve+upgrade: this is
6// the "two people actually see each other" proof.
7// The TLS-record + RFC-6455 client-session glue now lives in the SHARED nx_ws_client_session.nx (wscs_*),
8// so this probe and the mobile-native client (nx_video_native_client_gate) use ONE implementation (DRY).
9// usage: nx_video_2party_probe [room] (default room "nx2ptest")
10// expect_exit: 0 license_tier: ORIGINAL
11import "nx_syscalls.nx"
12import "nx_ws_client_session.nx" // wscs_connect / wscs_send / wscs_ws_recv (+ transitive TLS/WS/trust/frame)
13const K_MAGIC_4194304: i64 = 4194304
14
15func p2w(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
16func p2n(v: i64) -> i64 {
17 let b: *u8=sys_mmap(28); var m: i64=v; if m<0{sys_write(1,"-" as *u8,1);m=0-m}
18 let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48 as u8;k=1} while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1}
19 var i: i64=0; while i<k{b[i]=t[k-1-i];i=i+1} sys_write(1,b,k); return 0 }
20func p2_slen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n }
21
22func main(argc: i64, argv: *i64) -> i64 {
23 p2w("=== nx_video_2party_probe: LIVE media fan-out A -> relay -> B over the real edge ===\n" as *u8)
24 let r: i64 = nx_trust_store_load_from_certdata("data/mozilla_certdata.txt\x00" as *u8, 512, K_MAGIC_4194304)
25 if r <= 0 { p2w("trust store load failed\n" as *u8); return 1 }
26 let store: *TrustStore = r as *TrustStore
27 // room in the URL path; default nx2ptest
28 let url: *u8 = "https://nishifamily.com/signal/nx2ptest\x00" as *u8
29 p2w(" connecting peer A + peer B to /signal/nx2ptest ...\n" as *u8)
30 let sa: *i64 = sys_mmap(16) as *i64
31 let fa: *i64 = sys_mmap(16) as *i64
32 let sb: *i64 = sys_mmap(16) as *i64
33 let fb: *i64 = sys_mmap(16) as *i64
34 if wscs_connect(store, url, 0xC0, sa, fa) != 1 { p2w("PEER-A connect/upgrade FAILED\n" as *u8); return 1 }
35 p2w(" peer A: WebSocket 101 OK\n" as *u8)
36 if wscs_connect(store, url, 0x30, sb, fb) != 1 { p2w("PEER-B connect/upgrade FAILED\n" as *u8); return 1 }
37 p2w(" peer B: WebSocket 101 OK (both in the room)\n" as *u8)
38 let sessA: *Tls13ClientSession = sa[0] as *Tls13ClientSession
39 let sessB: *Tls13ClientSession = sb[0] as *Tls13ClientSession
40
41 // A sends a masked WS BINARY frame carrying a known marker
42 let marker: *u8 = "NISHI-FANOUT-PROOF-40402" as *u8
43 let mlen: i64 = p2_slen(marker)
44 let frame: *u8 = sys_mmap(256)
45 let mask: i64 = 0x5A6B7C8D
46 let hn: i64 = ws_build_header(frame, 256, 1, WS_OP_BINARY, 1, mask, mlen)
47 var c: i64 = 0
48 while c < mlen { frame[hn + c] = marker[c]; c = c + 1 }
49 ws_apply_mask(frame, hn, mlen, mask)
50 if wscs_send(sessA, fa[0], frame, hn + mlen) != 0 { p2w("A send FAILED\n" as *u8); return 1 }
51 p2w(" peer A sent a masked BINARY frame: '"); p2w(marker); p2w("'\n" as *u8)
52
53 // B reads a WS frame -> verify it is A's marker (the relay fanned it out)
54 let got: *u8 = sys_mmap(256)
55 let glen: i64 = wscs_ws_recv(sessB, fb[0], got, 256)
56 p2w(" peer B received "); p2n(glen); p2w(" bytes: '"); if glen > 0 { sys_write(1, got, glen) } p2w("'\n" as *u8)
57 var ok: i64 = 0
58 if glen == mlen {
59 ok = 1
60 var i: i64 = 0
61 while i < mlen { if got[i] != marker[i] { ok = 0; i = mlen } else { i = i + 1 } }
62 }
63 sys_close(fa[0]); sys_close(fb[0])
64
65 let lf: i64 = sys_openat_append("knowledge/status/video_2party.log" as *u8, 420)
66 if lf >= 0 {
67 sys_write(lf, "VIDEO2PARTY a_upgrade=1 b_upgrade=1 b_received=" as *u8, 46); let nb: *u8=sys_mmap(8); nb[0]=(48+glen/100%10) as u8; nb[1]=(48+glen/10%10) as u8; nb[2]=(48+glen%10) as u8
68 if ok==1 { sys_write(lf, "B verdict=GREEN\n" as *u8, 15) } else { sys_write(lf, "B verdict=RED\n" as *u8, 13) }
69 sys_close(lf)
70 }
71 if ok == 1 { p2w("VIDEO-2PARTY-PROOF verdict=GREEN -- A's media frame reached B via the LIVE relay (fan-out WORKS)\n" as *u8); return 0 }
72 p2w("VIDEO-2PARTY-PROOF verdict=RED -- B did not receive A's frame\n" as *u8)
73 return 1
74}