예제 #1
0
 public static bool isValid(ref TOKEN_STRUCT TokenObj, string Token)
 {
     using (var DbCon = DbConnection.SetupConnection()) {
         DbConnection.Connect(DbCon);
         using (var Cmd = DbCon.CreateCommand()) {
             Cmd.CommandText = "SELECT * FROM tokens WHERE token=@token LIMIT 1";
             Cmd.Parameters.AddWithValue("@token", Token);
             using (var Results = Cmd.ExecuteReader())
                 if (Results.Read())
                 {
                     TokenObj.Token  = (string)Results["token"];
                     TokenObj.Days   = (int)Results["days"];
                     TokenObj.Status = (int)Results["status"];
                     return(true);
                 }
         }
         DbCon.Close();
     }
     return(false);
 }
예제 #2
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;
        }
예제 #3
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);
        }
예제 #4
0
        public static bool isBlackListed(string Token)
        {
            TOKEN_STRUCT TokenObj = GetToken(Token);

            return((TokenObj.Status == -1) ? true : false);
        }