17.05.2013, 06:09
This contains:
- Automatic ban of external console logins that fail to login (most of this type of attacks).
- Warning system (will warn all players from same ip not to try to login if they are not admins)
- Flood control - too many false attempts -> ban
For: TimeSincePvar - grab it here: http://forum.sa-mp.com/showpost.php?...8&postcount=40
- Automatic ban of external console logins that fail to login (most of this type of attacks).
- Warning system (will warn all players from same ip not to try to login if they are not admins)
- Flood control - too many false attempts -> ban
Код:
OnRconLoginAttempt(ip[], password[], success) { #pragma unused password if (!success) { new hasplayers = 0; new pip[16]; for (new PlayerID=0; PlayerID < MAX_PLAYERS; PlayerID++) { if (!IsPlayerConnected(PlayerID)) continue; GetPlayerIp(PlayerID, pip, sizeof(pip)); if (!strcmp(ip, pip, true)) { hasplayers++; // protect nubs against their stupidity. new timex = TimeSincePvar(PlayerID, "last_rcon_attempt"); if (timex > 1000) { SendPlayerMessage(PlayerID, COLOR_RED, "Do not abuse the rcon system, you will be banned if you fail to login again."); } SetPVarInt(PlayerID, "last_rcon_attempt", TickCount()); new rla; rla = GetPVarInt(PlayerID, "rcon_login_attempts"); rla = rla + 1; if (rla > 3) { // ban the ip via rcon makestrf(banipstr, 64, "banip %s", ip); SendRconCommand(banipstr); } SetPVarInt(PlayerID, "rcon_login_attempts", rla); } } // loop if (hasplayers == 0) { // ban the ip via rcon makestrf(banipstr, 64, "banip %s", ip); SendRconCommand(banipstr); } } return PCOR_CONTINUE; }