Добавить установщик XLX системы и веб-панель
Этот коммит содержится в:
@@ -0,0 +1,87 @@
|
||||
<!doctype html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>XLX Admin</title>
|
||||
<link rel="stylesheet" href="/assets/styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<main class="shell admin-shell">
|
||||
<section class="hero compact">
|
||||
<div>
|
||||
<p class="eyebrow">Админка</p>
|
||||
<h1>Настройка XLX без ручного редактирования конфигов</h1>
|
||||
<p class="lead">Меняй имя reflector, домен, порты, модули и пути. Настройки сохраняются в БД и могут сразу применяться в `/etc/xlx/xlxd.env`.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="panel">
|
||||
<label>Admin token
|
||||
<input id="adminToken" type="password" placeholder="X-Admin-Token">
|
||||
</label>
|
||||
<div class="actions">
|
||||
<button class="button" id="loadSettings">Загрузить настройки</button>
|
||||
<button class="button ghost" id="saveSettings">Сохранить</button>
|
||||
<button class="button ghost" id="applySettings">Сохранить и применить</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="panel split">
|
||||
<form class="form settings-form" id="settingsForm">
|
||||
<label>Reflector
|
||||
<input name="reflector_name" placeholder="XLX138">
|
||||
</label>
|
||||
<label>Домен
|
||||
<input name="server_host" placeholder="xlx.example.com">
|
||||
</label>
|
||||
<label>Позывной sysop
|
||||
<input name="sysop_callsign" placeholder="R0XXX">
|
||||
</label>
|
||||
<label>Email sysop
|
||||
<input name="sysop_email" placeholder="admin@example.com">
|
||||
</label>
|
||||
<label>Страна
|
||||
<input name="country" placeholder="RU">
|
||||
</label>
|
||||
<label>DMR порт
|
||||
<input name="dmr_port" type="number" min="1" max="65535">
|
||||
</label>
|
||||
<label>YSF порт
|
||||
<input name="ysf_port" type="number" min="1" max="65535">
|
||||
</label>
|
||||
<label>Dashboard порт
|
||||
<input name="dashboard_port" type="number" min="1" max="65535">
|
||||
</label>
|
||||
<label>Модуль по умолчанию
|
||||
<input name="default_module" maxlength="1">
|
||||
</label>
|
||||
<label>Активные модули
|
||||
<input name="modules" placeholder="ABCDEFGHIJKLMNOPQRSTUVWXYZ">
|
||||
</label>
|
||||
<label>Путь установки
|
||||
<input name="install_path" placeholder="/xlxd">
|
||||
</label>
|
||||
<label>Путь исходников
|
||||
<input name="source_path" placeholder="/usr/src/xlxd">
|
||||
</label>
|
||||
<label>Лог
|
||||
<input name="log_path" placeholder="/var/log/xlxd.log">
|
||||
</label>
|
||||
<label>Systemd service
|
||||
<input name="service_name" placeholder="xlxd">
|
||||
</label>
|
||||
<label>Репозиторий xlxd
|
||||
<input name="repo_url" placeholder="https://github.com/LX3JL/xlxd.git">
|
||||
</label>
|
||||
</form>
|
||||
<div>
|
||||
<p class="eyebrow">Предпросмотр env</p>
|
||||
<pre class="result env-preview" id="envPreview"></pre>
|
||||
<pre class="result" id="adminResult"></pre>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
<script src="/assets/admin.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,78 @@
|
||||
<!doctype html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>XLX Server</title>
|
||||
<link rel="stylesheet" href="/assets/styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<main class="shell">
|
||||
<section class="hero">
|
||||
<div>
|
||||
<p class="eyebrow">XLX / DMR / Pi-Star</p>
|
||||
<h1>Личный доступ к DMR-серверу без ручной настройки</h1>
|
||||
<p class="lead">Регистрация по позывному без дублей, оплата через YooKassa или чек перевода, автоматический DMR ID и пароль для Pi-Star.</p>
|
||||
<div class="actions">
|
||||
<a class="button" href="#register">Подключиться</a>
|
||||
<a class="button ghost" href="/admin">Админка</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="status-panel">
|
||||
<div>
|
||||
<span>DMR порт</span>
|
||||
<strong>62030</strong>
|
||||
</div>
|
||||
<div>
|
||||
<span>Модуль</span>
|
||||
<strong>A</strong>
|
||||
</div>
|
||||
<div>
|
||||
<span>Оплата</span>
|
||||
<strong>YooKassa</strong>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<article class="tile">
|
||||
<span class="num">01</span>
|
||||
<h2>Проверка позывного</h2>
|
||||
<p>Система проверяет формат и занятость позывного во внутренней базе.</p>
|
||||
</article>
|
||||
<article class="tile">
|
||||
<span class="num">02</span>
|
||||
<h2>Оплата доступа</h2>
|
||||
<p>Платеж через YooKassa или перевод с отправкой чека на подтверждение.</p>
|
||||
</article>
|
||||
<article class="tile">
|
||||
<span class="num">03</span>
|
||||
<h2>Данные Pi-Star</h2>
|
||||
<p>После оплаты выдаются сервер, порт, логин, пароль, DMR ID и модуль.</p>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="panel" id="register">
|
||||
<div>
|
||||
<p class="eyebrow">Регистрация</p>
|
||||
<h2>Создать заявку</h2>
|
||||
<p>После отправки появится ссылка YooKassa и инструкция для оплаты переводом.</p>
|
||||
</div>
|
||||
<form class="form" id="registerForm">
|
||||
<label>Позывной
|
||||
<input name="callsign" placeholder="R0XXX" required>
|
||||
</label>
|
||||
<label>Email
|
||||
<input name="email" type="email" placeholder="user@example.com" required>
|
||||
</label>
|
||||
<label>Пароль кабинета
|
||||
<input name="password" type="password" minlength="10" required>
|
||||
</label>
|
||||
<button class="button" type="submit">Отправить</button>
|
||||
<pre class="result" id="registerResult"></pre>
|
||||
</form>
|
||||
</section>
|
||||
</main>
|
||||
<script src="/assets/app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Ссылка в новой задаче
Block a user