Files
SenSu/static/web_panel/pages/logs.js
T
AskaEth e6875f0b4b Initial commit: SenSu Alpha 0.2.0
- 13-service async plugin framework
- Textual TUI with CLI fallback
- Plugin hot-reload + permission system
- Web management panel (aiohttp)
- Bridge-based inter-module communication
- 10 regression tests

Fixes applied:
- PBKDF2-SHA256 auth (was plain SHA256)
- Auth bypass removed (was allow-all on fail)
- Bare excepts replaced with logged errors
- CatFramework/DreamSu -> SenSu naming unified
- ServiceManager: health checks + startup_order
- Env var credentials (SENSU_ADMIN_PASSWORD etc)
2026-06-10 12:28:05 +08:00

25 lines
1.2 KiB
JavaScript

window.LogsModule = {
ws: null,
init: () => {
const box = document.getElementById('log-box');
const connect = () => {
window.LogsModule.ws = new WebSocket(`ws://${location.host}${window.location.pathname.replace(/\/$/,'')}/api/logs/ws`);
window.LogsModule.ws.onopen = () => box.innerHTML += `<div style="color:var(--success)">🟢 Connected</div>`;
window.LogsModule.ws.onmessage = e => {
try {
const d = JSON.parse(e.data);
if(d.type === 'log') {
const cls = d.level === 'ERROR' ? 'log-ERROR' : d.level === 'WARNING' ? 'log-WARNING' : 'log-INFO';
const t = d.timestamp ? new Date(d.timestamp*1000).toLocaleTimeString() : '--';
box.innerHTML += `<div class="log-entry"><span style="color:#555;margin-right:5px">${t}</span><span class="${cls}">[${d.level}]</span> ${d.message}</div>`;
box.scrollTop = box.scrollHeight;
}
} catch(e){}
};
window.LogsModule.ws.onclose = setTimeout(connect, 3000);
};
connect();
},
destroy: () => window.LogsModule.ws?.close()
};