Example #1
0
        protected override void CheckRequest(GPSPSession session)
        {
            base.CheckRequest(session);

            if (!_recv.ContainsKey("nick"))
            {
                _errorCode = GPErrorCode.Parse;
                return;
            }
            if (!_recv.ContainsKey("email") || !GameSpyUtils.IsEmailFormatCorrect(_recv["email"]))
            {
                _errorCode = GPErrorCode.Parse;
                return;
            }

            if (!_recv.ContainsKey("passenc"))
            {
                _errorCode = GPErrorCode.Parse;
                return;
            }

            if (_recv.ContainsKey("uniquenick"))
            {
                _CreateUserWithUniquenick = true;
                _uniquenick = _recv["uniquenick"];
            }
        }
Example #2
0
        protected override void DataBaseOperation(GPSPSession session)
        {
            if (!CheckQuery.FindEmail(_recv["email"]))
            {
                _errorCode = GPErrorCode.CheckBadMail;
                return;
            }
            if (!CheckQuery.CheckPassword(_recv["email"], _recv["passenc"]))
            {
                _errorCode = GPErrorCode.CheckBadPassword;
                return;
            }

            if (!CheckQuery.FindNick(_recv["nick"]))
            {
                _errorCode = GPErrorCode.CheckBadNick;
                return;
            }

            _result = CheckQuery.GetProfileidFromNickEmailPassword(_recv["email"], _recv["passenc"], _recv["nick"]);
            if (_result == null)
            {
                _errorCode = GPErrorCode.CheckBadNick;
            }
        }
Example #3
0
 protected override void DataBaseOperation(GPSPSession session)
 {
     if (ValidQuery.IsEmailValid(_recv["email"]))
     {
         EmailValid = true;
     }
 }
Example #4
0
        protected override void DataBaseOperation(GPSPSession session)
        {
            //TODO verify the search condition whether needed namespaceid!!!!!


            //we only need uniquenick to search a profile
            if (_recv.ContainsKey("uniquenick"))
            {
                _result
                    = SearchQuery.GetProfileFromUniquenick(_recv["uniquenick"], _namespaceid);
            }
            else if (_recv.ContainsKey("nick") && _recv.ContainsKey("email"))
            {
                _result = SearchQuery.GetProfileFromNickEmail(_recv["nick"], _recv["email"], _namespaceid);
            }
            else if (_recv.ContainsKey("nick"))
            {
                _result = SearchQuery.GetProfileFromNick(_recv["nick"], _namespaceid);
            }
            else if (_recv.ContainsKey("email"))
            {
                _result = SearchQuery.GetProfileFromEmail(_recv);
            }
            else
            {
                session.ToLog("Unknow search request received!");
                return;
            }
        }
Example #5
0
        protected override void ConstructResponse(GPSPSession session)
        {
            int index;

            if (_result.Count == 1)
            {
                index = 0;
            }
            //We received request which needs more results.
            else
            {
                if (_recv.ContainsKey("skip"))
                {
                    index = Convert.ToInt16(_recv["skip"]);
                }
                else
                {
                    index = 0;
                }
            }
            if (index < _result.Count)
            {
                _sendingBuffer  = @"\bsr\" + Convert.ToUInt16(_result[index]["profileid"]);
                _sendingBuffer += @"\nick\" + _result[index]["nick"];
                _sendingBuffer += @"\uniquenick\" + _result[index]["uniquenick"];
                _sendingBuffer += @"\namespaceid\" + Convert.ToUInt16(_result[index]["namespaceid"]);
                _sendingBuffer += @"\firstname\" + _result[index]["firstname"];
                _sendingBuffer += @"\lastname\" + _result[index]["lastname"];
                _sendingBuffer += @"\email\" + _result[index]["email"];
                _sendingBuffer += @"\bsrdone\\more\" + (_result.Count - 1) + @"\final\";
            }
        }
