Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

regex, SteamID, ReHLDS

, нужно вангануть
Статус пользователя Metal Messiah
сообщение 8.11.2017, 20:58
Сообщение #1


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
Доброго времени суток. Сегодня случайно обнаруживаю что один из моих серверов банит игроков исключительно по IP, хотя обязан в приоритете банить по SteamID если админ лично не выбрал бан по IP... Анализ показал что код из advanced_bans
Код
/*bool:IsValidAuthid(const authid[])
{
    return regex_match_c(authid, g_SteamID_pattern, g_regex_return) > 0;
}*/

#define IsValidAuthid(%1) (regex_match_c(%1, g_SteamID_pattern, g_regex_return) > 0)

почему-то всегда выдает false. Плагин один и тот же установлен на 2 серверах с разными билдами. С обоих плагинов в банлист (базу) идет корректный SteamID, то есть проблема НЕ в исходных данных, передаваемых параметром этой функции.

На этом наблюдается проблема:
Цитата
Exe build: 01:17:40 Jul 3 2016 (813)
ReHLDS API version 2.13

[ 1] Reunion RUN - reunion_mm_i386. v0.1.67 ini Start Never
[ 6] AMX Mod X RUN - amxmodx_mm_i386. v1.8.2 ini Start ANY

На этом серве все работает как нужно
Цитата
Exe build: 11:30:00 Aug 28 2012 (5787)
[ 1] dproto_EF RUN - dproto_i386.so v0.9.391 ini Start Never
[ 6] AMX Mod X RUN - amxmodx_mm_i386. v1.8.1.3 ini Start ANY

Кто из скриптеров может вангануть в чем именно проблема? Думать можно много на что начиная от ReHLDS, ReUnion и заканчивая любой другой metamod плагин. Или проблема известная?


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя dehost
сообщение 8.11.2017, 21:17
Сообщение #2


Стаж: 13 лет

Сообщений: 3147
Благодарностей: 1431
Полезность: 486

Metal Messiah,
Ну в чем проблема чекнуть на сколько бан и чекнуть все кфг кто что банит, там думаю и найдешь время
Варианты это:
Reunion
# QueryFloodBanTime (1 - 60)
# Ban time in minutes for server query flooding.
QueryFloodBanTime = твое время

reauthcheck
# Дополнительная Строка Наказания за Обнаружение, Которая Будет Выполнена в Консоле Сервера
# Для Методов "#1, #2, #5, #6", "CheckXFake"
# Строковое Значение "Максимальной длиной до 96 символов"
PunishStringXFake = addip 1440.0 [ip]

# Дополнительная Строка Наказания за Обнаружение, Которая Будет Выполнена в Консоле Сервера
# Для Метода "CheckHLProxy"
# Строковое Значение "Максимальной длиной до 96 символов"
PunishStringHLProxy = addip 1440.0 [ip]

# Дополнительная Строка Наказания за Обнаружение, Которая Будет Выполнена в Консоле Сервера
# Для Метода "CheckMaxIp"
# Строковое Значение "Максимальной длиной до 96 символов"
PunishStringMaxIP = addip 180.0 [ip]

# Дополнительная Строка Наказания за Обнаружение, Которая Будет Выполнена в Консоле Сервера
# Для Метода "CheckMaxDrop"
# Строковое Значение "Максимальной длиной до 96 символов"
PunishStringMaxDrop = addip 60.0 [ip]

Параметры ReHLDS
sv_rehlds_movecmdrate_avg_punish "5" //Тип наказания за превышение фильтра sv_rehlds_movecmdrate_max_avg
sv_rehlds_movecmdrate_burst_punish "5" //Тип наказания за превышение фильтра sv_rehlds_movecmdrate_max_burst
sv_rehlds_stringcmdrate_avg_punish "5" //Тип наказания за превышение фильтра sv_rehlds_stringcmdrate_max_avg
sv_rehlds_stringcmdrate_burst_punish "5" //Тип наказания за превышение фильтра sv_rehlds_stringcmdrate_max_burst

Чекай время бана и вычисляй
Или я не правильно понял?

Отредактировал: dehost, - 8.11.2017, 21:24


Золотое правило нравственности:
"Относись к людям так, как хочешь, чтобы относились к тебе."
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 8.11.2017, 21:27
Сообщение #3


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
Неправильно понял. Бан средствами чуть менее чем полностью переделанного в 2014-2015 году AdvancedBans. Код вида
if IsValidAuthid() банить по SteamID else банить по IP.
Банит всегда по IP, но в базу все пишется правильно. Неправильно работает именно функция из 1го поста.


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dehost
сообщение 8.11.2017, 21:41
Сообщение #4


Стаж: 13 лет

Сообщений: 3147
Благодарностей: 1431
Полезность: 486

Цитата(Metal Messiah @ 8.11.2017, 22:27) *
Неправильно понял. Бан средствами чуть менее чем полностью переделанного в 2014-2015 году AdvancedBans. Код вида
if IsValidAuthid() банить по SteamID else банить по IP.
Банит всегда по IP, но в базу все пишется правильно. Неправильно работает именно функция из 1го поста.

