mirror of
https://github.com/andrey271192/vps_monitoring.git
synced 2026-09-20 11:55:34 +00:00
- Switch xterm.js from cdnjs (404) to jsdelivr (working) - Add xterm-addon-fit for auto-resize terminal - Change default port from 8000 to 7272 everywhere - Install script: --port flag for custom port selection - sed-based port injection into systemd service at install time Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
173 lines
7.9 KiB
HTML
173 lines
7.9 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru" data-theme="dark">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>VPS Monitoring</title>
|
||
<link rel="stylesheet" href="/static/css/style.css">
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/xterm@5.3.0/css/xterm.min.css">
|
||
<script src="/static/js/theme.js"></script>
|
||
<script src="/static/js/i18n.js"></script>
|
||
</head>
|
||
<body>
|
||
<header>
|
||
<div class="header-left">
|
||
<h1 id="pageTitle">🖥 VPS Monitoring</h1>
|
||
</div>
|
||
<div class="header-right">
|
||
<button class="lang-btn" id="langBtn" onclick="toggleLang()">RU</button>
|
||
<button class="btn-icon" id="themeToggleBtn" onclick="toggleTheme()" title="Theme">🌙</button>
|
||
<button class="btn-icon" onclick="refreshAll()" title="Refresh">🔄</button>
|
||
<button class="btn-icon" onclick="showInstructions()" title="Instructions">📖</button>
|
||
<button class="btn-icon" onclick="showSettings()" title="Settings">⚙️</button>
|
||
<button class="btn-icon" onclick="logout()" title="Logout">🚪</button>
|
||
</div>
|
||
</header>
|
||
|
||
<main>
|
||
<div class="stats-bar">
|
||
<div class="stat-item" id="stat-total">
|
||
<span class="stat-label" data-i18n="total">Всего</span>
|
||
<span class="stat-value" id="total-count">0</span>
|
||
</div>
|
||
<div class="stat-item online" id="stat-online">
|
||
<span class="stat-label" data-i18n="online">Online</span>
|
||
<span class="stat-value" id="online-count">0</span>
|
||
</div>
|
||
<div class="stat-item offline" id="stat-offline">
|
||
<span class="stat-label" data-i18n="offline">Offline</span>
|
||
<span class="stat-value" id="offline-count">0</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="toolbar">
|
||
<button class="btn-primary" id="addServerBtn" onclick="showAddServer()">+ Добавить сервер</button>
|
||
</div>
|
||
|
||
<div class="servers-grid" id="servers-grid"></div>
|
||
</main>
|
||
|
||
<!-- Add Server Modal -->
|
||
<div class="modal" id="addServerModal" style="display:none">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h2 data-i18n="addServer">Добавить сервер</h2>
|
||
<button class="btn-close" onclick="closeModal('addServerModal')">×</button>
|
||
</div>
|
||
<form id="addServerForm">
|
||
<div class="form-group">
|
||
<label data-i18n="serverName">Название</label>
|
||
<input type="text" name="name" required placeholder="My Server">
|
||
</div>
|
||
<div class="form-group">
|
||
<label data-i18n="host">IP / Host</label>
|
||
<input type="text" name="host" required placeholder="192.168.1.1">
|
||
</div>
|
||
<div class="form-group">
|
||
<label data-i18n="sshPort">Порт SSH</label>
|
||
<input type="number" name="port" value="22">
|
||
</div>
|
||
<div class="form-group">
|
||
<label data-i18n="sshLogin">Логин</label>
|
||
<input type="text" name="username" value="root">
|
||
</div>
|
||
<div class="form-group">
|
||
<label data-i18n="sshPassword">Пароль</label>
|
||
<input type="password" name="password" placeholder="SSH Password">
|
||
</div>
|
||
<div class="form-group">
|
||
<label data-i18n="description">Описание</label>
|
||
<input type="text" name="description" placeholder="">
|
||
</div>
|
||
<button type="submit" class="btn-primary" data-i18n="add">Добавить</button>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Settings Modal -->
|
||
<div class="modal" id="settingsModal" style="display:none">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h2 data-i18n="settings">Настройки</h2>
|
||
<button class="btn-close" onclick="closeModal('settingsModal')">×</button>
|
||
</div>
|
||
<form id="settingsForm">
|
||
<h3 data-i18n="auth">Авторизация</h3>
|
||
<div class="form-group">
|
||
<label data-i18n="username">Логин</label>
|
||
<input type="text" name="admin_login" id="set_login">
|
||
</div>
|
||
<div class="form-group">
|
||
<label data-i18n="newPassword">Новый пароль</label>
|
||
<input type="password" name="admin_password" id="set_password" placeholder="">
|
||
</div>
|
||
<h3 data-i18n="telegram">Telegram</h3>
|
||
<div class="form-group">
|
||
<label data-i18n="botToken">Bot Token</label>
|
||
<input type="text" name="telegram_bot_token" id="set_tg_token">
|
||
</div>
|
||
<div class="form-group">
|
||
<label data-i18n="chatId">Chat ID</label>
|
||
<input type="text" name="telegram_chat_id" id="set_tg_chat">
|
||
</div>
|
||
<h3 data-i18n="monitoring">Мониторинг</h3>
|
||
<div class="form-group">
|
||
<label data-i18n="pollInterval">Интервал опроса (сек)</label>
|
||
<input type="number" name="monitor_interval" id="set_interval" value="60">
|
||
</div>
|
||
<div class="form-group">
|
||
<label data-i18n="cpuThreshold">Порог CPU (%)</label>
|
||
<input type="number" name="alert_cpu_threshold" id="set_cpu" value="90">
|
||
</div>
|
||
<div class="form-group">
|
||
<label data-i18n="ramThreshold">Порог RAM (%)</label>
|
||
<input type="number" name="alert_ram_threshold" id="set_ram" value="90">
|
||
</div>
|
||
<div class="form-group">
|
||
<label data-i18n="diskThreshold">Порог Disk (%)</label>
|
||
<input type="number" name="alert_disk_threshold" id="set_disk" value="90">
|
||
</div>
|
||
<button type="submit" class="btn-primary" data-i18n="save">Сохранить</button>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Instructions Modal -->
|
||
<div class="modal" id="instructionsModal" style="display:none">
|
||
<div class="modal-content modal-wide">
|
||
<div class="modal-header">
|
||
<h2 data-i18n="instructions_title">Инструкции и шпаргалки</h2>
|
||
<button class="btn-close" onclick="closeModal('instructionsModal')">×</button>
|
||
</div>
|
||
<div id="instructions-content"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- SSH Terminal Modal -->
|
||
<div class="modal" id="sshModal" style="display:none">
|
||
<div class="modal-content modal-large">
|
||
<div class="modal-header">
|
||
<h2 id="ssh-title">SSH Terminal</h2>
|
||
<button class="btn-close" onclick="closeSSH()">×</button>
|
||
</div>
|
||
<div id="terminal-container"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Server Detail Modal -->
|
||
<div class="modal" id="serverDetailModal" style="display:none">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h2 id="detail-title">Server</h2>
|
||
<button class="btn-close" onclick="closeModal('serverDetailModal')">×</button>
|
||
</div>
|
||
<div id="detail-content"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/xterm@5.3.0/lib/xterm.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/xterm-addon-fit@0.8.0/lib/xterm-addon-fit.min.js"></script>
|
||
<script src="/static/js/app.js"></script>
|
||
</body>
|
||
</html>
|