Вышла новая версия платформы управления игровыми серверами. Большинство изменений технические и касаются системы плагинов: затронуто более 1 тыс. файлов и добавлено свыше 100 тыс. строк кода.

Обновлена плагин-система #

Больше всего изменений произошло в системе плагинов: добавлены новые возможности и расширены существующие.

Новые возможности для плагинов #

Плагины выполняются в изолированной среде и взаимодействуют с панелью только через функции, которые предоставляются панелью (хостом) через внутренний API. Набор этих функций расширился:

  • Хранилище учётных данных (секретов). Значения шифруются ключом панели (AES-256-GCM) и привязаны к владельцу — один плагин не может прочитать секреты другого.
  • Подключение по SSH. Предназначено для настройки новых виртуальных серверов, на которых ещё не установлен GameAP Daemon. Позволяет автоматически добавлять и настраивать выделенные серверы в инфраструктуре. По умолчанию SSH-модуль выключен и включается администратором, изменением переменной окружения PLUGINS_SSH_ENABLED.
  • Расширена работа с файлами выделенных серверов: большие файлы читаются по частям, а передача файла в браузер идёт напрямую, без загрузки в память плагина.
Окно с редактированием выданных прав для плагина
Права плагина

Установка и обновление плагинов #

  • Плагин можно обновить из локального файла. Перед установкой панель показывает описание плагина и запрашиваемые права, ничего не устанавливая.
  • При обновлении сохраняются данные, настройки и выданные ранее права. Права никогда не расширяются автоматически.
  • Остановившиеся плагины автоматически восстанавливаются.
  • Если панель работает в нескольких экземплярах, состояние плагинов согласуется между ними автоматически.

Совместимость #

Обратная совместимость проверяется автоматически: плагины, собранные для предыдущих версий панели, продолжают работать в новой.

Переменные окружения PLUGIN_* переименованы в PLUGINS_*. Старые имена пока действуют, но при их использовании в журнал записывается предупреждение.

Больше мест для плагинов в интерфейсе #

Количество мест интерфейса, куда плагин может добавить свой компонент, выросло с 6 до 20: шапка, боковое меню, страница сервера, список серверов, профиль пользователя и административные формы.

Обновление файлового менеджера #

В файловом менеджере произошло много больших изменений, добавлены новые функции.

История файлов и каталогов #

Панель запоминает посещённые каталоги и открытые файлы. История хранится только в вашем браузере и никуда не передаётся. История хранит два вида списков:

  • Список по частоте. Сюда попадают наиболее часто редактируемые файлы.
  • Список по последним доступам к файлам или каталогам. Сюда попадают последние ресурсы, которые вы запрашивали.
История посещённых каталогов и файлов в файловом менеджере
История файлов и каталогов

Добавлен поиск в текущем каталоге #

Вы можете быстро найти файл или директорию в текущем открытом каталоге. Чтобы воспользоваться поиском, есть несколько вариантов:

  • Нажать кнопку лупы на панели файлового менеджера
  • Нажать CTRL+F в вашем браузере
  • Просто начать вводить имя файла

Поиск работает в том числе тогда, когда раскладка клавиатуры не совпадает с раскладкой имени файла, который вы ищете. К примеру, если вы ввели “ыукмукюсап”, то поиск найдёт вам файл “server.cfg”.

Поиск файла в текущем каталоге файлового менеджера
Поиск в текущем каталоге

Упаковка и распаковка архивов #

Появилась возможность архивировать произвольные файлы, группы файлов и каталоги. Архивы помещаются в каталог сервера. После архивации файлы можно скачать. Упаковка и распаковка выполняются на выделенном сервере, ход операции отображается в панели.

Окно создания архива в файловом менеджере
Создание архива

Архивация возможна в следующие форматы:

  • zip
  • tar
  • gzip
  • bz2
  • xz
  • zst

Также вы можете загрузить архив в каталог вашего игрового сервера и распаковать его.

Разархивация возможна для всех форматов, указанных выше, а также для проприетарных:

  • 7zip
  • rar

Контрольные суммы файлов #

Можно посмотреть контрольные суммы для выбранных вами файлов. Поддерживаются следующие алгоритмы:

  • SHA256. Один из самых популярных алгоритмов.
  • MD5
  • SHA1
  • SHA512
  • CRC32
  • CRC64
