Skip to content

Commit 87bc78a

Browse files
djformbyclaude
andcommitted
add Wazuh SIEM button to lab dashboard
Adds a Wazuh sidebar button (with live status polling) and topbar shortcut alongside the existing Attacker/Defender/Caldera buttons. URLs configured for localhost, 127.0.0.1, and 192.168.95.45 host variants, pointing at port 5601 (dashboard) and 192.168.90.20 (DMZ IP). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 819248d commit 87bc78a

1 file changed

Lines changed: 25 additions & 4 deletions

File tree

simulation/web_visualization/index.html

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -316,17 +316,20 @@
316316
"localhost": {
317317
attacker: "http://localhost:6088/",
318318
defender: "http://localhost:6080/",
319-
caldera: "http://localhost:8888/"
319+
caldera: "http://localhost:8888/",
320+
wazuh: "http://localhost:5601/"
320321
},
321322
"127.0.0.1": {
322323
attacker: "http://127.0.0.1:6088/",
323324
defender: "http://127.0.0.1:6080/",
324-
caldera: "http://127.0.0.1:8888/"
325+
caldera: "http://127.0.0.1:8888/",
326+
wazuh: "http://127.0.0.1:5601/"
325327
},
326328
"192.168.95.45": {
327329
attacker: "http://192.168.90.6:6080/",
328330
defender: "http://192.168.95.5:6080/",
329-
caldera: "http://192.168.90.250:8888/"
331+
caldera: "http://192.168.90.250:8888/",
332+
wazuh: "http://192.168.90.20:5601/"
330333
}
331334
};
332335

@@ -367,6 +370,7 @@
367370
attacker: { current: null, okStreak: 0, failStreak: 0 },
368371
defender: { current: null, okStreak: 0, failStreak: 0 },
369372
caldera: { current: null, okStreak: 0, failStreak: 0 },
373+
wazuh: { current: null, okStreak: 0, failStreak: 0 },
370374
};
371375

372376
function setToolStatus(toolName, ok, detailText) {
@@ -441,15 +445,17 @@
441445
}
442446

443447
async function pollOnce() {
444-
const [attOk, defOk, calOk] = await Promise.all([
448+
const [attOk, defOk, calOk, wazOk] = await Promise.all([
445449
checkTool("attacker"),
446450
checkTool("defender"),
447451
checkTool("caldera"),
452+
checkTool("wazuh"),
448453
]);
449454

450455
applyStabilizedResult("attacker", attOk);
451456
applyStabilizedResult("defender", defOk);
452457
applyStabilizedResult("caldera", calOk);
458+
applyStabilizedResult("wazuh", wazOk);
453459

454460
const next = anyUnstable() ? POLL_MS_UNSTABLE : POLL_MS_STABLE;
455461
setTimeout(pollOnce, next);
@@ -500,6 +506,7 @@
500506
// Tool indicators start calm
501507
setToolStatus("attacker", null, "Checking…");
502508
setToolStatus("defender", null, "Checking…");
509+
setToolStatus("wazuh", null, "Checking…");
503510
pollOnce();
504511

505512
refreshSimulationStatus();
@@ -578,6 +585,19 @@ <h1>GRFICSv3</h1>
578585
</div>
579586
</button>
580587

588+
<button class="btn" onclick="openTool('wazuh')">
589+
<div class="icon">🛡️</div>
590+
<div class="meta">
591+
<div class="label">Wazuh SIEM</div>
592+
<div class="hint">
593+
<span class="tool-status">
594+
<span id="wazuhDot" class="tool-dot"></span>
595+
<span id="wazuhText" class="tool-status-text">Checking…</span>
596+
</span>
597+
</div>
598+
</div>
599+
</button>
600+
581601
<div class="section-title">Simulation</div>
582602

583603
<button class="btn" onclick="unityInstance && unityInstance.SetFullscreen(1)">
@@ -600,6 +620,7 @@ <h1>GRFICSv3</h1>
600620
<div class="actions">
601621
<button class="small-btn" onclick="openTool('attacker')">Attacker</button>
602622
<button class="small-btn" onclick="openTool('defender')">Defender</button>
623+
<button class="small-btn" onclick="openTool('wazuh')">Wazuh</button>
603624
<button class="small-btn" onclick="unityInstance && unityInstance.SetFullscreen(1)">Fullscreen</button>
604625
</div>
605626
</div>

0 commit comments

Comments
 (0)