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}