public static CLIENT_KVSTATUS Update_LiveStatus(string status, ref CLIENT_STRUCT ClientObj) { switch (status) { case "8015190D": return(ClientObj.kvstatus = CLIENT_KVSTATUS.BANNED); case "80151001": return(ClientObj.kvstatus = CLIENT_KVSTATUS.ERROR); // XONLINE_E_LOGON_CANNOT_ACCESS_SERVICE case "80151002": return(ClientObj.kvstatus = CLIENT_KVSTATUS.ERROR); // XONLINE_E_LOGON_UPDATE_REQUIRED case "80151003": return(ClientObj.kvstatus = CLIENT_KVSTATUS.ERROR); // XONLINE_E_LOGON_SERVERS_TOO_BUSY case "80151004": return(ClientObj.kvstatus = CLIENT_KVSTATUS.ERROR); // XONLINE_E_LOGON_CONNECTION_LOST case "8015100B": return(ClientObj.kvstatus = CLIENT_KVSTATUS.ERROR); case "8015100C": return(ClientObj.kvstatus = CLIENT_KVSTATUS.ERROR); case "8015100D": return(ClientObj.kvstatus = CLIENT_KVSTATUS.ERROR); case "8015100E": return(ClientObj.kvstatus = CLIENT_KVSTATUS.ERROR); case "8015100F": return(ClientObj.kvstatus = CLIENT_KVSTATUS.ERROR); } return(ClientObj.kvstatus = CLIENT_KVSTATUS.UNBANNED); }
public static void BanClient(CLIENT_STRUCT ClientObj, string reason = null) { using (var dbcon = DbConnection.SetupConnection()) { DbConnection.Connect(dbcon); using (var Cmd = dbcon.CreateCommand()) { Cmd.CommandText = string.Format("UPDATE clients SET auth_status = 1, banned_reason=@banned_reason WHERE cpukey=@cpukey;"); Cmd.Parameters.AddWithValue("@cpukey", ClientObj.cpukey); Cmd.Parameters.AddWithValue("@banned_reason", reason); Cmd.ExecuteNonQuery(); dbcon.Close(); } } }
public static void SaveClient(CLIENT_STRUCT ClientObj, string KeyIdentifier) { using (var DbCon = DbConnection.SetupConnection()) { DbConnection.Connect(DbCon); using (var Cmd = DbCon.CreateCommand()) { Cmd.CommandTimeout = 10; Cmd.CommandText = string.Format("UPDATE clients SET session_key=@session_key, time=@time, last_login=@last_login, online=@online, auth_status=@auth_status, kv_status=@kv_status, ip=@ip, title_id=@title_id, console_type=@console_type, gamertag=@gamertag, kv_serial=@kv_serial, map_cordinates=@map_cordinates, banned_reason=@banned_reason, discord=@discord, challenges_ran=@challenges_ran, settings=@settings WHERE (cpukey=@key OR session_key=@key)"); Cmd.Parameters.AddWithValue("@cpukey", ClientObj.cpukey); Cmd.Parameters.AddWithValue("@session_key", ClientObj.sessiontoken); Cmd.Parameters.AddWithValue("@time", ClientObj.time); Cmd.Parameters.AddWithValue("@last_login", DateTime.Now); Cmd.Parameters.AddWithValue("@auth_status", ClientObj.authstatus); Cmd.Parameters.AddWithValue("@kv_status", ClientObj.kvstatus); Cmd.Parameters.AddWithValue("@online", true); Cmd.Parameters.AddWithValue("@ip", ClientObj.ip); Cmd.Parameters.AddWithValue("@console_type", ClientObj.consoletype); Cmd.Parameters.AddWithValue("@gamertag", ClientObj.gamertag); Cmd.Parameters.AddWithValue("@kv_serial", ClientObj.kvserial); Cmd.Parameters.AddWithValue("@banned_reason", ClientObj.bannedreason); Cmd.Parameters.AddWithValue("@discord", ClientObj.discord); Cmd.Parameters.AddWithValue("@challenges_ran", ClientObj.challengesran); Cmd.Parameters.AddWithValue("@settings", ClientObj.settings); if (ClientObj.titleid == null) { Cmd.Parameters.AddWithValue("@title_id", "Dashboard"); } else { Cmd.Parameters.AddWithValue("@title_id", ClientObj.titleid); } if (ClientObj.mapcordinates == null) { Cmd.Parameters.AddWithValue("@map_cordinates", " "); } else { Cmd.Parameters.AddWithValue("@map_cordinates", ClientObj.mapcordinates); } Cmd.Parameters.AddWithValue("@key", KeyIdentifier); Cmd.ExecuteNonQuery(); DbCon.Close(); Cmd.Dispose(); DbCon.Dispose(); } } }
public static int FetchKvUsedOn(CLIENT_STRUCT ClientObj) { int ConsolesFoundOnKv = 0; using (var DbCon = DbConnection.SetupConnection()) { DbConnection.Connect(DbCon); using (var Cmd = DbCon.CreateCommand()) { Cmd.Parameters.AddWithValue("@kv_serial", ClientObj.kvserial); Cmd.CommandText = string.Format("SELECT COUNT(*) FROM clients WHERE kv_serial=@kv_serial"); ConsolesFoundOnKv = Convert.ToInt32(Cmd.ExecuteScalar()); } DbCon.Close(); } return(ConsolesFoundOnKv); }
public static int Countconsolesusingcpu(CLIENT_STRUCT ClientObj) { int ConsolesFoundUsingCpu = 0; using (var DbCon = DbConnection.SetupConnection()) { DbConnection.Connect(DbCon); using (var Cmd = DbCon.CreateCommand()) { Cmd.CommandText = string.Format("SELECT COUNT(*) FROM clients WHERE cpukey=@cpukey"); Cmd.Parameters.AddWithValue("@cpukey", ClientObj.cpukey); ConsolesFoundUsingCpu = Convert.ToInt32(Cmd.ExecuteScalar()); DbCon.Close(); } } return(ConsolesFoundUsingCpu); }
public static void UpdateKvThread(CLIENT_STRUCT ClientObj, bool ResetUnbanTime = false) { if (ResetUnbanTime) { using (var DbCon = DbConnection.SetupConnection()) { DbConnection.Connect(DbCon); using (var Cmd = DbCon.CreateCommand()) { Cmd.CommandText = string.Format("UPDATE clients SET kv_first_unbanned=@kv_first_unbanned WHERE cpukey=@cpukey"); DateTime resetunbantime = new DateTime(2009, 07, 08, 02, 30, 30); Cmd.Parameters.AddWithValue("@kv_first_unbanned", resetunbantime); Cmd.Parameters.AddWithValue("@cpukey", ClientObj.cpukey); Cmd.ExecuteNonQuery(); DbCon.Close(); Cmd.Dispose(); DbCon.Dispose(); } } } if (ClientObj.kvstatus == CLIENT_KVSTATUS.UNBANNED) { if ((int)ClientObj.authstatus >= 3 || LEServer.Freemode) { if (ClientObj.kvfirstunbanned.Year == 2009) { UpdateFirstUnbanned(ClientObj); } } } else if (ClientObj.kvstatus == CLIENT_KVSTATUS.BANNED) { using (var DbCon = DbConnection.SetupConnection()) { DbConnection.Connect(DbCon); using (var Cmd = DbCon.CreateCommand()) { Cmd.CommandText = string.Format("UPDATE clients SET kv_first_unbanned=@kv_first_unbanned WHERE cpukey=@cpukey"); DateTime resetunbantime = new DateTime(2009, 07, 08, 02, 30, 30); Cmd.Parameters.AddWithValue("@kv_first_unbanned", resetunbantime); Cmd.Parameters.AddWithValue("@cpukey", ClientObj.cpukey); Cmd.ExecuteNonQuery(); DbCon.Close(); Cmd.Dispose(); DbCon.Dispose(); } } } }
public static bool GetClient(ref CLIENT_STRUCT ClientObj, string Key) { using (var DbCon = DbConnection.SetupConnection()) { DbConnection.Connect(DbCon); using (var Cmd = DbCon.CreateCommand()) { Cmd.CommandText = string.Format("SELECT * FROM clients WHERE (cpukey=@key OR session_key=@key)"); Cmd.Parameters.AddWithValue("@key", Key); using (var Reader = Cmd.ExecuteReader()) if (Reader.Read()) { ClientObj.sessiontoken = (string)Reader["session_key"]; ClientObj.cpukey = (string)Reader["cpukey"]; ClientObj.online = (bool)Reader["online"]; ClientObj.authstatus = (CLIENT_AUTHSTATUS)Reader["auth_status"]; ClientObj.ip = (string)Reader["ip"]; ClientObj.time = (DateTime)Reader["time"]; ClientObj.kvfirstunbanned = (DateTime)Reader["kv_first_unbanned"]; ClientObj.lastloginTime = (DateTime)Reader["last_login"]; ClientObj.consoletype = (string)Reader["console_type"]; ClientObj.gamertag = (string)Reader["gamertag"]; ClientObj.mapcordinates = (string)Reader["map_cordinates"]; ClientObj.kvserial = (string)Reader["kv_serial"]; ClientObj.consoleaction = (CLIENT_ACTION)Reader["console_action"]; ClientObj.actioncompleted = (CLIENT_ACTION_COMPLETED)Reader["action_completed"]; ClientObj.kvstatus = (CLIENT_KVSTATUS)Reader["kv_status"]; ClientObj.bannedreason = (string)Reader["banned_reason"]; ClientObj.discord = (string)Reader["discord"]; ClientObj.titleid = (string)Reader["title_id"]; ClientObj.challengesran = (int)Reader["challenges_ran"]; ClientObj.settings = (string)Reader["settings"]; DbCon.Close(); if (Countconsolesusingcpu(ClientObj) > 1) { BanClient(ClientObj); } return(true); } } DbCon.Close(); } return(false); }
public static void UpdateFirstUnbanned(CLIENT_STRUCT ClientObj) { if (ClientObj.kvstatus == CLIENT_KVSTATUS.UNBANNED && ClientObj.kvfirstunbanned.Year == 2009 && (int)ClientObj.authstatus >= 3 || LEServer.Freemode) { using (var DbCon = DbConnection.SetupConnection()) { DbConnection.Connect(DbCon); using (var Cmd = DbCon.CreateCommand()) { Cmd.CommandText = string.Format("UPDATE clients SET kv_first_unbanned=@kv_first_unbanned, kv_serial=@kv_serial WHERE cpukey=@cpukey"); Cmd.Parameters.AddWithValue("@cpukey", ClientObj.cpukey); Cmd.Parameters.AddWithValue("@kv_first_unbanned", DateTime.Now); Cmd.Parameters.AddWithValue("@kv_serial", ClientObj.kvserial); Cmd.ExecuteNonQuery(); DbCon.Close(); Cmd.Dispose(); DbCon.Dispose(); } } } }
private void HandleClientComm(object Client) { CLIENT_STRUCT ClientObj = new CLIENT_STRUCT(); TOKEN_STRUCT TokenObj = new TOKEN_STRUCT(); TcpClient TcpClient = (TcpClient)Client; TcpClient.SendBufferSize = MaxSendRec; TcpClient.ReceiveBufferSize = MaxSendRec; TcpClient.NoDelay = true; IPEndPoint IP_EndPoint = TcpClient.Client.RemoteEndPoint as IPEndPoint; string IP = TcpClient.Client.RemoteEndPoint.ToString().Split(new char[] { ':' })[0]; NetworkStream NetStream = TcpClient.GetStream(); serverStream ServerStream = new serverStream(NetStream); try { // Console.WriteLine(IP + " Connected!"); byte[] TmpDataHeader = new byte[0x8]; if (!NetStream.CanRead || NetStream.Read(TmpDataHeader, 0, 0x8) != 0x8) { TcpClient.Close(); return; } EndianIO DataHeader = new EndianIO(TmpDataHeader, EndianStyle.BigEndian); PACKET_COMMAND CommandID = (PACKET_COMMAND)DataHeader.Reader.ReadUInt32(); int DataCount = DataHeader.Reader.ReadInt32(); if (DataCount >= 0x8000) { TcpClient.Close(); return; } byte[] Data = new byte[DataCount]; if (!ServerStream.CanRead || ServerStream.Read(Data, 0, DataCount) != DataCount) { TcpClient.Close(); return; } EndianIO EndianData = new EndianIO(Data, EndianStyle.BigEndian) { Writer = new EndianWriter(ServerStream, EndianStyle.BigEndian) }; ioData ioData; ioData.reader = EndianData.Reader; ioData.writer = new EndianIO(ServerStream, EndianStyle.BigEndian).Writer; ioData.client = TcpClient; ioData.ipaddr = IP_EndPoint; ioData.payloadSize = DataCount; if (ioData.payloadSize > 0) { if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_AUTH) { int Start = DateTime.Now.Second; if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.Auth.ProcessAuthorization(ioData, ref ClientObj); int End = (DateTime.Now.Second - Start); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Completed in: {2} seconds", CommandID, ioData.ipaddr.ToString(), End); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_TIME) { int Start = DateTime.Now.Second; if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.TimeUpdate.ProcessTime(ioData, ref ClientObj); int End = (DateTime.Now.Second - Start); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Completed in {2} seconds", CommandID, ioData.ipaddr.ToString(), End); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_STATUS) { if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.Status.ProcessStatus(ioData, ref ClientObj); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Passed!", CommandID, ioData.ipaddr.ToString()); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_PRES) { if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.Presence.ProcessPresence(ioData, ref ClientObj); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Passed!", CommandID, ioData.ipaddr.ToString()); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_SECURITY) { if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.Security.ProcessSecurity(ioData, ref ClientObj); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Passed!", CommandID, ioData.ipaddr.ToString()); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_TOKEN_CHECK) { if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.Token.ProcessVerifyTkn(ioData, ref ClientObj, ref TokenObj); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Passed!", CommandID, ioData.ipaddr.ToString()); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_TOKEN_REDEEM) { if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.Token.ProcessRedeemTkn(ioData, ref ClientObj, ref TokenObj); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Passed!", CommandID, ioData.ipaddr.ToString()); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_XKE) { if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.XKE.ProcessXKE(ioData, ref ClientObj); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Passed!", CommandID, ioData.ipaddr.ToString()); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_XSC) { if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.SuperVisor.ProcessXSC(ioData, ref ClientObj); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Passed!", CommandID, ioData.ipaddr.ToString()); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_OFFSETS) { if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.Games.ProccessOffsets(ioData, ref ClientObj); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Passed!", CommandID, ioData.ipaddr.ToString()); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_CPI) { if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.CPI.ProcessCPI(ioData, ref ClientObj); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Passed!", CommandID, ioData.ipaddr.ToString()); } } else if (CommandID == PACKET_COMMAND.PACKET_COMMAND_ID_SETTINGS) { if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0}", CommandID, ioData.ipaddr.ToString()); } Responces.Settings.ProccessSettings(ioData, ref ClientObj); if (LEServer.DebugModePrints) { Console.WriteLine("@{1} - Command Id: {0} Passed!", CommandID, ioData.ipaddr.ToString()); } } else { FireWallBanEvent(IP, "Requested Invalid Response"); } } else { FireWallBanEvent(IP, "Invalid Payload Size"); } DisconnectClient(ioData); } catch (Exception Ex) { List <Log.PrintQueue> HandleServCommErrorid = Log.GetQueue(); Log.Add(HandleServCommErrorid, ConsoleColor.Red, "ERROR", null); Log.Add(HandleServCommErrorid, ConsoleColor.Red, "Exception Message:", Ex.Message); Log.Add(HandleServCommErrorid, ConsoleColor.Red, "StrackTrace:", Ex.StackTrace); Log.Print(HandleServCommErrorid); TcpClient.Close(); return; } if (TcpClient.Connected) { TcpClient.Close(); } return; }
public static bool Redeem(TOKEN_STRUCT TokenObj, ref CLIENT_STRUCT ClientObj) { using (var DbCon = DbConnection.SetupConnection()) { DbConnection.Connect(DbCon); using (var Cmd = DbCon.CreateCommand()) { // get gen_by value from token string Gen_by = ""; Cmd.CommandText = "SELECT gen_by FROM tokens WHERE token=@tok"; Cmd.Parameters.AddWithValue("@tok", TokenObj.Token); using (var Results = Cmd.ExecuteReader()) if (Results.Read()) { Gen_by = (string)Results["gen_by"]; } else { Log.ErrorReportingPrint("Redeem Errror Selecting token !"); return(false); } Cmd.ExecuteNonQuery(); // get the current staff gross value to add on to it double CurrentGrossValue = 0; Cmd.CommandText = "SELECT * FROM staff WHERE username=@Gen_by"; Cmd.Parameters.AddWithValue("@Gen_by", Gen_by); using (var Results = Cmd.ExecuteReader()) if (Results.Read()) { CurrentGrossValue = (double)Results["gross"]; } else { Log.ErrorReportingPrint("Redeem error regarding staff username!"); return(false); } Cmd.ExecuteNonQuery(); // update token status Cmd.CommandText = "UPDATE tokens SET status=@status, dateused=@dateused, redeemed_by=@redeemed_by WHERE token=@token"; Cmd.Parameters.AddWithValue("@status", TOKEN_STATUS.ALREADYREDEEMED); Cmd.Parameters.AddWithValue("@dateused", DateTime.Now); Cmd.Parameters.AddWithValue("@redeemed_by", ClientObj.cpukey); Cmd.Parameters.AddWithValue("@token", TokenObj.Token); Cmd.ExecuteNonQuery(); // update client info Cmd.CommandText = "UPDATE clients SET time=@time, auth_status=@auth_status WHERE cpukey=@cpukey"; Cmd.Parameters.AddWithValue("@cpukey", ClientObj.cpukey); if (ClientObj.authstatus != CLIENT_AUTHSTATUS.BANNED) { Cmd.Parameters.AddWithValue("@auth_status", CLIENT_AUTHSTATUS.AUTHED); } else { Cmd.Parameters.AddWithValue("@auth_status", CLIENT_AUTHSTATUS.BANNED); } if (ClientObj.time <= DateTime.Now) { Cmd.Parameters.AddWithValue("@time", DateTime.Now.AddDays(TokenObj.Days)); } else { Cmd.Parameters.AddWithValue("@time", ClientObj.time.AddDays(TokenObj.Days)); } Cmd.ExecuteNonQuery(); // get the current prices from our server settings double PriceOption1 = 0; double PriceOption2 = 0; double PriceOption3 = 0; double PriceOption4 = 0; double PriceOption5 = 0; Cmd.CommandText = "SELECT * FROM serversettings"; using (var Results = Cmd.ExecuteReader()) if (Results.Read()) { JObject jobj = JObject.Parse((string)Results["pricing"]); PriceOption1 = jobj["pricinglist1"].Value <double>(); PriceOption2 = jobj["pricinglist2"].Value <double>(); PriceOption3 = jobj["pricinglist3"].Value <double>(); PriceOption4 = jobj["pricinglist4"].Value <double>(); PriceOption5 = jobj["pricinglist5"].Value <double>(); } else { Log.ErrorReportingPrint("Redeem error selecting data from serversettings !"); return(false); } Cmd.ExecuteNonQuery(); // update our staff information if (Gen_by != "" && PriceOption1 != 0 && PriceOption2 != 0 && PriceOption3 != 0 && PriceOption4 != 0) { if (TokenObj.Days == 1) { CurrentGrossValue += PriceOption1; } else if (TokenObj.Days == 3) { CurrentGrossValue += PriceOption2; } else if (TokenObj.Days == 7) { CurrentGrossValue += PriceOption3; } else if (TokenObj.Days == 14) { CurrentGrossValue += PriceOption4; } else if (TokenObj.Days == 31) { CurrentGrossValue += PriceOption5; } Cmd.CommandText = "UPDATE staff SET gross=@Gross WHERE username=@GenBy"; Cmd.Parameters.AddWithValue("@GenBy", Gen_by); Cmd.Parameters.AddWithValue("@Gross", CurrentGrossValue); Cmd.ExecuteNonQuery(); } else { Log.ErrorReportingPrint("Redeem error updating gross for staff member!"); return(false); } DbCon.Close(); Cmd.Dispose(); DbCon.Dispose(); } DbCon.Close(); } return(true); }