Example #1
0
        private void TestClientConnections()
        {
            int millisecondsTimeout = int.Parse(PhoenixEnvironment.GetConfig().data["client.ping.interval"]);

            if (millisecondsTimeout <= 100)
            {
                throw new ArgumentException("Invalid configuration value for ping interval! Must be above 100 miliseconds.");
            }
            while (true)
            {
                try
                {
                    ServerMessage     Message     = new ServerMessage(50);
                    List <GameClient> SuccessTest = new List <GameClient>();
                    List <GameClient> FailTest    = new List <GameClient>();
                    for (int i = 0; i < this.Session.Length; i++)
                    {
                        GameClient Session = this.Session[i];
                        if (Session != null)
                        {
                            if (Session.PongOK)
                            {
                                Session.PongOK = false;
                                FailTest.Add(Session);
                            }
                            else
                            {
                                SuccessTest.Add(Session);
                            }
                        }
                    }
                    foreach (GameClient Session in SuccessTest)
                    {
                        try
                        {
                            Session.Disconnect();
                        }
                        catch { }
                    }
                    byte[] bytes = Message.GetBytes();
                    foreach (GameClient Session in FailTest)
                    {
                        try
                        {
                            Session.GetConnection().SendData(bytes);
                        }
                        catch { }
                    }
                }
                catch (Exception ex)
                {
                    Logging.LogThreadException(ex.ToString(), "Connection checker task");
                }
                Thread.Sleep(millisecondsTimeout);
            }
        }
Example #2
0
 public void LogClonesOut(uint UserID)
 {
     for (int i = 0; i < this.Session.Length; i++)
     {
         GameClient Session = this.Session[i];
         if (Session != null && Session.GetHabbo() != null && Session.GetHabbo().Id == UserID)
         {
             Session.Disconnect();
         }
     }
 }
		public void BanUser(GameClient Client, string Moderator, double LengthSeconds, string Reason, bool IpBan)
		{
			if (!Client.GetHabbo().isAaron)
			{
				ModerationBanType uSERNAME = ModerationBanType.USERNAME;
				string username = Client.GetHabbo().Username;
				string val = "user";
				double Expire = PhoenixEnvironment.GetUnixTimestamp() + LengthSeconds;
				if (IpBan)
				{
					uSERNAME = ModerationBanType.IP;
					if (!GlobalClass.UseIP_Last)
					{
                        username = Client.GetConnection().ipAddress;
					}
					else
					{
						using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient())
						{
							username = adapter.ReadString("SELECT ip_last FROM users WHERE Id = " + Client.GetHabbo().Id + " LIMIT 1;");
						}
					}
					val = "ip";
				}
				this.Bans.Add(new ModerationBan(uSERNAME, username, Reason, Expire));
				using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient())
				{
					adapter.AddParamWithValue("rawvar", val);
					adapter.AddParamWithValue("var", username);
					adapter.AddParamWithValue("reason", Reason);
					adapter.AddParamWithValue("mod", Moderator);
					adapter.ExecuteQuery("INSERT INTO bans (bantype,value,reason,expire,added_by,added_date,appeal_state) VALUES (@rawvar,@var,@reason,'" + Expire + "',@mod,'" + DateTime.Now.ToLongDateString() + "', '1')");
				}
                if (IpBan)
                {
                    DataTable table = null;
                    using (DatabaseClient client3 = PhoenixEnvironment.GetDatabase().GetClient())
                    {
                        client3.AddParamWithValue("var", username);
                        table = client3.ReadDataTable("SELECT id FROM users WHERE ip_last = @var");
                    }
                    if (table != null)
                    {
                        foreach (DataRow row in table.Rows)
                        {
                            using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient())
                            {
                                adapter.ExecuteQuery("UPDATE user_info SET bans = bans + 1 WHERE user_id = '" + ((uint)row["id"]) + "' LIMIT 1");
                            }
                        }
                    }
                }
                else
                {
                    using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient())
                    {
                        adapter.ExecuteQuery("UPDATE user_info SET bans = bans + 1 WHERE user_id = '" + Client.GetHabbo().Id + "' LIMIT 1");
                    }
                }
                Client.SendBanMessage("You have been banned: " + Reason);
                Client.Disconnect();
            }
        }