code wiki / _hdl_build / nx_ia_probe.nx
nx_ia_probe.nx source
↩ module page · 26 lines · 1436 B
1// nx_ia_probe.nx -- resolve an archive.org /details/ URL to the direct media file URL. Run from nxc2 root.
2import "nx_syscalls.nx"
3import "nx_x509_trust_store.nx"
4import "nx_trust_store_load_from_certdata.nx"
5import "nx_csprng.nx"
6import "nx_ia_resolve.nx"
7const K_MAGIC_4194304: i64 = 4194304
8const K_MAGIC_4096: i64 = 4096
9
10func pw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
11func psl(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n }
12
13func main(argc: i64, argv: *i64) -> i64 {
14 var url: *u8 = "https://archive.org/details/felicia-les-mille-et-une-perversions-de-felicia-1975-john-roche-batrice-harnois-" as *u8
15 if argc >= 2 { url = argv[1] as *u8 }
16 let r: i64 = nx_trust_store_load_from_certdata("data/mozilla_certdata.txt" as *u8, 512, K_MAGIC_4194304)
17 if r <= 0 { pw("IA: certdata load failed\n" as *u8); sys_exit(1); return 1 }
18 let store: *TrustStore = r as *TrustStore
19 let cr: *u8 = sys_mmap(32); let pk: *u8 = sys_mmap(32); nx_csprng_fill(cr, 32); nx_csprng_fill(pk, 32)
20 pw("details: " as *u8); pw(url); pw("\n" as *u8)
21 let out: *u8 = sys_mmap(K_MAGIC_4096)
22 let n: i64 = ia_resolve(url, psl(url), store, cr, pk, sys_now_realtime_sec(), out, K_MAGIC_4096)
23 if n > 0 { pw("RESOLVED media URL: " as *u8); pw(out); pw("\n" as *u8) }
24 else { pw("RESOLVE FAILED (no metadata / no mp4)\n" as *u8) }
25 sys_exit(0); return 0
26}