Add connection ghosting

Adds #815
This commit is contained in:
MarioE 2014-07-02 16:53:49 -04:00
parent 16cf364d59
commit f8a9603101

View file

@ -383,36 +383,32 @@ namespace TShockAPI
} }
} }
private void NetHooks_NameCollision(NameCollisionEventArgs args) private void NetHooks_NameCollision(NameCollisionEventArgs args)
{ {
string ip = TShock.Utils.GetRealIP(Netplay.serverSock[args.Who].tcpClient.Client.RemoteEndPoint.ToString()); string ip = TShock.Utils.GetRealIP(Netplay.serverSock[args.Who].tcpClient.Client.RemoteEndPoint.ToString());
foreach (TSPlayer ply in TShock.Players)
{ var player = TShock.Players.First(p => p != null && p.Name == args.Name && p.Index != args.Who);
if (ply == null) if (player != null)
{ {
continue; if (player.IP == ip)
} {
if (ply.Name == args.Name && ply.Index != args.Who) player.Disconnect("Connection killed");
{ args.Handled = true;
if (ply.IP == ip) return;
{ }
if (ply.State < 2) else if (player.IsLoggedIn)
{ {
Utils.ForceKick(ply, "Name collision and this client has no world data.", true, false); User user = TShock.Users.GetUserByName(player.UserAccountName);
args.Handled = true; var ips = JsonConvert.DeserializeObject<List<string>>(user.KnownIps);
return; if (ips.Contains(ip))
} {
else player.Disconnect("Connection killed");
{ args.Handled = true;
args.Handled = false; return;
return; }
} }
} }
} }
}
args.Handled = false;
return;
}
private void OnXmasCheck(ChristmasCheckEventArgs args) private void OnXmasCheck(ChristmasCheckEventArgs args)
{ {