SIMON Master Console Rebuild
True command center for SIMON + WEB360
This rebuild gives you a cleaner production spine: interactive tree, live viewer, guarded editor, dynamic graphics, architecture map, and note storage. It is designed to sit beside your existing
console.php
and become the stronger replacement path.
Dashboard
Tree
Viewer
System Map
File Registry
Notes
Files
15,026
Folders
377
Scanned Size
3.79 GB
PHP Files
791
Editable Text Files
12,310
File viewer
guarded to /htdocs
/infinity/lulu/console.php
<?php declare(strict_types=1); require __DIR__ . '/lib.php'; $c = cfg(); header('Content-Type: text/html; charset=utf-8'); ?> <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"> <title>Lulu HQ • Admin Console</title> <meta name="theme-color" content="#070b16"> <style> :root{--bg:#070b16;--panel:rgba(255,255,255,.06);--edge:rgba(255,255,255,.14);--text:#eaf2ff;--muted:#a9b6d9;} *{box-sizing:border-box} body{margin:0;background:radial-gradient(1200px 700px at 50% -10%, #14265b 0%, var(--bg) 60%); color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial} main{max-width:1100px;margin:0 auto;padding:18px} .card{border-radius:18px;border:1px solid var(--edge);background:var(--panel);padding:14px;margin-top:12px} .row{display:flex;gap:10px;flex-wrap:wrap;align-items:center} .btn{border:1px solid var(--edge);background:rgba(0,0,0,.22);color:var(--text);padding:10px 12px;border-radius:999px;cursor:pointer} .btn:hover{background:rgba(255,255,255,.10)} input,select{padding:10px 12px;border-radius:14px;border:1px solid var(--edge);background:rgba(0,0,0,.18);color:var(--text)} pre{white-space:pre-wrap;word-break:break-word;background:rgba(0,0,0,.25);padding:12px;border-radius:14px;border:1px solid rgba(255,255,255,.10)} .mut{color:var(--muted);font-size:12px;line-height:1.45} </style> </head> <body> <main> <div class="card"> <div class="row" style="justify-content:space-between"> <div> <div style="letter-spacing:.14em;font-weight:800">LULU HQ • ADMIN CONSOLE</div> <div class="mut">Key-protected endpoints. Logs are append-only NDJSON.</div> </div> <div class="row"> <a class="btn" href="/infinity/lulu/">Back to Lulu</a> <a class="btn" href="/infinity/lulu/health.php" target="_blank" rel="noopener">Health</a> </div> </div> </div> <div class="card"> <div class="row"> <input id="key" type="password" placeholder="Admin key (X-LULU-KEY)" style="min-width:340px"> <select id="log"> <option value="lulu_errors.ndjson">lulu_errors.ndjson</option> <option value="lulu.ndjson">lulu.ndjson</option> <option value="lulu_audit.ndjson">lulu_audit.ndjson</option> <option value="lulu_perf.ndjson">lulu_perf.ndjson</option> </select> <input id="n" type="number" min="10" max="2000" value="200" style="width:120px"> <button class="btn" id="tail">Tail</button> <button class="btn" id="stats">Stats</button> <button class="btn" id="safeOn">Safe ON</button> <button class="btn" id="safeOff">Safe OFF</button> <button class="btn" id="backup">Backup NOW</button> </div> <div class="mut" id="msg" style="margin-top:10px"></div> </div> <div class="card"> <div style="font-weight:800;letter-spacing:.08em">Output</div> <pre id="out">(none)</pre> </div> <script> const $ = (s)=>document.querySelector(s); async function post(a, body){ const key = $("#key").value || ""; const res = await fetch("/infinity/lulu/console_api.php?a="+encodeURIComponent(a), { method:"POST", headers:{ "Content-Type":"application/json", "X-LULU-KEY": key }, body: JSON.stringify(body||{}) }); const txt = await res.text(); return {ok: res.ok, status: res.status, text: txt}; } $("#tail").onclick = async () => { const r = await post("tail", {log: $("#log").value, n: Number($("#n").value||200)}); $("#msg").textContent = `HTTP ${r.status}`; $("#out").textContent = r.text; }; $("#stats").onclick = async () => { const r = await post("stats", {}); $("#msg").textContent = `HTTP ${r.status}`; $("#out").textContent = r.text; }; $("#safeOn").onclick = async () => { const r = await post("safe", {on: 1}); $("#msg").textContent = `HTTP ${r.status}`; $("#out").textContent = r.text; }; $("#safeOff").onclick = async () => { const r = await post("safe", {on: 0}); $("#msg").textContent = `HTTP ${r.status}`; $("#out").textContent = r.text; }; $("#backup").onclick = async () => { const r = await post("backup_now", {}); $("#msg").textContent = `HTTP ${r.status}`; $("#out").textContent = r.text; }; </script> </main> </body> </html>
Save file
Quick jump
open a path
Open