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.