예제 #1
0
        void CheckClient()
        {
            if (UserID == 0 || string.IsNullOrEmpty(UserToken))
            {
                NewUser();
                return;
            }

            level = ResourcesManager.GetPlayer(UserID);
            if (level != null)
            {
                if (level.Banned())
                {
                    var p = new LoginFailedMessage(Client);
                    p.SetErrorCode(11);
                    p.Send();
                    return;
                }
                if (string.Equals(level.GetPlayerAvatar().GetUserToken(), UserToken, StringComparison.Ordinal))
                {
                    LogUser();
                }
                else
                {
                    var p = new LoginFailedMessage(Client);
                    p.SetErrorCode(11);
/*FOR FHX*/         //p.SetReason("Please clear the Data of your FHx apps. \n\nSettings -> Application Manager -> Clear Data.(#1)\n\nMore Info, please check our official Website.\nOfficial Site: http://www.fhx-server.com");
                    p.SetReason("We have some Problems with your Account. Please clean your App Data. https://ultrapowa.com/forum");
                    p.Send();
                    return;
                }
            }
            else
            {
                var p = new LoginFailedMessage(Client);
                p.SetErrorCode(11);
/*FOR FHX*/     //p.SetReason("Please clear the Data of your FHx apps. \n\nSettings -> Application Manager -> Clear Data.(#1)\n\nMore Info, please check our official Website.\nOfficial Site: http://www.fhx-server.com");
                p.SetReason("We have some Problems with your Account. Please clean your App Data. https://ultrapowa.com/forum");
                p.Send();
                return;
            }
        }
예제 #2
0
 public override void Process(Level level)
 {
     if (Constants.IsRc4)
     {
         if (string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["patchingServer"]))
         {
             var p = new LoginFailedMessage(Client);
             p.SetErrorCode(7);
             p.SetResourceFingerprintData(ObjectManager.FingerPrint.SaveToJson());
             p.SetContentURL(ConfigurationManager.AppSettings["patchingServer"]);
             p.SetUpdateURL(ConfigurationManager.AppSettings["UpdateUrl"]);
             p.Send();
         }
         else
         {
             throw new NullReferenceException("Patching server cannot be nulled in RC4");
         }
     }
     else
     {
         new HandshakeSuccess(Client, this).Send();
     }
 }
예제 #3
0
        public override void Process(Level a)
        {
            if (Client.State == ClientState.Login)
            {
                if (Constants.IsRc4)
                {
                    Client.ClientSeed = Seed;
                    new RC4SessionKey(Client).Send();
                }

                if (ParserThread.GetMaintenanceMode() == true)
                {
                    var p = new LoginFailedMessage(Client);
                    p.SetErrorCode(10);
                    p.RemainingTime(ParserThread.GetMaintenanceTime());
                    p.SetMessageVersion(8);
                    p.Send();
                    return;
                }

                if (Constants.IsPremiumServer == false)
                {
                    if (ResourcesManager.GetOnlinePlayers().Count >= 100)
                    {
                        var p = new LoginFailedMessage(Client);
                        p.SetErrorCode(11);
                        p.SetReason("This is a free Version of UCS. Please Upgrade to Premium on https://ultrapowa.com/forum");
                        p.Send();
                        return;
                    }
                }

                int time = Convert.ToInt32(ConfigurationManager.AppSettings["maintenanceTimeleft"]);
                if (time != 0)
                {
                    var p = new LoginFailedMessage(Client);
                    p.SetErrorCode(10);
                    p.RemainingTime(time);
                    p.SetMessageVersion(8);
                    p.Send();
                    return;
                }

                if (ConfigurationManager.AppSettings["CustomMaintenance"] != string.Empty)
                {
                    var p = new LoginFailedMessage(Client);
                    p.SetErrorCode(10);
                    p.SetReason(ConfigurationManager.AppSettings["CustomMaintenance"]);
                    p.Send();
                    return;
                }

                var cv2 = ConfigurationManager.AppSettings["ClientVersion"].Split('.');
                var cv  = ClientVersion.Split('.');
                if (cv[0] != cv2[0] || cv[1] != cv2[1])
                {
                    var p = new LoginFailedMessage(Client);
                    p.SetErrorCode(8);
                    p.SetUpdateURL(Convert.ToString(ConfigurationManager.AppSettings["UpdateUrl"]));
                    p.Send();
                    return;
                }

                if (Convert.ToBoolean(ConfigurationManager.AppSettings["useCustomPatch"]) &&
                    MasterHash != ObjectManager.FingerPrint.sha)
                {
                    var p = new LoginFailedMessage(Client);
                    p.SetErrorCode(7);
                    p.SetResourceFingerprintData(ObjectManager.FingerPrint.SaveToJson());
                    p.SetContentURL(ConfigurationManager.AppSettings["patchingServer"]);
                    p.SetUpdateURL(ConfigurationManager.AppSettings["UpdateUrl"]);
                    p.Send();
                    return;
                }
                CheckClient();
            }
        }