Example #6
0
        public override void Handle(GPSPSession session)
        {
            CheckRequest(session);
            if (_errorCode != GPErrorCode.NoError)
            {
                ErrorMsg.SendGPSPError(session, _errorCode, _operationID);
                return;
            }

            DataBaseOperation(session);
            if (_errorCode == GPErrorCode.DatabaseError)
            {
                ErrorMsg.SendGPSPError(session, _errorCode, _operationID);
                return;
            }

            ConstructResponse(session);
            if (_errorCode == GPErrorCode.ConstructResponseError)
            {
                ErrorMsg.SendGPSPError(session, _errorCode, _operationID);
                return;
            }

            Response(session);
        }
Example #7
0
 protected virtual void Response(GPSPSession session)
 {
     if (_sendingBuffer != null)
     {
         session.SendAsync(_sendingBuffer);
     }
 }
Example #8
0
        protected override void DataBaseOperation(GPSPSession session)
        {
            if (NewUserQuery.IsAccountExist(_recv["email"]))
            {
                if (!NewUserQuery.IsAccountCorrect(_recv["email"], _recv["passenc"], out _userid))
                {
                    _errorCode = GPErrorCode.NewUserBadPasswords;
                    return;
                }
            }
            else // Account not exist
            {
                NewUserQuery.CreateAccountOnUsersTable(_recv["email"], _recv["passenc"], out _userid);
            }

            if (_userid == 0)//error happend
            {
                _errorCode = GPErrorCode.DatabaseError;
                return;
            }

            NewUserQuery.FindOrCreateProfileOnProfileTable(_recv["nick"], _userid, out _profileid);

            if (_CreateUserWithUniquenick)
            {
                if (!NewUserQuery.FindOrCreateSubProfileOnNamespaceTable(_uniquenick, _namespaceid, _profileid))
                {
                    _errorCode = GPErrorCode.NewUserUniquenickInUse;
                    return;
                }
            }

            NewUserQuery.UpdateOtherInfo(_uniquenick, _namespaceid, _recv);
        }
