Пример #1
0
    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);
    }
Пример #2
0
    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;
            }
        }
    }
Пример #3
0
 public void DisconnectPlayer(int player, string message)
 {
     server.SendPacket(player, ServerPackets.DisconnectPlayer(message));
     server.KillPlayer(player);
 }