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

@ -386,33 +386,29 @@ 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 (player != null)
{ {
if (ply == null) if (player.IP == ip)
{ {
continue; player.Disconnect("Connection killed");
}
if (ply.Name == args.Name && ply.Index != args.Who)
{
if (ply.IP == ip)
{
if (ply.State < 2)
{
Utils.ForceKick(ply, "Name collision and this client has no world data.", true, false);
args.Handled = true; args.Handled = true;
return; return;
} }
else else if (player.IsLoggedIn)
{ {
args.Handled = false; User user = TShock.Users.GetUserByName(player.UserAccountName);
var ips = JsonConvert.DeserializeObject<List<string>>(user.KnownIps);
if (ips.Contains(ip))
{
player.Disconnect("Connection killed");
args.Handled = true;
return; return;
} }
} }
} }
} }
args.Handled = false;
return;
}
private void OnXmasCheck(ChristmasCheckEventArgs args) private void OnXmasCheck(ChristmasCheckEventArgs args)
{ {