14.04.2026 Update

This commit is contained in:
2026-04-15 11:38:26 +03:00
parent 6aa0349f5d
commit f50d79fab3
45 changed files with 5645 additions and 751 deletions

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AlpineRouter — Прокси</title>
<title>NanoRouter — Прокси</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
@@ -15,7 +15,7 @@
<path d="M2 17l10 5 10-5"/>
<path d="M2 12l10 5 10-5"/>
</svg>
<h1>AlpineRouter</h1>
<h1>NanoRouter</h1>
</div>
<div class="header-right">
<span id="statusBadge" class="svc-badge stopped">Остановлен</span>
@@ -23,7 +23,14 @@
</header>
<nav class="tab-nav">
<a href="/" class="tab-link">
<a href="/home.html" class="tab-link">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="15" height="15">
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
<polyline points="9 22 9 12 15 12 15 22"/>
</svg>
Главная
</a>
<a href="/ifaces.html" class="tab-link">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="15" height="15">
<path d="M12 2L2 7l10 5 10-5-10-5z"/>
<path d="M2 17l10 5 10-5"/>
@@ -58,6 +65,13 @@
</svg>
Прокси
</a>
<a href="/profile.html" class="tab-link">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="15" height="15">
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
<circle cx="12" cy="7" r="4"/>
</svg>
Профиль
</a>
</nav>
<main class="proxy-main">
@@ -112,23 +126,23 @@
<h3 class="dash-card-title">Трафик</h3>
<div class="dash-traffic-row">
<div class="dash-traffic-item">
<span class="dash-traffic-label"> Загрузка</span>
<span class="dash-traffic-val" id="dashUp">0 B/s</span>
<span class="dash-traffic-label"> Загрузка</span>
<span class="dash-traffic-val" id="dashDown">0 B/s</span>
</div>
<div class="dash-traffic-item">
<span class="dash-traffic-label"> Отдача</span>
<span class="dash-traffic-val" id="dashDown">0 B/s</span>
<span class="dash-traffic-label"> Отдача</span>
<span class="dash-traffic-val" id="dashUp">0 B/s</span>
</div>
</div>
<div class="dash-traffic-row">
<div class="dash-traffic-item">
<span class="dash-traffic-label">Всего</span>
<span class="dash-traffic-val dash-traffic-total" id="dashUpTotal">0 B</span>
</div>
<div class="dash-traffic-item">
<span class="dash-traffic-label">Всего</span>
<span class="dash-traffic-val dash-traffic-total" id="dashDownTotal">0 B</span>
</div>
<div class="dash-traffic-item">
<span class="dash-traffic-label">Всего</span>
<span class="dash-traffic-val dash-traffic-total" id="dashUpTotal">0 B</span>
</div>
</div>
<div class="dash-mem-row">
<span class="dash-traffic-label">Память</span>
@@ -214,13 +228,26 @@
<!-- Rules Tab -->
<div id="tab-rules" class="ptab-content hidden">
<div class="section-header" style="margin-bottom:16px">
<h2>Правила маршрутизации</h2>
<div class="section-desc">Определите, какой трафик куда направляется. Правила применяются сверху вниз.</div>
</div>
<div class="form-row" style="margin-bottom:12px">
<button class="btn btn-primary btn-sm" id="addRuleBtn">+ Добавить правило</button>
<button class="btn btn-ghost btn-sm" id="addBlockBtn" style="margin-left:8px">+ Блокировка домена</button>
<div class="rules-toolbar">
<div class="rules-toolbar-left">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="15" height="15" style="color:var(--accent);flex-shrink:0">
<path d="M4 6h16M4 12h16M4 18h7"/>
</svg>
<div>
<div class="rules-toolbar-title">Правила маршрутизации</div>
<div class="rules-toolbar-hint">Применяются сверху вниз</div>
</div>
</div>
<div class="rules-toolbar-right">
<button class="btn btn-ghost btn-sm" id="addBlockBtn">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="13" height="13"><circle cx="12" cy="12" r="10"/><path d="M4.93 4.93l14.14 14.14"/></svg>
Блокировка домена
</button>
<button class="btn btn-primary btn-sm" id="addRuleBtn">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="13" height="13"><path d="M12 5v14M5 12h14"/></svg>
Добавить правило
</button>
</div>
</div>
<div id="rulesList" class="rules-list"></div>
</div>
@@ -576,7 +603,7 @@ tls://1.1.1.1:853</textarea>
<h2 id="proxyModalTitle">Добавить прокси</h2>
<button class="btn-icon" id="closeProxyModal" title="Закрыть"></button>
</div>
<form id="proxyForm" autocomplete="off" style="max-height:65vh;overflow-y:auto;padding-right:4px">
<form id="proxyForm" autocomplete="off" style="max-height:52vh;overflow-y:auto;padding-right:4px">
<!-- Type -->
<div class="form-row">
@@ -1393,7 +1420,7 @@ tls://1.1.1.1:853</textarea>
<h2 id="groupModalTitle">Добавить группу</h2>
<button class="btn-icon" id="closeGroupModal" title="Закрыть"></button>
</div>
<form id="groupForm" autocomplete="off" style="max-height:65vh;overflow-y:auto;padding-right:4px">
<form id="groupForm" autocomplete="off" style="max-height:52vh;overflow-y:auto;padding-right:4px">
<div class="form-row">
<label for="groupName">Имя группы</label>
<input type="text" id="groupName" placeholder="proxy">
@@ -1576,7 +1603,7 @@ tls://1.1.1.1:853</textarea>
<h2 id="ppModalTitle">Добавить провайдер прокси</h2>
<button class="btn-icon" id="closePPModal"></button>
</div>
<form id="ppForm" autocomplete="off" style="max-height:65vh;overflow-y:auto;padding-right:4px">
<form id="ppForm" autocomplete="off" style="max-height:52vh;overflow-y:auto;padding-right:4px">
<div class="form-row">
<label>Имя</label>
<input type="text" id="ppName" placeholder="provider1">