Централизованные баны (Centralized Banning)
Централизованный бан — это функция, которая позволяет владельцам серверов использовать внешний синхронизированный список банов (и мутов), общий для нескольких серверов.
Как это работает
Вам понадобится веб-сервер (HTTP или HTTPS), на котором будет размещён централизованный API для банов.
Facepunch не предоставляет реализацию этого API, но он достаточно простой. Некоторые сторонние реализации перечислены в разделе FAQ ниже.
Чтобы включить централизованные баны на сервере, укажите endpoint в convar server.bansServerEndpoint.
Например:
server.bansServerEndpoint "https://domain.tld/api/rustBans/"После настройки сервер будет обращаться к этому API при подключении игрока, чтобы проверить, не забанен ли (или не замучен ли) игрок.
Настройка централизованных банов на сервере
Если server.bansServerEndpoint настроен, например, так:
"https://domain.tld/api/rustBans/"ваш веб-сервер будет получать запросы от Rust Dedicated Server следующего вида.
GET /api/rustBans/{steamID64}
Возвращает статус бана для 64-битного SteamID в формате JSON.
Примечание
URI для этого запроса формируется добавлением SteamID64 к значению server.bansServerEndpoint.
Это означает, что вы можете установить server.bansServerEndpoint в значение вида:
"https://domain.tld/api/rustBans?steamId="
— и тогда SteamID будет передан как параметр URL.
Сервер автоматически добавит / в конец строки endpoint, если она не заканчивается на / или =.
Пример ответа
{
"steamId": "76561197960287930",
"reason": "definitely not cheating",
"expiryDate": 1608611830,
"isMute": false
}Поля ответа
| Поле | Описание |
|---|---|
steamId | 64-битный SteamID, для которого применяется бан/мут. Используется для проверки того, что API возвращает корректные данные. |
reason | Причина блокировки. Это сообщение будет показано игроку при подключении к серверу. |
expiryDate | Unix-время (timestamp), указывающее момент окончания бана/мута. Значения <= 0 означают бессрочный бан/мут. |
isMute | Если true, игрок замучен.Длительность мута берётся из expiryDate. Значения <= 0 означают постоянный мут. |
Коды ответа (HTTP)
Rust Dedicated Server также учитывает код ответа вашего веб-сервера:
| Код состояния | Значение |
|---|---|
2xx | Успех. В теле ответа должен быть JSON в формате, описанном выше. |
404 | Не найдено: запрошенный SteamID64 не забанен (и не замучен). |
| Другое | Редиректы обрабатываются Unity, а коды ошибок приводят к сбою проверки (см. server.bansServerFailureMode в FAQ). |
FAQ
Что происходит, когда API endpoint недоступен или работает некорректно?
Если централизованная система блокировки сталкивается с ошибкой, в консоли сервера появится сообщение.
server.bansServerFailureMode определяет, что происходит с игроками :
| Значение | Описание |
|---|---|
0 | Игроки допускаются на сервер при ошибке (ошибка логируется в консоль). |
1 | Игрокам отказывают в подключении при ошибке (ошибка логируется в консоль и показывается игроку). |
Запросы к моему API истекают по тайм-ауту. Что делать?
Тайм-аут по умолчанию для всех запросов централизованных банов — 5 секунд.
Вы можете изменить это значение с помощью convar server.bansServerTimeout (в секундах).
Учтите, что чем дольше обрабатываются запросы, тем дольше игрокам придётся ждать подключения. Обычно лучше ускорить API, чем увеличивать тайм-аут.
Нужно ли перезапускать сервер после изменения convar?
Перезапуск не требуется после изменения server.bansServerEndpoint, server.bansServerFailureMode или server.bansServerTimeout.
Однако игроки, уже находящиеся на сервере, не будут кикнуты при включении или изменении server.bansServerEndpoint.
Есть ли общедоступные реализации?
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 (только платно)
- https://serverarmour.com/centralized-bans (бесплатно и платно)