Files
sovereign_browser/www/fips.html
T

161 lines
6.5 KiB
HTML

<!DOCTYPE html>
<html class="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>FIPS Mesh Network</title>
<link rel="stylesheet" href="sovereign://fips.css">
</head>
<body>
<h1>FIPS Mesh Network <button class="btn" id="refresh-btn">Refresh</button></h1>
<div class="tabs">
<button class="tab-btn active" data-tab="status">Status</button>
<button class="tab-btn" data-tab="peers">Peers</button>
<button class="tab-btn" data-tab="network">Network</button>
<button class="tab-btn" data-tab="tree">Tree</button>
<button class="tab-btn" data-tab="directory">Directory</button>
</div>
<div id="status-msg" class="status"></div>
<!-- Status tab -->
<div class="tab-panel active" id="tab-status">
<h2>Status</h2>
<div class="card" id="fips-status">
<div class="info-row"><span>State</span><span id="fips-state"></span></div>
<div class="info-row"><span>Node</span><span id="fips-node" class="mono"></span></div>
<div class="info-row"><span>TUN</span><span id="fips-tun"></span></div>
<div class="info-row"><span>Peers</span><span id="fips-peers"></span></div>
<div class="info-row"><span>Tree</span><span id="fips-tree"></span></div>
<div class="info-row"><span>Ownership</span><span id="fips-ownership"></span></div>
<div class="info-row"><span>Control</span><span id="fips-control" class="mono"></span></div>
<div class="info-row" id="fips-error-row" style="display:none">
<span>Error</span><span id="fips-error" class="err-text"></span>
</div>
<div class="actions">
<button class="btn" id="restart-btn">Restart Service</button>
</div>
</div>
<h2>Tor Status <span class="note">(read-only)</span></h2>
<div class="card" id="tor-status">
<div class="info-row"><span>State</span><span id="tor-state"></span></div>
<div class="info-row"><span>Bootstrap</span><span id="tor-bootstrap"></span></div>
<div class="info-row"><span>SOCKS</span><span id="tor-socks" class="mono"></span></div>
<div class="info-row"><span>Ownership</span><span id="tor-ownership"></span></div>
<div class="info-row" id="tor-error-row" style="display:none">
<span>Error</span><span id="tor-error" class="err-text"></span>
</div>
</div>
</div>
<!-- Peers tab -->
<div class="tab-panel" id="tab-peers">
<h2>Peers</h2>
<div id="peers-container">
<p class="empty" id="peers-empty">Loading peers…</p>
<table id="peers-table" style="display:none">
<thead>
<tr>
<th>npub</th><th>address</th><th>transport</th><th>state</th><th></th>
</tr>
</thead>
<tbody id="peers-body"></tbody>
</table>
</div>
<h2>Add Peer</h2>
<div class="card">
<div class="form">
<input type="text" id="peer-npub" placeholder="npub1..." size="50">
<input type="text" id="peer-address" placeholder="host:port" size="30">
<select id="peer-transport">
<option value="udp">udp</option>
<option value="tcp">tcp</option>
</select>
<button class="btn" id="connect-btn">Connect</button>
</div>
</div>
</div>
<!-- Network tab -->
<div class="tab-panel" id="tab-network">
<h2>Mesh Summary</h2>
<div class="card" id="mesh-summary">
<div class="info-row"><span>Known nodes</span><span id="mesh-known"></span></div>
<div class="info-row"><span>Direct peers</span><span id="mesh-direct"></span></div>
<div class="info-row"><span>Tree depth</span><span id="mesh-depth"></span></div>
<div class="info-row"><span>Root</span><span id="mesh-root" class="mono"></span></div>
<div class="info-row"><span>Our parent</span><span id="mesh-parent"></span></div>
<div class="info-row" id="mesh-error-row" style="display:none">
<span>Error</span><span id="mesh-error" class="err-text"></span>
</div>
</div>
<h2>Known Nodes <span class="note" id="nodes-count-label"></span></h2>
<div id="nodes-container">
<p class="empty" id="nodes-empty">Loading network…</p>
<table id="nodes-table" style="display:none">
<thead>
<tr>
<th></th><th>npub</th><th>name</th><th>ipv6</th><th>last seen</th>
</tr>
</thead>
<tbody id="nodes-body"></tbody>
</table>
</div>
</div>
<!-- Directory tab -->
<div class="tab-panel" id="tab-directory">
<h2>FIPS Node Directory <span class="note" id="dir-count-label"></span></h2>
<p class="note">All nodes that have published a FIPS service advert (Kind 37195) to the Nostr advert relays. This is the global network directory, like join.fips.network.</p>
<div id="dir-container">
<p class="empty" id="dir-empty">Click to load the directory from Nostr relays…</p>
<table id="dir-table" style="display:none">
<thead>
<tr>
<th></th><th>npub</th><th>endpoint</th><th></th>
</tr>
</thead>
<tbody id="dir-body"></tbody>
</table>
</div>
<div class="actions" id="dir-actions" style="display:none">
<button class="btn" id="dir-refresh-btn">Reload Directory</button>
</div>
</div>
<!-- Tree tab -->
<div class="tab-panel" id="tab-tree">
<h2>Spanning Tree</h2>
<div class="card" id="tree-summary">
<div class="info-row"><span>Root</span><span id="tree-root" class="mono"></span></div>
<div class="info-row"><span>Is root</span><span id="tree-is-root"></span></div>
<div class="info-row"><span>Our depth</span><span id="tree-depth"></span></div>
<div class="info-row"><span>Our parent</span><span id="tree-parent"></span></div>
<div class="info-row"><span>Our node addr</span><span id="tree-node-addr" class="mono"></span></div>
<div class="info-row" id="tree-error-row" style="display:none">
<span>Error</span><span id="tree-error" class="err-text"></span>
</div>
</div>
<h2>Tree Peers <span class="note">(1-hop neighbors)</span></h2>
<div id="tree-peers-container">
<p class="empty" id="tree-peers-empty">Loading tree…</p>
<table id="tree-peers-table" style="display:none">
<thead>
<tr>
<th>node addr</th><th>name</th><th>depth</th><th>distance</th><th>role</th>
</tr>
</thead>
<tbody id="tree-peers-body"></tbody>
</table>
</div>
</div>
<script src="sovereign://fips.js"></script>
</body>
</html>