Обновление панели из интерфейса и режим обновления в установщике
Установщик стал идемпотентным: на уже настроенной машине он определяет установленную версию, останавливает службу, меняет бинарник и поднимает её обратно, не трогая конфиг, миры и учётные записи. Зависимости при обновлении не переустанавливаются — это лишние минуты apt. Кнопки «Обновить» и «Перезапустить панель» появились на вкладке «Настройки» вместе с текущей версией и описанием нового релиза. Панель работает от непривилегированного пользователя и не может ни заменить свой бинарник в /usr/local/bin, ни дёрнуть systemctl. Вместо того чтобы расширять её права, установщик кладёт root-скрипт pzmanager-admin и разрешает сервисному пользователю через sudoers ровно эту одну команду. Скрипт сверяет sha256 скачанного бинарника с checksums.txt релиза. Если правила sudo нет, кнопки не будет — панель покажет команду для терминала. Перед обновлением и перезапуском игровой сервер останавливается штатным quit: иначе его погасил бы systemd уже в момент рестарта, и ожидание растянулось бы на таймаут остановки. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -268,6 +268,26 @@
|
||||
|
||||
<!-- Настройки -->
|
||||
<section class="panel" data-panel="settings">
|
||||
<h2>Версия панели</h2>
|
||||
<div class="card update-card">
|
||||
<div class="update-row">
|
||||
<div>
|
||||
<div class="stat" id="update-current">—</div>
|
||||
<p class="muted small" id="update-state">Проверяю обновления…</p>
|
||||
</div>
|
||||
<div class="update-actions">
|
||||
<button class="btn btn-sm" id="btn-update-check">Проверить</button>
|
||||
<button class="btn btn-sm btn-primary" id="btn-update-apply" hidden>Обновить</button>
|
||||
<button class="btn btn-sm" id="btn-manager-restart">Перезапустить панель</button>
|
||||
</div>
|
||||
</div>
|
||||
<p class="muted small" id="update-manual" hidden></p>
|
||||
<details id="update-notes" hidden>
|
||||
<summary>Что нового</summary>
|
||||
<pre class="release-notes" id="update-notes-body"></pre>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<h2>Настройки менеджера</h2>
|
||||
<form id="settings-form" class="fields"></form>
|
||||
<button class="btn btn-primary" id="btn-settings-save">Сохранить настройки</button>
|
||||
|
||||
Reference in New Issue
Block a user