Язык выбирается в шапке панели, а до первого выбора берётся из настроек
браузера. Переведены интерфейс, подписи и описания всех параметров конфигов,
ошибки API и служебные сообщения менеджера в консоли.
Подписи параметров вынесены из app.js в hints-<язык>.json: их больше четырёхсот
на язык, и грузить чужой язык незачем. Сообщения менеджера переводятся на
выходе из API по словарю, где ключом служит русская фраза из кода, — вывод
самого игрового сервера через него проходит без изменений.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
pzmanager-admin update больше не повторяет логику установки: он забирает
из релиза get.sh (сверив sha256) и отдаёт работу ему. Поэтому обновление
из панели теперь приводит в порядок и скрипты установки, и systemd-юнит —
раньше они застывали на версии первой установки, а вместе с ними
терялась, например, локальная копия установщика для удаления.
Работа уходит в разовый юнит через systemd-run. Иначе она не пережила бы
сама себя: панель вызывает скрипт через sudo, тот живёт в cgroup её юнита,
и остановка службы установщиком убила бы его на середине. Команда restart
по той же причине получила --no-block.
Установщик стал понятнее в двух местах, о которые легко споткнуться:
- повторная установка той же сборки больше не роняет игровой сервер —
если sha256 бинарника совпал, служба не останавливается вовсе;
- после обновления он явно пишет, что запускает службу, и проверяет, что
она поднялась. Раньше systemctl start отрабатывал молча, и по выводу
нельзя было понять, работает панель или нет. Службу, остановленную не
установщиком, он по-прежнему не поднимает самовольно.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Установщик стал идемпотентным: на уже настроенной машине он определяет
установленную версию, останавливает службу, меняет бинарник и поднимает её
обратно, не трогая конфиг, миры и учётные записи. Зависимости при
обновлении не переустанавливаются — это лишние минуты apt.
Кнопки «Обновить» и «Перезапустить панель» появились на вкладке
«Настройки» вместе с текущей версией и описанием нового релиза.
Панель работает от непривилегированного пользователя и не может ни
заменить свой бинарник в /usr/local/bin, ни дёрнуть systemctl. Вместо
того чтобы расширять её права, установщик кладёт root-скрипт
pzmanager-admin и разрешает сервисному пользователю через sudoers ровно
эту одну команду. Скрипт сверяет sha256 скачанного бинарника с
checksums.txt релиза. Если правила sudo нет, кнопки не будет — панель
покажет команду для терминала.
Перед обновлением и перезапуском игровой сервер останавливается штатным
quit: иначе его погасил бы systemd уже в момент рестарта, и ожидание
растянулось бы на таймаут остановки.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>