Тогда сорян за "спам" Reunion возможно настройки чекни, а так все старое стоит....

Отредактировал: dehost, - 8.11.2017, 21:47


Золотое правило нравственности:
"Относись к людям так, как хочешь, чтобы относились к тебе."
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя daywer
сообщение 8.11.2017, 23:36
Сообщение #5


Стаж: 13 лет
Город: Санкт-Петербург


Сообщений: 136
Благодарностей: 121
Полезность: 1051

Цитата(Metal Messiah @ 8.11.2017, 21:58) *
Доброго времени суток. Сегодня случайно обнаруживаю что один из моих серверов банит игроков исключительно по IP, хотя обязан в приоритете банить по SteamID если админ лично не выбрал бан по IP... Анализ показал что код из advanced_bans
Код
/*bool:IsValidAuthid(const authid[])
{
    return regex_match_c(authid, g_SteamID_pattern, g_regex_return) > 0;
}*/


#define IsValidAuthid(%1) (regex_match_c(%1, g_SteamID_pattern, g_regex_return) > 0)

почему-то всегда выдает false. Плагин один и тот же установлен на 2 серверах с разными билдами. С обоих плагинов в банлист (базу) идет корректный SteamID, то есть проблема НЕ в исходных данных, передаваемых параметром этой функции.

На этом наблюдается проблема:

На этом серве все работает как нужно

Кто из скриптеров может вангануть в чем именно проблема? Думать можно много на что начиная от ReHLDS, ReUnion и заканчивая любой другой metamod плагин. Или проблема известная?


Скорее всего Reunion у тебя генерирует steam id который не подходит под шаблон.
REGEX_STEAMID_PATTERN

Отредактировал: daywer, - 8.11.2017, 23:41


Написание плагинов на заказ.(sql,sqlite,nvault)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vladboss
сообщение 9.11.2017, 0:37
Сообщение #6


Стаж: 15 лет

Сообщений: 312
Благодарностей: 87
Полезность: 236

Исправляли:

Код:
#define REGEX_STEAMID_PATTERN "^^STEAM_0:(0|1):\d+$"


на

Код:
#define REGEX_STEAMID_PATTERN "^^(STEAM|VALVE)_[0-9]:[0-9]:\d+$"


? smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя WaLkZ
сообщение 9.11.2017, 1:20
Сообщение #7
Стаж: 13 лет

Сообщений: 52
Благодарностей: 17
Полезность: 246

Just use is_user_steam instead of checking if authid is valid with regex. If is_user_steam return true then get_user_authid will give you valid authid.
https://github.com/s1lentq/reapi/blob/23fe1...reunion.inc#L22

Отредактировал: WaLkZ, - 9.11.2017, 1:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 9.11.2017, 1:50
Сообщение #8


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
vladboss, спасибо. Как раз карты сменились и загрузился плагин который я для теста написал. Разница между STEAM_0:0: и STEAM_1:0:
Видимо так и сделаю.

WaLkZ, thanks, but what about is_user_steam result for user running RevEmu or any other emulator? It will return false I think. The aim is to get any steam ID including emulated.


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vladboss
сообщение 9.11.2017, 1:58
Сообщение #9


Стаж: 15 лет

Сообщений: 312
Благодарностей: 87
Полезность: 236

Цитата(Metal Messiah @ 9.11.2017, 1:50) *
vladboss, спасибо. Как раз карты сменились и загрузился плагин который я для теста написал. Разница между STEAM_0:0: и STEAM_1:0:
Видимо так и сделаю.

WaLkZ, thanks, but what about is_user_steam result for user running RevEmu or any other emulator? It will return false I think. The aim is to get any steam ID including emulated.


Информацию брал из официального топика на форуме там ещё фикс одной проблемы описан.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя WaLkZ
сообщение 9.11.2017, 1:58
Сообщение #10
Стаж: 13 лет

Сообщений: 52
Благодарностей: 17
Полезность: 246

You can check more than one auth type. Look in enum client_auth_type
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 9.11.2017, 2:19
Сообщение #11


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
regex solution is universal both for ReHLDS and standard server.

За оф.темой не слежу т.к. у меня от оригинального плагина очень мало что осталось.

Отредактировал: Metal Messiah, - 9.11.2017, 2:20


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя esterio
сообщение 9.11.2017, 15:28
Сообщение #12
Стаж: 13 лет
Город: Украина

Сообщений: 266
Благодарностей: 215
Полезность: 627

Metal Messiah, Все же лучше если есть ReAPI использовать REU_GetAuthtype. Так более надежне и железно
vladboss, регулярку я б написал так
Код:
^(?:STEAM|VALVE)_[0-9]:[0-9]:[0-9]{1,11}$



Ми будемо вбивати росіян у будь-якій точці світу до повної перемоги України
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: