Перейти к основному содержимому

Что такое SafeNameAndChat?

SafeNameAndChat — это плагин Metamod от @WPMGPRoSToTeMa, который очищает ники игроков и сообщения чата до того, как движок передаст их дальше, закрывая целое семейство давних эксплойтов GoldSrc, где специально составленный ник или сообщение роняет клиенты других игроков либо внедряет консольные команды.

примечание

Это сторонний проект. Он находится за пределами организации ReHLDS и ею не поддерживается — сообщайте о проблемах в его собственный трекер задач.

От чего он защищает

Клиент GoldSrc обрабатывает некоторые символы особым образом, и игрок, поместивший их в ник или чат, может этим воспользоваться:

  • Локализационные строки (#) — сообщение или ник с токенами вида #Spec_Help_Text заставляют принимающий клиент разбирать их как ключи локализации. В зависимости от токена клиенты падают.
  • Спецификаторы формата (%)%s и подобные им попадают в функцию форматирования на стороне клиента.
  • Амперсанд (&) в никах — некорректно обрабатывается в отдельных путях отрисовки ника на клиенте.
  • Внедрение команд через + в никах+, за которым сразу идёт буква или цифра, воспроизводит синтаксис привязки +команда.

Вместо того чтобы отключать игрока или вырезать символы, плагин заменяет каждый опасный символ его полноширинным двойником из Unicode: # становится , % становится . Для человека текст читается так же, но клиент больше не воспринимает его как токен. Плагин также умеет убирать непечатаемые символы и обрезать пробелы по краям.

Требования

  • Metamod (рекомендуется Metamod-R).
  • ReHLDS не обязателен, но определяется во время работы и используется при наличии: при запуске плагин запрашивает VREHLDS_HLDS_API_VERSION001 и, если ответ получен, идёт по пути с учётом возможностей движка.

Плагин можно загружать и выгружать в любой момент — meta load и meta unload работают без перезапуска сервера.

Порядок установки описан в разделе Установка, а одиннадцать переменных SNAC_* — в разделе Настройки.