UnicoreCMS

Серверы

Список серверов, мониторинг онлайна, моды и RCON

К серверу привязаны товары, донат-группы, права, наигранное время и экономика. Пока нет ни одного сервера, магазин настроить не получится.

Создание

Управление контентом → Серверы → Создать.

ПолеЗачем
IDКороткий латинский идентификатор: hitech, magic, vanilla
ПриоритетПорядок в списках на сайте, по возрастанию
НазваниеКак сервер называется для игрока
ВерсияПоказывается в карточке, например 1.20.1
СлоганСтрочка под названием
ОписаниеКороткий текст в списке серверов
КонтентПолная страница сервера с версткой
Иконка и обложкаКартинки в списке и на странице
Способ выдачиПлагин или RCON, см. Выдачу покупок

ID менять больно

Он попадает в URL страницы сервера, в API-запросы плагина, в записи экономики и наигранного времени. Смените его — и все ссылки протухнут, а плагин перестанет находить свой сервер. Выбирайте сразу.

Группы серверов

Серверы можно объединять в группы. Группа влияет только на вид списка на сайте: когда серверов больше пяти, их удобно разложить по темам «Технические», «Ванильные», «Ивентовые».

Мониторинг онлайна

В карточке сервера есть поля «Query хост» и «Query порт». Как только адрес заполнен, сайт опрашивает сервер каждые пять секунд и показывает онлайн на главной, в списке серверов и в карточке.

Онлайн приходит по вебсокету, страницу перезагружать не надо. Заодно копится история: график онлайна за период и абсолютный рекорд.

Порт нужен игровой

Несмотря на название полей, никакой GameSpy Query здесь не используется. Сайт стучится обычным Server List Ping — тем же запросом, которым клиент игры получает онлайн в списке серверов. Значит, включать enable-query в server.properties не нужно, а порт вписывайте игровой. Пустой порт означает 25565. На ответ отводится три секунды.

Несколько инстансов

У одного сервера в CMS может быть несколько игровых процессов, например лобби и три мира за прокси. Они заводятся в блоке «Серверы на одной сборке»: у каждого своё имя, адрес и порт. На сайте это по-прежнему один сервер с суммарным онлайном, а в админке видна разбивка по процессам.

Инстансы отменяют Query

Стоит появиться хотя бы одному инстансу, и поля «Query хост» и «Query порт» перестают опрашиваться совсем. Онлайн считается только по инстансам: игроки и слоты суммируются, а сервер считается поднятым, если ответил хоть один процесс.

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

Таблица характеристик

Блок «Таблица» выводит на странице сервера произвольные пары из заголовка и значения: версия ядра, количество модов, тип экономики, режим PvP. Строки сортируются по приоритету и переводятся вместе с остальным контентом.

Моды

Общий справочник модов с иконками и описаниями лежит в разделе Управление контентом → Моды. В карточке сервера вы отмечаете установленные, и на странице сервера они выводятся сеткой.

Поэтому один и тот же мод, привязанный к трём серверам, заводится один раз.

RCON

В разделе RCON карточки сервера вы задаёте адрес, порт и пароль от консоли. Пароль хранится в базе зашифрованным на ENCRYPTION_KEY и наружу не отдаётся никогда, даже суперпользователю.

Рядом две кнопки. Проверить соединение открывает сессию и сообщает, подходит ли пароль; на попытку отводится пять секунд. Очередь команд показывает, что сайт отправил на сервер, что ждёт отправки и что упало. Про очередь подробно на странице Выдача покупок.

Обе кнопки работают только у сохранённого сервера. У нового сначала жмите «Сохранить», иначе получите подсказку «Сначала сохраните сервер».

Произвольную команду шлют через API

Кнопки «выполнить что-нибудь в консоли» в админке нет. Если нужно прогнать разовую команду, дёрните POST /rcon/:server/run с телом {"command": "..."} — ручка отдаёт ответ консоли. Права те же, что у карточки сервера.

RCON даёт полный доступ к консоли

Прав admin.servers.update и admin.dashboard хватит, чтобы выполнить на сервере что угодно, включая stop и op. Не выдавайте их широко.

Чтобы RCON вообще работал, в server.properties игрового сервера нужно:

enable-rcon=true
rcon.port=25575
rcon.password=длинный-пароль

И порт не должен смотреть в интернет: RCON-протокол шлёт пароль почти открытым текстом. Если сайт и игровой сервер на разных машинах, гоняйте через приватную сеть или туннель.

Содержание