Files

148 lines
7.0 KiB
HTML
Raw Permalink Normal View History

2026-09-20 19:47:02 +03:00
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Админ-панель | MikroTik Proxy</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
<link rel="stylesheet" href="{{ url_for('static', filename='css/admin.css') }}">
</head>
<body>
<header class="admin-header">
<div class="header-left">
<h2><i class="fas fa-shield-alt"></i> MikroTik Proxy Admin</h2>
</div>
<div class="header-right" style="display: flex; gap: 10px;">
<a href="/" class="btn btn-primary"><i class="fas fa-home"></i> К дашборду</a>
<button onclick="logout()" class="btn btn-danger"><i class="fas fa-sign-out-alt"></i> Выход</button>
</div>
</header>
<main class="admin-container">
<!-- Статистика -->
<div class="stats-grid">
<div class="stat-card">
<h3>Всего IP</h3>
<div id="statTotal" class="value">0</div>
</div>
<div class="stat-card">
<h3>Активных</h3>
<div id="statActive" class="value" style="color: var(--success-color)">0</div>
</div>
<div class="stat-card">
<h3>Отключенных</h3>
<div id="statInactive" class="value" style="color: var(--danger-color)">0</div>
</div>
</div>
<!-- Форма добавления -->
<div class="management-card">
<h3 class="card-title"><i class="fas fa-plus-circle"></i> Добавить новый адрес</h3>
<form id="addAddressForm" class="inline-form">
<div class="form-group">
<label>IP Адрес</label>
<input type="text" id="inputAddress" placeholder="например, 192.168.1.50" required>
</div>
<div class="form-group">
<label>Название списка</label>
<select id="inputList" required>
<!-- Опции загружаются через JS -->
</select>
</div>
<div class="form-group">
<label>Комментарий</label>
<input type="text" id="inputComment" placeholder="например, Мой ПК">
</div>
<button type="submit" class="btn btn-success"><i class="fas fa-plus"></i> Добавить</button>
</form>
</div>
<!-- Управление списками -->
<div class="management-card">
<h3 class="card-title"><i class="fas fa-tags"></i> Управление списками доступа</h3>
<p style="margin-bottom: 20px; color: #666; font-size: 0.9rem;">
Создавайте именованные списки доступа здесь. Вы сможете выбирать их при добавлении новых IP.
</p>
<form id="addListForm" class="inline-form" style="margin-bottom: 25px;">
<div class="form-group">
<label>Новое имя списка</label>
<input type="text" id="newListName" placeholder="например, guest_access" required>
</div>
<button type="submit" class="btn btn-success"><i class="fas fa-plus"></i> Создать список</button>
</form>
<div class="table-container">
<table>
<thead>
<tr>
<th>ID</th>
<th>Название</th>
<th style="width: 100px;">Действие</th>
</tr>
</thead>
<tbody id="listsTableBody">
<!-- Данные загружаются через JS -->
</tbody>
</table>
</div>
</div>
<!-- Список адресов -->
<div class="management-card">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem;">
<h3 class="card-title" style="margin: 0;"><i class="fas fa-list"></i> Управление списком доступа</h3>
<div class="form-group" style="width: 250px;">
<input type="text" id="tableFilter" placeholder="Поиск по IP или списку...">
</div>
</div>
<div class="table-container">
<table id="addressesTable">
<thead>
<tr>
<th>ID</th>
<th>IP Адрес</th>
<th>Список</th>
<th>Комментарий</th>
<th>Статус</th>
<th style="width: 150px;">Действия</th>
</tr>
</thead>
<tbody id="addressesTableBody">
<!-- Данные загружаются через JS -->
</tbody>
</table>
</div>
</div>
<!-- Настройки профиля -->
<div class="management-card">
<h3 class="card-title"><i class="fas fa-user-cog"></i> Настройки администратора</h3>
<p style="margin-bottom: 20px; color: #666; font-size: 0.9rem;">
Здесь вы можете изменить имя пользователя и пароль для входа в панель управления.
</p>
<form id="profileForm" class="inline-form">
<div class="form-group">
<label>Имя пользователя</label>
<input type="text" id="profileUsername" placeholder="admin" required>
</div>
<div class="form-group">
<label>Новый пароль (оставьте пустым для сохранения текущего)</label>
<input type="password" id="profilePassword" placeholder="••••••••">
</div>
<button type="submit" class="btn btn-primary"><i class="fas fa-save"></i> Обновить профиль</button>
</form>
</div>
</main>
<div id="toast" class="notification"></div>
<script src="{{ url_for('static', filename='js/admin.js') }}"></script>
</body>
</html>