Example #9
0
        /// <summary>
        /// Send a presence error
        /// </summary>
        /// <param name="session">The stream that will receive the error</param>
        /// <param name="errorCode">The error code</param>
        /// <param name="operationID">The operation id</param>
        public static void SendGPSPError(GPSPSession session, GPErrorCode errorCode, uint operationID)
        {
            string errorMsg      = ErrorMsg.GetErrorMsg(errorCode);
            string sendingBuffer = string.Format(@"\error\\err\{0}\fatal\\errmsg\{1}\id\{2}\final\", (uint)errorCode, errorMsg, operationID);

            session.SendAsync(sendingBuffer);
        }
Example #10
0
 protected override void CheckRequest(GPSPSession session)
 {
     if (!_recv.ContainsKey("profileid") || !_recv.ContainsKey("namespaceid"))
     {
         _errorCode = GPErrorCode.Parse;
     }
     base.CheckRequest(session);
 }
Example #11
0
        //pmath\\sesskey\\profileid\\productid\\

        protected override void CheckRequest(GPSPSession session)
        {
            base.CheckRequest(session);
            if (!_recv.ContainsKey("sesskey") || !_recv.ContainsKey("profileid") || !_recv.ContainsKey("productid"))
            {
                _errorCode = GPErrorCode.Parse;
            }
        }
Example #12
0
 protected override void CheckRequest(GPSPSession session)
 {
     base.CheckRequest(session);
     if (!_recv.ContainsKey("sesskey") && !_recv.ContainsKey("email") && !_recv.ContainsKey("uniquenick"))
     {
         _errorCode = GPErrorCode.Parse;
     }
 }
 protected override void CheckRequest(GPSPSession session)
 {
     base.CheckRequest(session);
     if (!_recv.ContainsKey("uniquenick") || !_recv.ContainsKey("namespace"))
     {
         _errorCode = GPErrorCode.Parse;
     }
 }
Example #14
0
 protected override void ConstructResponse(GPSPSession session)
 {
     _sendingBuffer = @"\otherslist\";
     foreach (Dictionary <string, object> player in _result)
     {
         _sendingBuffer += @"\o\" + player["profileid"];
         _sendingBuffer += @"\uniquenick\" + player["uniquenick"];
     }
     _sendingBuffer += @"oldone\final\";
 }
 protected override void ConstructResponse(GPSPSession session)
 {
     _sendingBuffer  = @"\bsr\" + Convert.ToUInt32(_result[0]["profileid"]);
     _sendingBuffer += @"\nick\" + _result[0]["nick"];
     _sendingBuffer += @"\uniquenick\" + _result[0]["uniquenick"];
     _sendingBuffer += @"\namespaceid\" + Convert.ToUInt16(_result[0]["namespaceid"]);
     _sendingBuffer += @"\firstname\" + _result[0]["firstname"];
     _sendingBuffer += @"\lastname\" + _result[0]["lastname"];
     _sendingBuffer += @"\email\" + _result[0]["email"];
     _sendingBuffer += @"\bsrdone\\more\0" + @"\final\";
 }
Example #16
0
 protected override void CheckRequest(GPSPSession session)
 {
     if (!_recv.ContainsKey("email"))
     {
         _errorCode = GPErrorCode.Parse;
     }
     if (!GameSpyUtils.IsEmailFormatCorrect(_recv["email"]))
     {
         _errorCode = GPErrorCode.Parse;
     }
 }
 protected override void ConstructResponse(GPSPSession session)
 {
     if (!IsUniquenickExist)
     {
         _sendingBuffer = @"us\0\usdone\final";
     }
     else
     {
         _sendingBuffer = @"\us\1\nick\" + _recv["preferrednick"] + @"\usdone\final\";
     }
 }
Example #18
0
 protected override void ConstructResponse(GPSPSession session)
 {
     if (_errorCode != GPErrorCode.NoError)
     {
         _sendingBuffer = @"\cur\" + (uint)_errorCode + @"\final\";
     }
     else
     {
         _sendingBuffer = @"\cur\0\pid\" + _result[0]["profileid"] + @"\final\";
     }
 }
Example #19
0
 protected override void ConstructResponse(GPSPSession session)
 {
     if (EmailValid)
     {
         session.Send(@"\vr\1\final\");
     }
     else
     {
         session.Send(@"\vr\0\final\");
     }
 }
Example #20
0
 protected override void ConstructResponse(GPSPSession session)
 {
     if (_errorCode != GPErrorCode.NoError)
     {
         _sendingBuffer = string.Format(@"\nur\{0}\final\", (uint)_errorCode);
     }
     else
     {
         _sendingBuffer = string.Format(@"\nur\0\pid\{0}\final\", _profileid);
     }
 }
Example #21
0
 protected override void ConstructResponse(GPSPSession session)
 {
     if (_result.Count == 0)
     {
         _sendingBuffer = @"\psrdone\final\";
         return;
     }
     foreach (Dictionary <string, object> player in _result)
     {
         _sendingBuffer += @"\psr\" + player["profileid"];
         _sendingBuffer += @"\status\" + player["statstring"];
         _sendingBuffer += @"\nick\" + player["nick"];
         _sendingBuffer += @"\statuscode\" + player["status"];
     }
     _sendingBuffer += @"\psrdone\final\";
 }
        protected override void CheckRequest(GPSPSession session)
        {
            base.CheckRequest(session);
            if (!_recv.ContainsKey("preferrednick"))
            {
                _errorCode = GPErrorCode.Parse;
            }


            if (_recv.ContainsKey("namespaceid"))
            {
                if (!uint.TryParse(_recv["namespaceid"], out namespaceid))
                {
                    _errorCode = GPErrorCode.Parse;
                }
            }
        }
Example #23
0
 protected override void ConstructResponse(GPSPSession session)
 {
     if (_result.Count == 0)
     {
         _sendingBuffer = @"\others\\odone\final\";
         return;
     }
     _sendingBuffer = @"\others\";
     foreach (Dictionary <string, object> player in _result)
     {
         _sendingBuffer += @"\o\" + _recv["profileid"];
         _sendingBuffer += @"\nick\" + player["nick"];
         _sendingBuffer += @"\uniquenick\" + player["uniquenick"];
         _sendingBuffer += @"\first\" + player["firstname"];
         _sendingBuffer += @"\last\" + player["lastname"];
         _sendingBuffer += @"\email\" + player["email"];
     }
     _sendingBuffer += @"\odone\final\";
 }
Example #24
0
 protected override void ConstructResponse(GPSPSession session)
 {
     if (_result == null)
     {
         _sendingBuffer = @"\nr\\ndone\final\";
     }
     else
     {
         _sendingBuffer = @"\nr\";
         foreach (Dictionary <string, object> player in _result)
         {
             _sendingBuffer += @"\nick\";
             _sendingBuffer += player["nick"];
             _sendingBuffer += @"\uniquenick\";
             _sendingBuffer += player["uniquenick"];
         }
         _sendingBuffer += @"\ndone\final\";
     }
 }
Example #25
0
 protected virtual void CheckRequest(GPSPSession session)
 {
     if (_recv.ContainsKey("id"))
     {
         if (!ushort.TryParse(_recv["id"], out _operationID))
         {
             //default operationID
             _operationID        = 1;
             session.OperationID = 1;
         }
     }
     if (_recv.ContainsKey("namespaceid"))
     {
         if (!ushort.TryParse(_recv["namespaceid"], out _namespaceid))
         {
             _errorCode = GPErrorCode.Parse;
         }
     }
 }
Example #26
0
 protected override void CheckRequest(GPSPSession session)
 {
     if (!_recv.ContainsKey("email"))
     {
         _errorCode = GPErrorCode.Parse;
     }
     // First, we try to receive an encoded password
     if (!_recv.ContainsKey("passenc"))
     {
         // If the encoded password is not sended, we try receiving the password in plain text
         if (!_recv.ContainsKey("pass"))
         {
             // No password is specified, we cannot continue
             _errorCode = GPErrorCode.Parse;
         }
         if (!_recv.ContainsKey("namespaceid"))
         {
             _recv.Add("namespaceid", "0");
         }
     }
     base.CheckRequest(session);
 }
Example #27
0
 protected override void DataBaseOperation(GPSPSession session)
 {
     _result = NickQuery.RetriveNicknames(_recv["email"], _recv["passenc"], Convert.ToUInt16(_recv["namespaceid"]));
 }
Example #28
0
        public void Switch(GPSPSession session, string message)
        {
            try
            {
                if (message[0] != '\\')
                {
                    GameSpyUtils.SendGPError(session, GPErrorCode.Parse, "An invalid request was sended.");
                    return;
                }

                string[] commands = message.Split("\\final\\", System.StringSplitOptions.RemoveEmptyEntries);

                foreach (string command in commands)
                {
                    if (command.Length < 1)
                    {
                        continue;
                    }

                    // Read client message, and parse it into key value pairs
                    string[] recieved = command.TrimStart('\\').Split('\\');
                    Dictionary <string, string> recv = GameSpyUtils.ConvertRequestToKeyValue(recieved);

                    switch (recv.Keys.First())
                    {
                    case "search":
                        new SearchHandler(session, recv).Handle();
                        break;

                    case "valid":    //is email format valid
                        new ValidHandler(session, recv).Handle();
                        break;

                    case "nicks":    // search an user with nick name
                        new NickHandler(session, recv).Handle();
                        break;

                    //case "pmatch":
                    //    PmatchHandler pmatch = new PmatchHandler(recv);
                    //    pmatch.Handle(session);
                    //    break;

                    case "check":
                        new CheckHandler(session, recv).Handle();
                        break;

                    case "newuser":    //create an new user
                        new NewUserHandler(session, recv).Handle();
                        break;

                    case "searchunique":    //search an user with uniquenick
                        new SearchUniqueHandler(session, recv).Handle();
                        break;

                    case "others":    //search
                        new OthersHandler(session, recv).Handle();
                        break;

                    case "otherslist":    //search other players friend list to see who is in his list?
                        new OthersListHandler(session, recv).Handle();
                        break;

                    case "uniquesearch":    //search a user with uniquenick and namespaceid
                        new UniqueSearchHandler(session, recv).Handle();
                        break;

                    default:
                        LogWriter.UnknownDataRecieved(message);
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                LogWriter.ToLog(e);
            }
        }
 protected override void DataBaseOperation(GPSPSession session)
 {
     _result[0] = SearchUniqueQuery.GetProfileWithUniquenickAndNamespace(_recv["uniquenick"], Convert.ToUInt16(_recv["namespaceid"]));
 }
Example #30
0
 protected virtual void ConstructResponse(GPSPSession session)
 {
 }