コード例 #1
0
        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);
        }
コード例 #2
0
 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();
         }
     }
 }
コード例 #3
0
        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();
                }
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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();
                    }
                }
            }
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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();
                    }
                }
            }
        }
コード例 #9
0
        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;
        }
コード例 #10
0
        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);
        }