Иконка ресурса

IP Name & Say Block v2 2.1

skywalker

Участник
Сообщения
1,153
Реакции
263
Вот теперь
// (77) : error 010: invalid function or declaration
// (79) : error 010: invalid function or declaration
// (82) : error 010: invalid function or declaration
// (85) : error 010: invalid function or declaration
// (89) : error 010: invalid function or declaration
// (91) : error 054: unmatched closing brace ("}")
// (92) : error 010: invalid function or declaration
// (116) : warning 209: function "CheckIP" should return a value
// (128) : warning 209: function "CheckIP" should return a value
// (145) : warning 209: function "CheckIP" should return a value
// (81) : warning 203: symbol is never used: "__unknown__"
// (36) : warning 204: symbol is assigned a value that is never used: "ip_serv"
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #162

skywalker

Участник
Сообщения
1,153
Реакции
263
@R1KO,
public OnPluginStart()
{
g_warnings = CreateConVar("sm_ip_block_warning", "1", "Количество предупреждений перед наказанием");
g_punishment_mode = CreateConVar("sm_ip_block_punishment_mode", "1", "Тип наказания (0 - Кик, 1 - Бан)");
g_ban_time = CreateConVar("sm_ip_ban_time", "0", "Время бана в минутах при sm_ip_block_punishment_mode 1 (0 - Навсегда)");
g_WhiteListEnable = CreateConVar("sm_ip_whitelist_enable", "1", "Использовать ли лист исключений (0 - Нет, 1 - Да)");
whitelist_enable = GetConVarBool(g_WhiteListEnable);
g_ImmFlag = CreateConVar("sm_ip_immuniti_flag", "z", "Флаг админа для иммунитета (\"\" - нет иммунитета)");
GetConVarString(g_ImmFlag, g_adminFlags, sizeof(g_adminFlags));
ip_serv = CompileRegex("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d*)?");

HookEvent("player_changename", EventNameChange, EventHookMode_Pre);
AddCommandListener(SayChat, "say");
AddCommandListener(SayChat, "say_team");
RegAdminCmd("sm_ip_whitelist_reload", Command_ReloadWhiteList, ADMFLAG_ROOT);

AutoExecConfig(true, "ip_block");

HookConVarChange(g_WhiteListEnable, ConVarChanges);
HookConVarChange(g_ImmFlag, ConVarChanges);
}

public ConVarChanges(Handle:convar, const String:oldValue[], const String:newValue[])
{
if (convar == g_WhiteListEnable)
whitelist_enable = GetConVarBool(convar);
else if (convar == g_ImmFlag)
GetConVarString(g_ImmFlag, g_adminFlags, sizeof(g_adminFlags));
}
public OnConfigsExecuted()
{
whitelist_enable = GetConVarBool(g_WhiteListEnable);
GetConVarString(g_ImmFlag, g_adminFlags, sizeof(g_adminFlags));
if(whitelist_enable)
{
WhitelistTrie = CreateTrie();
LoadWhiteList();
}
}

public Action:Command_ReloadWhiteList(client, args)
{
if(whitelist_enable) LoadWhiteList();
else ReplyToCommand(client, "Команда недоступна.");
return Plugin_Handled;
}

bool:CheckIP(String:CheckIPString[], len)

ReplaceString(CheckIPString, len, " ", "", false);
if(strlen(CheckIPString) < 5) return false;
{
if(whitelist_enable)
{
GetRegexSubString(ip_serv, 0, CheckIPString, 32);
if (GetTrieString(WhitelistTrie, CheckIPString, CheckIPString, len))
{
LogAction(-1, -1, "Проверен IP-адрес %s (Разрешен)", CheckIPString);
return false;
}
}
LogAction(-1, -1, "Заблокирован посторонний IP-адрес %s", CheckIPString);
return true;

}
return false;
}

