feat: show node connection status and traffic stats in admin panel
Enable sing-box Clash/V2Ray APIs for per-user metrics, persist cumulative traffic in SQLite, and refresh the dashboard every five seconds. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -18,14 +18,60 @@
|
||||
<button id="addBtn" class="btn primary">+ 添加节点</button>
|
||||
</section>
|
||||
|
||||
<section id="summaryBar" class="summary-bar">
|
||||
<div class="summary-item">
|
||||
<span class="summary-label">在线节点</span>
|
||||
<strong id="summaryOnline">-</strong>
|
||||
</div>
|
||||
<div class="summary-item">
|
||||
<span class="summary-label">实时上行</span>
|
||||
<strong id="summaryUp">-</strong>
|
||||
</div>
|
||||
<div class="summary-item">
|
||||
<span class="summary-label">实时下行</span>
|
||||
<strong id="summaryDown">-</strong>
|
||||
</div>
|
||||
<div class="summary-item">
|
||||
<span class="summary-label">统计服务</span>
|
||||
<strong id="summaryStatus" class="status-text">检测中</strong>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div id="toast" class="toast hidden"></div>
|
||||
<div id="nodeList" class="node-list">
|
||||
{% for node in nodes %}
|
||||
<article class="node-card" data-id="{{ node.id }}">
|
||||
<div class="node-head">
|
||||
<h2>{{ node.name }}</h2>
|
||||
<div class="node-title">
|
||||
<h2>{{ node.name }}</h2>
|
||||
<span class="status-badge offline" data-role="status">检测中</span>
|
||||
</div>
|
||||
<span class="tag">{{ node.created_at[:10] }}</span>
|
||||
</div>
|
||||
<div class="node-stats">
|
||||
<div class="stat-grid">
|
||||
<div class="stat-box">
|
||||
<span class="stat-label">连接数</span>
|
||||
<span class="stat-value" data-role="connections">-</span>
|
||||
</div>
|
||||
<div class="stat-box">
|
||||
<span class="stat-label">实时 ↑</span>
|
||||
<span class="stat-value" data-role="speed-up">-</span>
|
||||
</div>
|
||||
<div class="stat-box">
|
||||
<span class="stat-label">实时 ↓</span>
|
||||
<span class="stat-value" data-role="speed-down">-</span>
|
||||
</div>
|
||||
<div class="stat-box">
|
||||
<span class="stat-label">累计 ↑</span>
|
||||
<span class="stat-value" data-role="total-up">-</span>
|
||||
</div>
|
||||
<div class="stat-box">
|
||||
<span class="stat-label">累计 ↓</span>
|
||||
<span class="stat-value" data-role="total-down">-</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>VLESS + Reality</label>
|
||||
<div class="copy-row">
|
||||
|
||||
Reference in New Issue
Block a user