SA-MP Forums Archive
Timer de conexiуn [Pregunta] - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Timer de conexiуn [Pregunta] (/showthread.php?tid=560232)



Timer de conexiуn [Pregunta] - Zodiaco - 27.01.2015

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!!


Respuesta: Timer de conexiуn [Pregunta] - jotajeda - 27.01.2015

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


Respuesta: Timer de conexiуn [Pregunta] - Zume - 27.01.2015

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.