Fix #2

Open
VisualPCI wants to merge 1 commits from fix/status-monitor-js-escaping into main
+12 -11
View File
@@ -8,6 +8,7 @@ import json
import threading
from datetime import datetime
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
import os
VERSION = "1.1.0"
@@ -245,7 +246,7 @@ def generate_html():
function setGlobalLoad(b) {
refreshInProgress = b;
var elem = document.getElementById("global-loading");
elem.innerHTML = b ? "<span class=\"loading-spinner\"></span>" : "";
elem.innerHTML = b ? '<span class="loading-spinner"></span>' : '';
}
function render() {
@@ -262,7 +263,7 @@ def generate_html():
const pi = c.url ? c.host + ":" + c.port + c.url : c.host + ":" + c.port;
h += "<div class=\"card " + bc + "\">";
h += "<button class=\"refresh-btn\" onclick=\"refreshService('" + id + "')\" title=\"Refresh\">🔄</button>";
h += "<button class=\"refresh-btn\" onclick=\"refreshService(event, '" + id + "')\" title=\"Refresh\">🔄</button>";
h += "<div class=\"header\"><div class=\"name\">" + c.name + "</div><span class=\"type\">" + c.type + "</span></div>";
h += "<span class=\"badge " + bc + "\">" + s.replace(/_/g, " ") + "</span>";
h += "<div class=\"details\">" + pi + "</div>";
@@ -273,8 +274,7 @@ def generate_html():
if (hist) h += "<div class=\"history-note\">" + hist + "</div>";
h += "</div>";
}
document.getElementById("grid").innerHTML = h || "<p style=\"color:#64748b;text-align:center;\">No services to display</p>";
document.getElementById("grid").innerHTML = h || "<p style='color:#64748b;text-align:center;'>No services to display</p>";
document.getElementById("total").textContent = t;
document.getElementById("ok").textContent = ok;
document.getElementById("ko").textContent = ko;
@@ -282,10 +282,10 @@ def generate_html():
document.getElementById("ts").textContent = "Updated: " + new Date().toLocaleTimeString();
}
function refreshService(sid) {
const btn = event.target;
function refreshService(event, sid) {
const btn = event.currentTarget || event.target;
btn.disabled = true;
btn.innerHTML = "<span class=\"loading-spinner\"></span>";
btn.innerHTML = '<span class="loading-spinner"></span>';
fetch("/api/check/" + encodeURIComponent(sid))
.then(r => r.json())
.then(d => {
@@ -304,7 +304,7 @@ def generate_html():
const btn = document.querySelector(".refresh-all");
setGlobalLoad(true);
btn.disabled = true;
btn.innerHTML = "<span class=\"loading-spinner\"></span> Refreshing...";
btn.innerHTML = '<span class="loading-spinner"></span> Refreshing...';
fetch("/api/refresh")
.then(r => r.json())
.then(d => {
@@ -414,10 +414,11 @@ class Handler(BaseHTTPRequestHandler):
def main():
"""Main entry point."""
print(f"Starting Status Monitor v{VERSION}")
port = int(os.environ.get('PORT', '80'))
print(f"Starting Status Monitor v{VERSION} (port {port})")
check_all()
server = ThreadingHTTPServer(('', 80), Handler)
print(f'Status Monitor v{VERSION} running on port 80')
server = ThreadingHTTPServer(('', port), Handler)
print(f'Status Monitor v{VERSION} running on port {port}')
server.serve_forever()