51eb3bf7c8
- Wire up 26 vendor providers: Atlassian Statuspage API, Status.io, Instatus, AWS RSS feeds, Apple/Google JSON feeds, M365 Graph API, and synthetic checks - Add 11 new providers: AWS, Cloudflare, SmartPass, School Dismissal Manager, SherpaDesk, Classkick, ClassDojo, Savvas, Study Island, Promethean, RAZ-Kids - Rename Local Infrastructure → Internet (TCP check to 8.8.8.8:53) - Add WAN throughput graph section: dual-link canvas graphs (Crown Castle + Comcast) polling FortiGate REST API every 30s with 30-min rolling history - Add FortiGate health card: uptime, CPU %, memory % from FortiOS API - Add /api/throughput and /api/fortigate-health endpoints - Add README with setup instructions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
80 lines
3.7 KiB
HTML
80 lines
3.7 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>NHSD Service Status</title>
|
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><rect fill='%233fb950' rx='20' width='100' height='100'/></svg>">
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Big+Shoulders+Display:wght@600;800;900&family=Karla:wght@400;500&family=Martian+Mono:wght@300;400&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" href="css/style.css">
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<div class="header-brand">
|
|
<h1>NHSD SERVICE STATUS</h1>
|
|
</div>
|
|
<div class="header-meta">
|
|
<time id="clock"></time>
|
|
<span id="last-refreshed"></span>
|
|
</div>
|
|
</header>
|
|
<div id="summary-bar"></div>
|
|
<section id="wan-section">
|
|
<div id="wan-graphs">
|
|
<div class="wan-panel">
|
|
<div class="wan-panel-header">
|
|
<span class="wan-name" id="wan1-name">Crown Castle</span>
|
|
<div class="wan-legend">
|
|
<span class="wan-legend-item"><span class="wan-legend-dot rx"></span><span id="wan1-rx">— Mbps ↓</span></span>
|
|
<span class="wan-legend-item"><span class="wan-legend-dot tx"></span><span id="wan1-tx">— Mbps ↑</span></span>
|
|
</div>
|
|
</div>
|
|
<canvas id="wan1-canvas" class="wan-canvas"></canvas>
|
|
</div>
|
|
<div class="wan-panel">
|
|
<div class="wan-panel-header">
|
|
<span class="wan-name" id="wan2-name">Comcast</span>
|
|
<div class="wan-legend">
|
|
<span class="wan-legend-item"><span class="wan-legend-dot rx"></span><span id="wan2-rx">— Mbps ↓</span></span>
|
|
<span class="wan-legend-item"><span class="wan-legend-dot tx"></span><span id="wan2-tx">— Mbps ↑</span></span>
|
|
</div>
|
|
</div>
|
|
<canvas id="wan2-canvas" class="wan-canvas"></canvas>
|
|
</div>
|
|
</div>
|
|
<div id="fg-health-card">
|
|
<div class="fg-identity">
|
|
<span class="status-indicator operational" id="fg-status-dot"></span>
|
|
<span class="fg-model" id="fg-model">FortiGate 1800F</span>
|
|
</div>
|
|
<div class="fg-metrics">
|
|
<div class="fg-metric">
|
|
<span class="fg-metric-label">Hostname</span>
|
|
<span class="fg-metric-value" id="fg-hostname">—</span>
|
|
</div>
|
|
<div class="fg-metric">
|
|
<span class="fg-metric-label">Version</span>
|
|
<span class="fg-metric-value" id="fg-version">—</span>
|
|
</div>
|
|
<div class="fg-metric">
|
|
<span class="fg-metric-label">Uptime</span>
|
|
<span class="fg-metric-value" id="fg-uptime">—</span>
|
|
</div>
|
|
<div class="fg-metric">
|
|
<span class="fg-metric-label">CPU</span>
|
|
<span class="fg-metric-value" id="fg-cpu">—</span>
|
|
</div>
|
|
<div class="fg-metric">
|
|
<span class="fg-metric-label">Memory</span>
|
|
<span class="fg-metric-value" id="fg-mem">—</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<main id="vendor-grid"></main>
|
|
<script src="js/app.js"></script>
|
|
</body>
|
|
</html>
|