bool:IsAdmin(client)
{
if(!StrEqual(g_adminFlags, ""))
return GetUserAdmin(client) == INVALID_ADMIN_ID ? false : true;

return (GetUserFlagBits(client) & ReadFlagString(g_adminFlags)) ? true : false;
}

public OnClientPostAdminCheck(client)
{
if(IsFakeClient(client) || client <= 0) return;
g_bIsAdmin[client] = false;

if(IsAdmin(client))
{
g_bIsAdmin[client] = true;
return;
}

decl String:name[MAX_NAME_LENGTH];
GetClientName(client, name, sizeof(name));
if(CheckIP(name, sizeof(name)))
Client_Punishment(client);
else my_warnings[client] = 0;
}

public Action:SayChat(client, const String:command[], args)
{
if(client <= 0) return Plugin_Continue;
if(g_bIsAdmin[client]) return Plugin_Continue;

decl String:text[192];
GetCmdArgString(text, sizeof(text));
if(CheckIP(text, sizeof(text)))
{
if(++my_warnings[client] >= GetConVarInt(g_warnings)) Client_Punishment(client);
else PrintToChat(client, "IP Заблокирован. При повторе - бан!");
return Plugin_Handled;
}
return Plugin_Continue;
}

public Action:EventNameChange(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(g_bIsAdmin[client]) return Plugin_Continue;
if(IsFakeClient(client) || client <= 0) return Plugin_Continue;

decl String:name_change[MAX_NAME_LENGTH];
GetEventString(event, "newname", name_change, sizeof(name_change));
if(CheckIP(name_change, sizeof(name_change)))
Client_Punishment(client);
return Plugin_Continue;
}

Client_Punishment(client)
{
if(GetConVarBool(g_punishment_mode)) ServerCommand("sm_ban #%d %d Реклама", GetClientUserId(client), GetConVarInt(g_ban_time));
else KickClient(client, "Реклама");
my_warnings[client] = 0;
}

LoadWhiteList()
{
decl String:szPath[PLATFORM_MAX_PATH];
BuildPath(Path_SM, szPath, sizeof(szPath), "configs/ip_whitelist.txt");
new Handle:hFile = OpenFile(szPath, "r");

if (hFile == INVALID_HANDLE) LogError("Не удалось открыть файл '%s'", szPath);
else
{
if (WhitelistTrie != INVALID_HANDLE)
ClearTrie(WhitelistTrie);

decl String:szLine[PLATFORM_MAX_PATH];
while (!IsEndOfFile(hFile) && ReadFileLine(hFile, szLine, sizeof(szLine)))
{
TrimString(szLine);
SetTrieString(WhitelistTrie, szLine, szLine, false);
}
WhitelistSize = GetTrieSize(WhitelistTrie);

if (WhitelistTrie == INVALID_HANDLE || WhitelistSize <= 0) whitelist_enable = false;
}
CloseHandle(hFile);
}
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #164
@Утка,
PHP:
bool:CheckIP(String:CheckIPString[], len)
{
    ReplaceString(CheckIPString, len, " ", "", false);

    if(strlen(CheckIPString) < 5) return false;

    if (MatchRegex(ip_serv, CheckIPString) > 0)
    {
        if(whitelist_enable)
        {
            GetRegexSubString(ip_serv, 0, CheckIPString, 32);
            if (GetTrieString(WhitelistTrie, CheckIPString, CheckIPString, len))
            {
                LogAction(-1, -1, "Проверен IP-адрес %s (Разрешен)", CheckIPString);
                return false;
            }
        }
        LogAction(-1, -1, "Заблокирован посторонний IP-адрес %s", CheckIPString);
        return true;
    
    }
    return false;
}
 

xp2000

