using System; using System.Data; using System.Threading; using Chop; using Chop.Database; using Chop.Game.Messages; using Chop.User; namespace Game.Messages.Incoming.Handshake { class SSOTicketMessageHandler : IMessageHandler { public void Handle(GameClient client, RequestParser parser) { string ticket = parser.ReadString(); DataRow row; using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("session", ticket); row = dbClient.ReadDataRow("SELECT * FROM habbos WHERE session = @session"); } if (row == null) // User don't exists! { Core.ClientManager.RemoveClient(client); return; } DataRow banRow; using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("id", row["id"]); banRow = dbClient.ReadDataRow("SELECT * FROM bans WHERE habboid = @id"); } if (banRow != null) // ban fond { int i = DateTime.Compare(DateTime.Parse(banRow["expires"].ToString(), new System.Globalization.CultureInfo("en-GB")), DateTime.Now); if (i < 0) // Ban expired using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("id", row["id"]); dbClient.ExecuteQuery("DELETE FROM bans WHERE habboid = @id"); } else { client.Response.Init(35); // "@c" client.Response.Append(banRow["message"]); client.SendResponse(); Thread.Sleep(10000); Core.ClientManager.RemoveClient(client); return; } } if (Core.ClientManager.GetClientByHabbo(row["name"].ToString()) != null) // Aleredy logged in, disconnect old Core.ClientManager.RemoveClient(Core.ClientManager.GetClientByHabbo(row["name"].ToString())); client.mHabbo = Habbo.Parse(row); client.mHabbo.mClient = client; client.mHabbo.mLastVisit = DateTime.Now.ToString("dd'.'MM'.'yyyy HH':'mm"); client.mHabbo.UpdateColumn("lastvisit", client.mHabbo.mLastVisit); // disabled until weblogin // client.mHabbo.UpdateColumn("session", ""); client.Response.Init(2); // UserRightsMessageEvent client.Response.AppendInt32(2); // clubLevel, 0 = normal, 1 = hc, 2 = vip client.Response.AppendInt32(client.mHabbo.mRank); // securityLevel client.SendResponse(); client.Response.Init(290); // AvailabilityStatusMessageEvent client.Response.AppendBoolean(true); // isOpen client.Response.AppendBoolean(false); // onShutDown client.SendResponse(); client.Response.Init(3); // AuthenticationOKMessageEvent client.SendResponse(); client.Response.Init(517); // InfoFeedEnableMessageEvent client.Response.AppendBoolean(true); client.SendResponse(); //client.Response.Init(455); // NavigatorSettingsEvent //client.Response.AppendInt32(0); //client.SendResponse(); client.Response.Init(455); // FavouritesEvent client.Response.AppendInt32(30); // limit client.Response.AppendInt32(0); // count client.SendResponse(); } } }