public bool TimeBanIP(Server server, int sourceClientId, int targetClientId, string reason, int duration) { if (!server.PlayerHasPrivilege(sourceClientId, ServerClientMisc.Privilege.banip)) { server.SendMessage(sourceClientId, string.Format(server.language.Get("Server_CommandInsufficientPrivileges"), server.colorError)); return(false); } if (!reason.Equals("")) { reason = server.language.Get("Server_CommandKickBanReason") + reason + "."; } ClientOnServer targetClient = server.GetClient(targetClientId); if (targetClient != null) { if (targetClient.clientGroup.IsSuperior(server.GetClient(sourceClientId).clientGroup) || targetClient.clientGroup.EqualLevel(server.GetClient(sourceClientId).clientGroup)) { server.SendMessage(sourceClientId, string.Format(server.language.Get("Server_CommandTargetUserSuperior"), server.colorError)); return(false); } string targetName = targetClient.playername; string sourceName = server.GetClient(sourceClientId).playername; string targetNameColored = targetClient.ColoredPlayername(server.colorImportant); string sourceNameColored = server.GetClient(sourceClientId).ColoredPlayername(server.colorImportant); server.banlist.TimeBanIP((targetClient.socket.RemoteEndPoint()).AddressToString(), sourceName, reason, duration); SaveBanlist(server); server.SendMessageToAll(string.Format(server.language.Get("Server_CommandTimeIPBanMessage"), server.colorImportant, targetNameColored, sourceNameColored, duration, reason)); server.ServerEventLog(string.Format("{0} IP bans {1} for {2} minutes.{3}", sourceName, targetName, duration, reason)); server.SendPacket(targetClientId, ServerPackets.DisconnectPlayer(string.Format(server.language.Get("Server_CommandTimeIPBanNotification"), duration, reason))); server.KillPlayer(targetClientId); return(true); } server.SendMessage(sourceClientId, string.Format(server.language.Get("Server_CommandNonexistantID"), server.colorError, targetClientId)); return(false); }
public override void Update(Server server, float dt) { if (!loaded) { loaded = true; LoadBanlist(server); } if (server.banlist.ClearTimeBans() > 0) { SaveBanlist(server); } foreach (KeyValuePair <int, ClientOnServer> k in server.clients) { int clientId = k.Key; ClientOnServer c = k.Value; IPEndPointCi iep1 = c.socket.RemoteEndPoint(); if (server.banlist.IsIPBanned(iep1.AddressToString())) { IPEntry entry = server.banlist.GetIPEntry(iep1.AddressToString()); string reason = entry.Reason; if (string.IsNullOrEmpty(reason)) { reason = ""; } server.SendPacket(clientId, ServerPackets.DisconnectPlayer(string.Format(server.language.ServerIPBanned(), reason))); Console.WriteLine(string.Format("Banned IP {0} tries to connect.", iep1.AddressToString())); server.ServerEventLog(string.Format("Banned IP {0} tries to connect.", iep1.AddressToString())); server.KillPlayer(clientId); continue; } string username = c.playername; if (server.banlist.IsUserBanned(username)) { UserEntry entry = server.banlist.GetUserEntry(username); string reason = entry.Reason; if (string.IsNullOrEmpty(reason)) { reason = ""; } server.SendPacket(clientId, ServerPackets.DisconnectPlayer(string.Format(server.language.ServerUsernameBanned(), reason))); Console.WriteLine(string.Format("{0} fails to join (banned username: {1}).", (c.socket.RemoteEndPoint()).AddressToString(), username)); server.ServerEventLog(string.Format("{0} fails to join (banned username: {1}).", (c.socket.RemoteEndPoint()).AddressToString(), username)); server.KillPlayer(clientId); continue; } } }
public void DisconnectPlayer(int player, string message) { server.SendPacket(player, ServerPackets.DisconnectPlayer(message)); server.KillPlayer(player); }