code wiki / _hdl_build / nx_site_lock.nx
nx_site_lock.nx source
↩ module page · 56 lines · 2886 B
1// nx_site_lock.nx -- the one-click operational tool over the real lock registry. Resolves whether a
2// (site, path) is locked and into which OPAQUE realm/level. Usage:
3// nx_site_lock <site> <path> -> prints LOCKED/PUBLIC for that request
4// nx_site_lock -> self-demo over the seeded knowledge/registry/site_locks.tsv
5// A serving daemon calls slk_resolve directly; this runner proves the real registry file parses and
6// gives the operator a quick "is X locked?" check. Sovereign. license_tier: ORIGINAL
7import "nx_syscalls.nx"
8import "nx_site_lock_lib.nx"
9const SL_MAGIC_1048576: i64 = 1048576
10
11const SL_REG: *u8 = "/mnt/c/Users/elder/nishi-core/nxc2/knowledge/registry/site_locks.tsv"
12
13func sl_p(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
14func sl_pn(v: i64) -> i64 {
15 let bb: *u8 = sys_mmap(28); var m: i64 = v; var k: i64 = 0
16 if m == 0 { bb[0] = 48 as u8; sys_write(1, bb, 1); return 0 }
17 let t: *u8 = sys_mmap(28)
18 while m > 0 { t[k] = ((48 + (m % 10)) as u8); m = m / 10; k = k + 1 }
19 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 }
20 sys_write(1, bb, k); return 0
21}
22func sl_slurp(path: *u8, buf: *u8, cap: i64) -> i64 {
23 let fd: i64 = sys_openat_rd(path)
24 if fd < 0 { return 0 }
25 var total: i64 = 0
26 var nrd: i64 = sys_read(fd, buf, cap)
27 while nrd > 0 { total = total + nrd; if total >= cap { nrd = 0 } else { nrd = sys_read(fd, ((buf as i64) + total) as *u8, cap - total) } }
28 sys_close(fd)
29 return total
30}
31func sl_query(reg: *u8, n: i64, site: *u8, path: *u8) -> i64 {
32 let realm: *u8 = sys_mmap(128)
33 let lvl: *i64 = sys_mmap(8) as *i64
34 let lk: i64 = slk_resolve(reg, n, site, slk_slen(site), path, slk_slen(path), realm, 128, lvl)
35 sl_p(" site=" as *u8); sl_p(site); sl_p(" path=" as *u8); sl_p(path); sl_p(" -> " as *u8)
36 if lk == 1 { sl_p("LOCKED realm=\"" as *u8); sl_p(realm); sl_p("\" level=" as *u8); sl_pn(lvl[0]); sl_p("\n" as *u8) }
37 else { sl_p("PUBLIC\n" as *u8) }
38 return 0
39}
40
41func main(argc: i64, argv: *i64) -> i64 {
42 let reg: *u8 = sys_mmap(SL_MAGIC_1048576)
43 let n: i64 = sl_slurp(SL_REG, reg, SL_MAGIC_1048576)
44 if n <= 0 { sl_p("SITE-LOCK registry missing: " as *u8); sl_p(SL_REG); sl_p("\n" as *u8); sys_exit(1); return 1 }
45 if argc >= 3 {
46 sl_query(reg, n, argv[1] as *u8, argv[2] as *u8)
47 sys_exit(0); return 0
48 }
49 sl_p("nx_site_lock self-demo over the live registry:\n" as *u8)
50 sl_query(reg, n, "nishifamily" as *u8, "/wiki/board.html" as *u8)
51 sl_query(reg, n, "nishifamily" as *u8, "/wiki/charter.html" as *u8)
52 sl_query(reg, n, "nishifamily" as *u8, "/gallery/photo1.jpg" as *u8)
53 sl_query(reg, n, "andelinwest" as *u8, "/index.html" as *u8)
54 sl_query(reg, n, "othersite" as *u8, "/wiki/board.html" as *u8)
55 sys_exit(0); return 0
56}