Esempio n. 1
0
        private void AnalizeCommand(String msg)
        {
            try
            {
                var js  = new JavaScriptSerializer();
                var obj = js.Deserialize <Message>(msg);

                if (CheckClientVersion(obj.Version) == false)
                {
                    return;
                }

                Dictionary <string, object> dic = (Dictionary <string, object>)obj.Data;

                this.LastRequestTime = DateTime.Now;
                this.LastCommand     = obj.Command;

                OnPropertyChanged("LastRequest");
                OnPropertyChanged("LastCommand");



                switch (obj.Command)
                {
                case Commands.Login:
                {
                    string email    = dic["email"].ToString();
                    string password = dic["password"].ToString();
                    ProccessLogin(email, password, obj.SystemId);
                    break;
                }

                case Commands.Signup:
                {
                    string email    = dic["email"].ToString();
                    string password = dic["password"].ToString();

                    var result = DatabaseManager.Signup(email, password);
                    SendCommand(Commands.Signup, new { result = result });
                    break;
                }

                case Commands.Confirm:
                {
                    ProccessConfirm(dic);
                    break;
                }

                case Commands.RegisterSite:
                {
                    RegisterSite(dic);
                    break;
                }

                case Commands.DeleteSite:
                {
                    var siteId = Convert.ToInt32(dic["id"]);
                    var result = DatabaseManager.DeleteSite(siteId);
                    SendCommand(Commands.DeleteSite, new { result = result });
                    if (result == true)
                    {
                        var status = DatabaseManager.GetStatus(this.UserId);
                        RizehServer.UpdateClientsStatus("sites", status.TotalSites);
                    }
                    break;
                }

                case Commands.UpdateSite:
                {
                    UpdateSite(dic);
                    break;
                }

                case Commands.NextSite:
                {
                    ProccessNextSite();
                    break;
                }

                case Commands.UserWebsiteList:
                {
                    RizehServer.ProccessUserWebsiteList(this.UserId);
                    break;
                }

                case Commands.UserPayments:
                {
                    ProccessUserPayments(this.UserId);
                    break;
                }

                case Commands.ProductList:
                {
                    var list = DatabaseManager.GetProductsList();
                    SendCommand(Commands.ProductList, new { list = list });
                    break;
                }

                case Commands.Pays:
                {
                    var result = false;
                    var url    = "";

                    var id      = (int)dic["id"];
                    var cost    = DatabaseManager.GetProductCost(id) * 10;
                    var payline = new PayLine();
                    var id_get  = payline.Send(cost);

                    var pay = new Payments()
                    {
                        ProductId = id,
                        UserId    = UserId,
                        IdGet     = id_get,
                        Status    = 0,
                        Amount    = cost
                    };

                    result = DatabaseManager.InsertPayment(pay);

                    if (result == true && id_get > 0)
                    {
                        url = String.Format("http://payline.ir/payment/gateway-{0}", id_get);
                    }
                    else
                    {
                        result = false;
                    }

                    SendCommand(Commands.Pays, new { result = result, url = url });
                    break;
                }

                case Commands.ChangePassword:
                {
                    var result = DatabaseManager.ChangePassword(UserId, dic["oldPassword"].ToString(), dic["newPassword"].ToString());
                    SendCommand(Commands.ChangePassword, new { result = result });
                    break;
                }

                case Commands.ResetPassword:
                {
                    var email  = dic["email"].ToString();
                    var userId = DatabaseManager.GetUserIdFromEmail(email);
                    if (userId > 0)
                    {
                        var key  = Cryptor.EncryptRijndael(userId.ToString(), "Rizeh.com");
                        var link = String.Format("http://www.rizeh.com/reset.aspx?key={0}", key);
                        EmailManager.Send(email, "بازنشانی رمز عبور در ریزه", Settings.Default.ResetPasswordEmail.Replace("[Url]", link));
                        SendCommand(Commands.ResetPassword, new { result = true });
                    }
                    else
                    {
                        SendCommand(Commands.ResetPassword, new { result = false });
                    }
                    break;
                }

                default:
                {
                    break;
                }
                }
            }
            catch (Exception ex)
            {
                OnExeptionOccured(MethodInfo.GetCurrentMethod().Name, ex.Message);

                if (InvalidCmdCount >= 5)
                {
                    this.Disconnect();
                }
                else
                {
                    InvalidCmdCount = InvalidCmdCount + 1;
                }
            }
        }
Esempio n. 2
0
        private void ProccessLogin(string email, string password, string systemId)
        {
            int userId;

            var result = DatabaseManager.Login(email, password, this.ClientIP, systemId, out userId);

            if (result == LoginStatus.IsValid)
            {
                this.UserId = userId;
                OnPropertyChanged("UserId");

                this.IsAuthenticated = true;
                OnPropertyChanged("IsAuthenticated");

                var dtSites = DatabaseManager.GetUserWebsites(userId);
                var status  = DatabaseManager.GetStatus(userId);

                //______________________________________________________________________________________________
                //واکشی سایت بعدی برای نمایش
                bool mustClear = false;
                var  url       = "http://www.rizeh.com";

                var vSite = DatabaseManager.GetRandomSite(this.UserId, LastSiteId, this.ClientIP, tblVisitedSites, out mustClear);
                if (mustClear)
                {
                    tblVisitedSites.Clear();
                }

                if (vSite != null)
                {
                    url        = vSite.Url;
                    LastSiteId = vSite.SiteId;

                    if (tblVisitedSites.Rows.Find(vSite.SiteId) == null)
                    {
                        var row = tblVisitedSites.NewRow();
                        row["SiteId"] = vSite.SiteId;
                        tblVisitedSites.Rows.Add(row);
                    }
                }

                //______________________________________________________________________________________________

                var data = new
                {
                    result     = result,
                    totalUsers = status.TotalUsers,
                    sites      = status.TotalSites,
                    scores     = status.Scores,
                    url        = url,
                    onlines    = GetTotalOnlines(),
                    dtSites    = dtSites
                };

                SendCommand(Commands.Login, data);

                RizehServer.UpdateClientsStatus("onlines", RizehServer.Clients.Where(c => c.IsAuthenticated == true).Count());

                return;
            }
            else if (result == LoginStatus.IsNotApproved)
            {
                var code = DatabaseManager.GetConfirmCode(email);
                EmailManager.Send(email, "کد تایید ایمیل", code);
            }

            SendCommand(Commands.Login, new { result = result });
        }