mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 14:36:05 +00:00
v2.5.0: add local web admin dashboard
This commit is contained in:
158
admin-web/static/index.html
Normal file
158
admin-web/static/index.html
Normal file
@@ -0,0 +1,158 @@
|
||||
<!doctype html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>GoTelegram Admin</title>
|
||||
<link rel="stylesheet" href="/styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="authLock" class="auth-lock hidden">
|
||||
<div class="auth-panel">
|
||||
<div class="mark">GT</div>
|
||||
<h1>GoTelegram Admin</h1>
|
||||
<p>Откройте ссылку из Telegram-бота после запуска SSH-туннеля.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="shell">
|
||||
<aside class="sidebar">
|
||||
<div class="brand">
|
||||
<div class="brand-mark">GT</div>
|
||||
<div>
|
||||
<strong>GoTelegram</strong>
|
||||
<span>Local Admin</span>
|
||||
</div>
|
||||
</div>
|
||||
<nav>
|
||||
<a href="#dashboard" class="active">Dashboard</a>
|
||||
<a href="#keys">Keys</a>
|
||||
<a href="#traffic">Traffic</a>
|
||||
<a href="#backups">Backups</a>
|
||||
<a href="#logs">Logs</a>
|
||||
</nav>
|
||||
</aside>
|
||||
|
||||
<main>
|
||||
<header class="topbar">
|
||||
<div>
|
||||
<p class="eyebrow">127.0.0.1:1984</p>
|
||||
<h1>GoTelegram Admin</h1>
|
||||
</div>
|
||||
<button id="refreshBtn" class="ghost">Refresh</button>
|
||||
</header>
|
||||
|
||||
<section id="dashboard" class="section">
|
||||
<div class="metric-grid">
|
||||
<article class="metric-card">
|
||||
<span>Mode</span>
|
||||
<strong id="metricMode">--</strong>
|
||||
<small id="metricDomain">--</small>
|
||||
</article>
|
||||
<article class="metric-card">
|
||||
<span>Keys</span>
|
||||
<strong id="metricUsers">0</strong>
|
||||
<small>configured users</small>
|
||||
</article>
|
||||
<article class="metric-card">
|
||||
<span>Proxy Traffic</span>
|
||||
<strong id="metricProxyTraffic">0 B</strong>
|
||||
<small id="metricProxyPackets">0 packets</small>
|
||||
</article>
|
||||
<article class="metric-card">
|
||||
<span>Site Traffic</span>
|
||||
<strong id="metricSiteTraffic">0 B</strong>
|
||||
<small id="metricSitePackets">0 packets</small>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="service-grid" id="services"></div>
|
||||
</section>
|
||||
|
||||
<section id="traffic" class="section split">
|
||||
<div>
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<p class="eyebrow">Traffic</p>
|
||||
<h2>History</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chart-wrap">
|
||||
<canvas id="trafficChart" height="260"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="activity">
|
||||
<p class="eyebrow">Runtime</p>
|
||||
<pre id="runtimeBox">{}</pre>
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
<section id="keys" class="section">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<p class="eyebrow">Access</p>
|
||||
<h2>User keys</h2>
|
||||
</div>
|
||||
<form id="addUserForm" class="inline-form">
|
||||
<input id="userName" autocomplete="off" placeholder="client-name">
|
||||
<button type="submit">Add key</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="table-wrap">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>User</th>
|
||||
<th>Secret</th>
|
||||
<th>Link</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="usersTable"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="backups" class="section split">
|
||||
<div>
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<p class="eyebrow">Snapshots</p>
|
||||
<h2>Backups</h2>
|
||||
</div>
|
||||
<button id="createBackupBtn">Create backup</button>
|
||||
</div>
|
||||
<div id="backupsList" class="backup-list"></div>
|
||||
</div>
|
||||
<aside class="activity">
|
||||
<p class="eyebrow">Events</p>
|
||||
<div id="events"></div>
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
<section id="logs" class="section">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<p class="eyebrow">Journal</p>
|
||||
<h2>Logs</h2>
|
||||
</div>
|
||||
<div class="inline-form">
|
||||
<select id="logService">
|
||||
<option value="telemt">telemt</option>
|
||||
<option value="nginx">nginx</option>
|
||||
<option value="gotelegram-bot">bot</option>
|
||||
<option value="gotelegram-stats">stats</option>
|
||||
<option value="gotelegram-admin">admin</option>
|
||||
</select>
|
||||
<button id="loadLogsBtn" type="button">Load</button>
|
||||
</div>
|
||||
</div>
|
||||
<pre id="logsBox" class="logs"></pre>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<div id="toast" class="toast"></div>
|
||||
<script src="/app.js" type="module"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user