Add statuspage package with service, handler, and types for exposing platform health. Implement GET /api/v1/status endpoint returning operational status, component health (API, database, gateway runtime), and control plane summary counts. Add Service.Snapshot method querying database connectivity, user/device/gateway/service/policy counts, connected device count via handshake timestamps, and gateway runtime tel
36 lines
1.1 KiB
HTML
36 lines
1.1 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>NexaVPN</title>
|
|
<link rel="icon" href="/favicon.ico" />
|
|
<link rel="stylesheet" href="/styles.css" />
|
|
</head>
|
|
<body>
|
|
<main class="shell">
|
|
<section class="hero">
|
|
<img class="logo" src="/NexaVPN_Logo.png" alt="NexaVPN" />
|
|
<p class="eyebrow">Private access</p>
|
|
<h1>Connect with the NexaVPN app.</h1>
|
|
<p class="copy">
|
|
Use the desktop client to sign in, provision this device, and connect to your private network.
|
|
</p>
|
|
<div class="actions">
|
|
<a class="button primary" href="/status">System status</a>
|
|
<a class="button secondary" href="/api/v1/status">Raw API status</a>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="card">
|
|
<h2>What this host is for</h2>
|
|
<ul>
|
|
<li>Desktop client login and device enrollment</li>
|
|
<li>Profile sync for provisioned devices</li>
|
|
<li>Public VPN entrypoint information</li>
|
|
</ul>
|
|
</section>
|
|
</main>
|
|
</body>
|
|
</html>
|