Skip to content

Централизованные баны ​

Один список банов и мутов можно раздать нескольким серверам. Игровой сервер при входе спрашивает ваш адрес: забанен человек или нет. Это не страница заблокированных IP Facepunch. Здесь банят SteamID игрока, а не адрес машины.

Как это работает ​

Facepunch даёт только конвар и формат ответа. Сам сайт со списком вы поднимаете сами: подойдёт любой HTTP или HTTPS.

Адрес записывают так:

server.bansServerEndpoint "https://example.com/api/rust-bans/"

Дальше при каждом входе сервер Раст спрашивает этот адрес и смотрит, есть ли бан или мут.

Настройка централизованных банов на сервере ​

Если endpoint заканчивается как в примере выше, сервер дописывает Steam64:

https://example.com/api/rust-bans/76561198000000000

Steam64 приклеивается в конец строки. Если ваш API ждёт параметр, поставьте = в конце, и идентификатор уйдёт в запрос:

server.bansServerEndpoint "https://example.com/api/rust-bans?steamId="

Если в конце нет ни /, ни =, сервер сам добавит /.

Пример ответа ​

Ответ на забаненный Steam64 — JSON:

json
{
  "steamId": "76561198000000000",
  "reason": "чит на бою",
  "expiryDate": 1608611830,
  "isMute": false
}

Поля ответа ​

ПолеСмысл
steamIdSteam64, которого вы проверили. Сервер сверяет, что ответ про того же человека
reasonтекст, который человек увидит при отказе во входе
expiryDateUNIX-время, когда бан или мут кончается. 0 и отрицательные — без срока
isMutetrue — это мут, не бан. Срок мута берётся из expiryDate, 0 и ниже — мут постоянный

Коды ответа (HTTP) ​

КодКак понимает сервер
2xxуспех, в теле JSON как выше
404этого Steam64 в списке нет, человек не забанен и не в муте
другойредирект забирает Unity. Ошибка запускает режим сбоя server.bansServerFailureMode

FAQ ​

В консоли сервера появится сообщение об ошибке проверки. Что делать с игроком в эту секунду, решает server.bansServerFailureMode:

ЗначениеПоведение
0пустить. Ошибка только в консоли
1не пускать. Ошибка и в консоли, и у игрока

Ждать ответ дольше 5 секунд сервер по умолчанию не будет. Свой предел в секундах:

server.bansServerTimeout 5

Длинный таймаут заставляет человека висеть на экране входа. Быстрее починить API, чем раздувать ожидание.

server.bansServerEndpoint, server.bansServerFailureMode и server.bansServerTimeout подхватываются без рестарта. Те, кто уже играет, при включении списка не вылетят: проверка идёт на входе.

Тот же контракт закрывается папкой JSON-файлов на обычном HTTP, без программы. Файлами управлять неудобно, но сервер их читает.

Готовые реализации, если не писать API самим:

Опубликовано под лицензией MIT.
Данный проект не является официальной документацией Facepunch/Rust.
Это общественная база знаний, созданная для удобства администраторов и игроков.