Timer de conexiуn [Pregunta]
#1

Hola amigos del samp estaba checando alguna seguridades el la seccion inglesa y vi este que me llamo la atencion.

Que tanto puede evitar ataques si recibe varias conexiones y desconexiones a la vez y pueda llegar a tumbar un server..

pawn Код:
new IPDesconect[ 16 ];
public OnPlayerDisconnect(playerid, reason)
{
GetPlayerIp(playerid, IPDesconect, sizeof(IPDesconect));
SetTimer("BorrarIP", 500, false);
return 1;
}

forward BorrarIP();
public BorrarIP()
{
IPDesconect = "127.0.0.1";
return 1;
}

public OnPlayerConnect(playerid)
{
new IPconect[ 16 ];
GetPlayerIp(playerid, IPconect, sizeof(IPconect));
if(!strcmp(IPconect, IPDesconect, true))
{
new str[128];
format(str, sizeof(str), "banip %s", IPDesconect);
SendRconCommand(str);
}
return 1;
}
es aconsejable usarlo!!
Reply
#2

Y si estбn jugando dos o mas en un ciber? los banearбs de por gusto?
Reply
#3

No creo que sea lo mejor, al desconectarse un jugador en medio segundo aсade la IP del servidor a la "lista negra"?, aсade la IP del localhost. No creo que sea lo mejor aъn aсadiйndo la IP del que se desconectу, no lo dejarнa entrar si crasheу o algo semejante por que lo banea la IP. Se me ocurriу algo como esto:

pawn Код:
new LeaveTime,
    LeaveIP[32];

public OnPlayerConnect(playerid)
{
    if ((GetTickCount() - LeaveTime) < 2000 && !strcmp(ReturnIP(playerid), LeaveIP))
    {
        Kick(playerid);
        return 1;
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    LeaveTime = GetTickCount();
    format(LeaveIP, 16, ReturnIP(playerid));
    return 1;
}

ReturnIP(playerid)
{
    new
        ip[32];

    GetPlayerIp(playerid, ip, sizeof(ip));
    return ip;
}
o

pawn Код:
new LeaveTime[MAX_PLAYERS],
    LeaveIP[MAX_PLAYERS][32];

public OnPlayerConnect(playerid)
{
    if ((GetTickCount() - LeaveTime[playerid]) < 2000 && !strcmp(ReturnIP(playerid), LeaveIP[playerid]))
    {
        Kick(playerid);
        return 1;
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    LeaveTime[playerid] = GetTickCount();
    format(LeaveIP[playerid], 16, ReturnIP(playerid));

    return 1;
}

ReturnIP(playerid)
{
    new
        ip[32];

    GetPlayerIp(playerid, ip, sizeof(ip));
    return ip;
}
El segundo comprobarнa si se conectу con la misma IP tomando el mismo ID del que se desconectу anteriormente y desconctу y conectу en menos de 2 segundos.

El primero harнa lo mismo pero en un tйrmino global.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)