From d447a95ede604338331dc82253d852187c0be4fc Mon Sep 17 00:00:00 2001 From: SubleXBle <51033045+SubleXBle@users.noreply.github.com> Date: Sat, 16 Aug 2025 20:38:49 +0200 Subject: [PATCH] Create warnings.js --- Web-UI/assets/js/warnings.js | 66 ++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Web-UI/assets/js/warnings.js diff --git a/Web-UI/assets/js/warnings.js b/Web-UI/assets/js/warnings.js new file mode 100644 index 0000000..19dc369 --- /dev/null +++ b/Web-UI/assets/js/warnings.js @@ -0,0 +1,66 @@ +document.addEventListener("DOMContentLoaded", function () { + fetchWarnings(); + setInterval(fetchWarnings, 10000); // Reload every 10 seconds + + function fetchWarnings() { + fetch("includes/warnings.php") + .then((response) => response.json()) + .then((data) => { + if (data.status !== "ok" || !data.enabled) { + return; + } + + updateStatus( + "warning", + data.warning.total_events, + data.warning.total_unique_ips, + data.warning.jails, + data.warning.jail_names || [] + ); + updateStatus( + "critical", + data.critical.total_events, + data.critical.total_unique_ips, + data.critical.jails, + data.critical.jail_names || [] + ); + }) + .catch((error) => { + console.error("Failed to load warning data:", error); + }); + } + + function updateStatus(type, totalEvents, totalIPs, jailStats, jailNames) { + const dot = document.getElementById(`${type}-dot`); + const label = document.getElementById(`${type}-label`); + + if (!dot || !label) return; + + if (totalEvents > 0) { + dot.classList.remove("disabled"); + + if (jailNames.length === 1) { + // Only one jail, short line + const j = jailStats[jailNames[0]]; + label.textContent = `${jailNames[0]} | ${j.events} | ${j.unique_ips}`; + } else if (jailNames.length > 1) { + // Multiple jails, list with lines + const lines = jailNames.map(jail => { + const j = jailStats[jail]; + return `${jail} | ${j.events} | ${j.unique_ips}`; + }); + label.innerHTML = lines.join('
'); + } else { + // No jail name (fallback) + label.textContent = `${totalIPs}/${totalEvents} ${capitalize(type)}${totalIPs !== 1 ? "s" : ""}`; + } + } else { + dot.classList.add("disabled"); + label.textContent = "none"; + } + } + + function capitalize(str) { + return str.charAt(0).toUpperCase() + str.slice(1); + } +});