RC

RedCloud

Идентификация игроков поверх SteamID

RedCloud — модуль идентификации игроков для Superban. Он собирает несколько независимых маркеров, объединяет их в профиль и сохраняет историю изменений.

Если игрок меняет SteamID, IP или игровой клиент, RedCloud может связать новое подключение с известным профилем по оставшимся маркерам. Затем модуль оценивает найденные совпадения и передаёт Superban информацию о возможной связи с активным баном.

Возможности

  • Профили игроков. RedID, CloudID, SteamID, IP, GameID и KeyID объединяются в единый профиль с историей значений и подключений.

  • RedID. Персональная метка сохраняется в настройках игрового клиента и восстанавливается при следующих подключениях.

  • CloudID. Дополнительная браузерная метка выдаётся через MOTD. Она не зависит от SteamID и настроек игрового клиента.

  • Детект обхода. RedCloud сравнивает текущие маркеры с профилями, связанными с активными банами, и передаёт найденную связь в Superban.

  • Сильные и слабые маркеры. RedID, SteamID и CloudID имеют больший вес. IP, GameID и KeyID считаются менее надёжными и проверяются с дополнительными ограничениями.

  • Защита от совпадений. Система учитывает количество владельцев слабой метки и срок её актуальности, чтобы общий IP или распространённый KeyID не становились единственной причиной наказания.

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

  • Автоматические пороги. RedCloud может самостоятельно подбирать требования к уровням надёжности на основе активности игроков проекта.

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

  • Список доверенных. В trusted.ini можно вручную назначить доверенный уровень игроку по SteamID или IP.

  • Подбор типа бана. RedCloud анализирует накопленные маркеры игрока и может предложить Superban подходящий набор идентификаторов для нового бана.

  • Два режима защиты. В обычном режиме RedCloud работает как система идентификации. Режим реального времени включает дополнительные проверки и реакцию на отсутствие CloudID.

  • Интеграция с Superban. RedCloud не хранит и не применяет баны самостоятельно: он идентифицирует игрока, а Superban проверяет бан-лист и принимает итоговое решение.

Веб-часть и MOTD

Для работы CloudID требуется веб-эндпоинт RedCloud. Его можно разместить на собственном хостинге или на этом сайте, веб-часть записывает браузерные метки, проверяет доступность базы и показывает информацию о бане в MOTD-окне. Значение redcloud_motd_url должно быть настроено и начинаться с http://.

Self-hosted MOTD

RedCloud необходимо разместить на вашем хостинге или на этом сайте. Через него выдаётся CloudID, обновляются браузерные метки и показывается информация о бане в MOTD-окне. Данные хранятся в той же MySQL-базе, которую используют Superban и RedCloud.

Требования к хостингу

  • PHP 8.2 или новее;

  • расширения PHP pdo_mysql и mbstring;

  • MySQL или совместимая версия MariaDB;

  • Apache либо nginx;

  • доступ веб-сервера к базе данных Superban;

  • возможность открыть endpoint по обычному HTTP.

Для MOTD рекомендуется использовать http://. Старые браузеры, встроенные в клиенты CS 1.6, могут не поддерживать современный TLS и не открыть страницу по HTTPS.

Установка веб-части

  • Распакуйте архив superban-motd-core.zip на веб-сервер, сохранив структуру каталогов:

motd/
├── src/
└── standalone/
    ├── redcloud.php
    ├── config.php
    ├── check_template_motd.php
    ├── ban_template_motd.php
    ├── pic.swf
    └── lib/

Обе папки, src и standalone, обязательны. Они должны находиться рядом: standalone/lib/bootstrap.php подключает исходный код из src.

  • Настройте document root сайта или отдельного поддомена на папку standalone. Папка src должна оставаться за пределами публичного document root. В результате endpoint должен быть доступен по адресу:

    http://motd.example.com/redcloud.php
  • Откройте standalone/config.php и укажите подключение к той же базе данных, которую используют игровые плагины:

dbHost: '127.0.0.1',
dbPort: 3306,
dbName: 'cs_16',
dbUser: 'superban',
dbPassword: 'пароль',
  • Проверьте названия таблиц:

superbanPrefix: 'amx_',
superbanTable: 'bans',
redcloudPrefix: 'redcloud_',
  • Установите собственный секрет для браузерной метки бана:

banCookieSecret: 'длинная-случайная-строка',
  • Укажите адрес endpoint в redcloud.cfg игрового сервера:

redcloud_motd_url "http://motd.example.com/redcloud.php"

После изменения конфигурации смените карту или перезапустите игровой сервер.

Проверка веб-части

Откройте health endpoint:

http://motd.example.com/redcloud.php?mode=health

При правильном подключении к базе он вернёт:

ok

Ответ db_error означает, что веб-часть не может подключиться к MySQL. В этом случае проверьте адрес базы, имя пользователя, пароль, название базы и права доступа.

После запуска игрового сервера в логах RedCloud должно появиться подтверждение доступности веб-части:

[CloudAuth] web health OK

Защита конфигурации

Файл config.php содержит пароль от базы данных и не должен открываться через браузер.

Для Apache в комплект входят файлы .htaccess, запрещающие прямой доступ к config.php и папке lib. На сервере должна быть разрешена обработка .htaccess.

Для nginx добавьте ограничения вручную:

location = /config.php {
    deny all;
    return 404;
}

location ^~ /lib/ {
    deny all;
    return 404;
}

После настройки запрос к config.php должен возвращать 403 или 404.

Настройка внешнего вида

Файл check_template_motd.php отвечает за страницу, которую игрок видит при обычном подключении. В нём можно разместить правила сервера, изображение или другую информацию.

Файл ban_template_motd.php отвечает за страницу с информацией о бане: игрок, причина, срок, дата разбана и администратор.

При изменении шаблонов нельзя удалять служебные переменные из секции <head>:

<?php echo $cloudidHtml; ?>
<?php echo $cookiebanHtml; ?>
<?php echo $cookieFallbackHtml; ?>

Они используются для записи браузерных меток в клиентах, которые игнорируют обычный заголовок Set-Cookie.