Участник
Сообщения
190
Реакции
14
@Утка,
PHP:
bool:CheckIP(String:CheckIPString[], len)
{
    ReplaceString(CheckIPString, len, " ", "", false);

    if(strlen(CheckIPString) < 5) return false;

    if (MatchRegex(ip_serv, CheckIPString) > 0)
    {
        if(whitelist_enable)
        {
            GetRegexSubString(ip_serv, 0, CheckIPString, 32);
            if (GetTrieString(WhitelistTrie, CheckIPString, CheckIPString, len))
            {
                LogAction(-1, -1, "Проверен IP-адрес %s (Разрешен)", CheckIPString);
                return false;
            }
        }
        LogAction(-1, -1, "Заблокирован посторонний IP-адрес %s", CheckIPString);
        return true;
   
    }
    return false;
}
Можешь выложить не баганую версию сюда?
 

HellWaer

Участник
Сообщения
273
Реакции
32
Вывод корректной причины бана в сб все так и не сделали?
 

HellWaer

Участник
Сообщения
273
Реакции
32
Кто нибудь поможет исправить пустую графу бана? Стоит версия плагина 2.2 Ошибок нет. Material Admin - рефорк SB++
 

xp2000

Участник
Сообщения
190
Реакции
14
На текущий момент рабочий плагин или с ошибками?
 

zer0

Участник
Сообщения
178
Реакции
27
да есть
 
Последнее редактирование:

over_trax

Участник
Сообщения
1,451
Реакции
488
подскажите. плагин банит/наказывает людей, у которых в нике реклама ?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #174

Tavian

Участник
Сообщения
1,184
Реакции
119
Квары стоят по дефолту , даже у вип теста есть иммунитет и может флудить айпи адресами.
 

Barkelay

Участник
Сообщения
520
Реакции
61
g_ImmFlag = CreateConVar("sm_ip_immuniti_flag", "z", "Флаг админа для иммунитета (\"\" - нет иммунитета)");

Но обычные админы всё равно могут писать IP-адреса в чате, сегодня увидел и охренел просто, пришлось снять админа за рекламу 😢
 

kilroy

:clown:
Сообщения
1,065
Реакции
606
g_ImmFlag = CreateConVar("sm_ip_immuniti_flag", "z", "Флаг админа для иммунитета (\"\" - нет иммунитета)");

Но обычные админы всё равно могут писать IP-адреса в чате, сегодня увидел и охренел просто, пришлось снять админа за рекламу 😢
Вы пустые скобки оставили или слэш вписали, как в вашем сообщении?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #179
g_ImmFlag = CreateConVar("sm_ip_immuniti_flag", "z", "Флаг админа для иммунитета (\"\" - нет иммунитета)");

Но обычные админы всё равно могут писать IP-адреса в чате, сегодня увидел и охренел просто, пришлось снять админа за рекламу 😢
а при чем строка из исходника к значению на сервере?
 

Barkelay

Участник
Сообщения
520
Реакции
61
а при чем строка из исходника к значению на сервере?
Окей... Вот!
Я сейчас о том, что админ с обычными флагами всё же смог написать IP-адрес сервера в чате
Попросил другого админа написать тот же адрес (чтобы уж наверняка), его кикнуло после 2 предупреждений (так и должно быть)
Вот и вопрос, как удалось другому админу обойти это, если у него нет флага "z"!? О_о
// This file was auto-generated by SourceMod (v1.9.0.6282)
// ConVars for plugin "Block_IP_v2.smx"


// Время бана в минутах при sm_ip_block_punishment_mode 1 (0 - Навсегда)
// -
// Default: "60"
sm_ip_ban_time "60"

// Тип наказания (0 - Кик, 1 - Бан)
// -
// Default: "0"
sm_ip_block_punishment_mode "0"

// Количество предупреждений перед наказанием
// -
// Default: "2"
sm_ip_block_warning "2"

// Флаг админа для иммунитета ("" - нет иммунитета)
// -
// Default: "z"
sm_ip_immuniti_flag "z"

// Использовать ли лист исключений (0 - Нет, 1 - Да)
// -
// Default: "1"
sm_ip_whitelist_enable "1"
 
Сверху Снизу