Что это?
Централизованная блокировка — это (новая!) функция выделенного сервера Rust, которая позволяет владельцам серверов создавать синхронизированный внешний список блокировок, которым можно делиться на нескольких серверах.
Как мне это использовать?
Вам понадобится веб-сервер (HTTP или HTTPS), на котором будет размещён централизованный API для блокировки. Мы не предоставляем реализацию этого API, но его относительно просто реализовать. Некоторые сторонние реализации перечислены в разделе «Часто задаваемые вопросы» ниже.
Чтобы включить его на своём сервере, просто установите переменную server.bansServerEndpoint
на конечную точку API вашего веб-сервера. Например:
После настройки выделенный сервер Rust будет запрашивать эту конечную точку API, чтобы проверить, не забанены ли игроки на момент их подключения к серверу.
Подробности об API
Если для server.bansServerEndpoint
задано что-то вроде «https://domain.tld/api/rustBans/», ваш веб-сервер будет получать подобные запросы от выделенного сервера Rust.
GET /api/rustBans/{steamID64}
Возвращает статус блокировки для 64-битного SteamID в формате JSON.
Примечание: URI для этого запроса генерируется путем добавления 64-битного идентификатора Steam к значению server.bansServerEndpoint
. Это означает, что вы можете установить server.bansServerEndpoint
на "https://domain.tld/api/rustBans?steamId=", и идентификатор Steam будет передан в параметрах URL, как и ожидалось. Если ваша строка не заканчивается на /
или /
.=
Пример ответа:
Поле | Описание |
---|---|
SteamID | 64-битный идентификатор Steam, для которого применяется блокировка. Это используется для проверки работоспособности API, чтобы убедиться, что он возвращает правильные блокировки. |
reason | Причина блокировки. Она будет показана игроку при подключении к серверу. |
expiryDate | Отметка времени в формате Unix, которая определяет срок действия бана. Она будет использоваться для отображения оставшегося срока действия бана для игрока при подключении к серверу. Значения меньше или равные нулю указывают на то, что бан является постоянным. |
Выделенный сервер Rust также проверит код ответа веб-сервера:
Код состояния | Значение |
---|---|
2xx | Коды успешного выполнения (2xx) требуют, чтобы в теле ответа использовался описанный выше формат JSON. |
404 | Не найдено означает, что запрошенный 64-битный SteamID не заблокирован. |
Other | Перенаправления должны обрабатываться Unity, но коды ошибок приведут к сбою (см. server.bansServerFailureMode convar в разделе часто задаваемых вопросов) |
Вопросы и ответы
Будут ли игроки удаляться с серверов, когда на конечную точку будет добавлен бан?
Нет, централизованный бан только не позволит игрокам заходить на сервер. Если вы хотите, чтобы их немедленно удалили с сервера, вам нужно будет использовать команду kick
на том сервере, на котором они находятся.
Что происходит, когда конечная точка API не работает или не работает должным образом?
При возникновении ошибки в централизованной системе блокировки на консоли выделенного сервера Rust будет отображаться сообщение. Отдельный параметр (server.bansServerFailureMode
) определяет, что происходит с игроками, которые не прошли проверку:
bansServerFailureMode Value | Значение |
---|---|
0 | Игроки допускаются на сервер при возникновении ошибки (сообщение регистрируется в консоли сервера) |
1 | Игрокам отказывают в подключении к серверу при возникновении ошибки (сообщение регистрируется в консоли сервера и отображается игроку) |
Время ожидания запросов к моей конечной точке API истекает. Что я могу сделать?
Тайм-аут по умолчанию для всех централизованных запросов на блокировку составляет пять секунд. Этого должно быть более чем достаточно, но если возникают проблемы, вы можете изменить это значение с помощью server.bansServerTimeout
переменной (значение указывается в секундах). Имейте в виду, что чем дольше выполняются запросы, тем дольше игрокам придется ждать подключения к вашему серверу. Вместо увеличения тайм-аута попробуйте ускорить свой API.
Нужно ли мне перезапускать мой сервер после изменения какого-либо из параметров?
Вам не нужно перезапускать сервер после изменения bansServerEndpoint
, bansServerFailureMode
, или bansServerTimeout
. Однако игроки, уже находящиеся на сервере, не будут удалены при включении или изменении bansServerEndpoint
.
Я управляю Rust-серверами и хочу использовать централизованный бан, но я не знаю ни одного программиста. Есть ли какие-нибудь общедоступные реализации?
API спроектирован таким образом, что его можно использовать даже при наличии только HTTP-сервера. Вы можете загружать файлы JSON в папку и считывать их с помощью Rust-сервера — это менее удобно, потому что будет сложно управлять всеми файлами, но это всё равно будет работать.
Ниже приведен список известных реализаций, которые вы, возможно, сможете использовать:
- https://github.com/AdriaanBoshoff/RustCentralBanServer (бесплатно — GPL)
- https://lone.design/product/better-battlemetrics-bans-to-discord/ (платный плагин для сайта)
- https://lone.design/product/easy-admin-rust-plugin/ (платный плагин для сайта)
- https://codefling.com/tools/centralized-banning (бесплатно — лицензия MIT)
- https://store.lethal.network/p/ao-steambans/ (платный плагин для сайта)
- https://gameservertools.com (Только платные)