Окно с контрольными суммами выбранного файла
Контрольные суммы файла

Настройки игровых серверов #

Теперь в параметрах игровых модов можно устанавливать типы переменных, параметры валидации, список доступных значений и другие дополнительные параметры. Благодаря этому редактирование настроек игрового сервера упростилось. В настройках игровых серверов можно выбрать предопределённое значение.

Поддерживаемые типы переменных: строка, число, флаг, список значений, пароль. Для переменной можно задать правила проверки, переводы названия и описания, а также признак «только для администратора». При сохранении формы все ошибки полей возвращаются одним ответом.

Настройки игрового сервера с выбором значения из списка
Настройки игрового сервера: выбор значения из списка

Добавлен импорт описаний игр из формата Pelican.

У выделенных серверов появился произвольный набор метаданных в виде пар «ключ — значение».

Отображение версии GameAP и GameAP Daemon на выделенных серверах #

На главной странице панели управления теперь отображается текущая версия GameAP, а также актуальность версий GameAP Daemon на выделенных серверах. Это позволит следить за актуальностью версий платформы управления и своевременно устанавливать обновления.

Главная страница панели с версиями GameAP и GameAP Daemon
Версии GameAP и GameAP Daemon на главной странице

Сведения о версиях запрашиваются не чаще одного раза в 6 часов; наружу не передаётся ничего, кроме самого запроса. Проверку можно отключить переменной окружения UPDATE_CHECK_ENABLED=false. В командной строке появилась команда gameap version.

SSO #

SSO (единый вход) позволяет пользователю попадать в панель из внешней системы — например, из биллинга или с сайта хостинга — без ввода пароля. Внешняя система выпускает одноразовый билет входа, а браузер пользователя обменивает его на обычный сеанс. Билет действует 60 секунд и может быть использован только один раз. Для администраторов сохраняется обязательная двухфакторная проверка.

Безопасность токенов доступа #

Ужесточены правила для токенов доступа, которые используются во внешних интеграциях:

  • Административные адреса API, для которых не объявлены права токенов, теперь полностью закрыты для запросов с токеном. Раньше на таких адресах проверялась только роль владельца токена.
  • Токенам запрещено назначать административные роли, менять пароли и настройки двухфакторной защиты — независимо от выданных прав.

Логины и адреса электронной почты приведены к единому написанию в нижнем регистре.

Управление доступом пользователей к серверам #

Добавлены два новых API эндпоинта для точечной выдачи и отзыва доступа к серверу:

  • PUT /api/users/{id}/servers/{server} — привязать сервер к указанному пользователю;
  • DELETE /api/users/{id}/servers/{server} — отвязать сервер от пользователя.

Повторная привязка не считается ошибкой. При отвязке выданные на сервер права сохраняются и снова действуют после повторной привязки. Это упрощает интеграцию с внешними системами.

Эти же эндпоинты использует интерфейс панели: привязка применяется сразу, без кнопки “Сохранить”. Она открывает пользователю доступ к конкретному серверу и позволяет гранулярно выдать привилегии — всё остальное на сервере остаётся ему недоступно.

Чтобы привязать сервер, перейдите в “Администрирование” → “Пользователи”, выберите пользователя и нажмите “Редактировать”. В блоке “Серверы” нажмите “Добавить” и выберите нужный сервер; клик по замочку открывает выбор привилегий.

Привязка игрового сервера к пользователю
Привязка игрового сервера к пользователю

Новые языки #

Добавлена поддержка испанского и немецкого языков. Чтобы сменить язык, нужно перейти в Профиль, затем вверху кликнуть по кнопке “Редактировать профиль”. В открывшемся модальном окне необходимо поменять значение поля “Язык”.

Смена языка в разделе Профиля пользователя
Смена языка в разделе Профиля пользователя

Прочие небольшие изменения #

  • Боковое меню и мобильная версия теперь используют единый список пунктов административного меню.
  • Задачи GameAP Daemon перенесены из общего меню на страницу выделенных серверов.
  • Приведены к единому виду кнопки и значки статусов.
  • Тесты переведены на параллельный запуск, обновлены внутренние зависимости.