예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="avatarId"></param>
        /// <param name="avatarDna"></param>
        /// <param name="updateAvatarDnaServiceFinishedCallback"></param>
        public static void UpdateAvatarDna(AvatarId avatarId, XmlDocument avatarDna, System.Action <XmlDocument> updateAvatarDnaServiceFinishedCallback)
        {
            mLogger.DebugFormat("UpdateAvatarDna called avatarId={0}", avatarId);
            WebServiceRequest updateAvatarDna = new WebServiceRequest(StateServerConfig.WebServicesBaseUrl, "Avatars", "UpdateAvatarDNA");

            updateAvatarDna.AddParam(kAvatarId, avatarId.ToString());
            updateAvatarDna.AddParam(kAvatarDna, avatarDna.OuterXml);
            updateAvatarDna.GetWebResponseAsync(delegate(XmlDocument xmlResponse)
            {
                mLogger.DebugFormat("UpdateAvatarDna responded avatarId={0}", avatarId);
                updateAvatarDnaServiceFinishedCallback(xmlResponse);
            });
        }
예제 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="serverAccount"></param>
        /// <param name="defaultAvatarId"></param>
        /// <param name="createAvatarForUserServiceCallback"></param>
        public static void CreateAvatarForUser(ServerAccount serverAccount, AvatarId defaultAvatarId, Action <XmlDocument> createAvatarForUserServiceCallback)
        {
            mLogger.DebugFormat("CreateAvatarForUser called accountId={0} defaultAvatarId={1}", serverAccount.AccountId, defaultAvatarId);
            WebServiceRequest getAvatarList = new WebServiceRequest(StateServerConfig.WebServicesBaseUrl, "Avatars", "CreateAvatar");

            getAvatarList.AddParam(kAccountId, serverAccount.AccountId.ToString());
            getAvatarList.AddParam(kDefaultAvatarId, defaultAvatarId.ToString());
            getAvatarList.GetWebResponseAsync(delegate(XmlDocument xmlResponse)
            {
                mLogger.DebugFormat("CreateAvatarForUser responded accountId={0} defaultAvatarId={1}", serverAccount.AccountId, defaultAvatarId);
                createAvatarForUserServiceCallback(xmlResponse);
            });
        }
예제 #3
0
        private void RecvChat(Message message)
        {
            string chatText = (string)message.Data[0];

            if (chatText.Length > mMaxChatLength)
            {
                // Either the client is hacked or we have a bug.  Ideally we would boot them here.
                mLogger.Warn("Client sent an excessively large chat string.  Dropping message.  AvID: " + mAvatarId.ToString());
                return;
            }

            // Filter chat and broadcast the message back out
            string filteredChat = TextFilter.Instance.ReplaceNaughtyWords(chatText);

            if (filteredChat != null)
            {
                message.Data[0] = filteredChat;
            }

            ChatLog.LogChatResult(mAvatarId.ToString(), "", chatText, filteredChat);

            BroadcastMessage(message);
        }
예제 #4
0
        public void CreateNewAvatarForAccount(Guid sessionId, ZoneId zoneId, ServerAccount serverAccount, AvatarId defaultAvatarId, System.Action <bool> createAvatarFinishedCallback)
        {
            Action <XmlDocument> createAvatarServiceCallback = delegate(XmlDocument xmlResponse)
            {
                XmlNode avatarXmlNode = xmlResponse.SelectSingleNode("Avatars/Avatar");

                if (avatarXmlNode != null)
                {
                    Metrics.Log(LogGlobals.CATEGORY_ACCOUNT, LogGlobals.EVENT_AVATAR_CREATED, LogGlobals.AVATAR_ID_LABEL, defaultAvatarId.ToString(), serverAccount.AccountId.ToString());
                    GetAvatarServiceResponse(avatarXmlNode, serverAccount.Nickname, sessionId, zoneId, createAvatarFinishedCallback);
                }
                else
                {
                    StateServerAssert.Assert(new System.Exception("Error: Could not create avatar: " + xmlResponse.InnerText));
                    createAvatarFinishedCallback(false);
                }
            };

            AvatarManagerServiceAPI.CreateAvatarForUser(serverAccount, defaultAvatarId, createAvatarServiceCallback);
        }
예제 #5
0
        /// <summary>
        /// Handle login request from client
        /// </summary>
        /// <param name="loginMessage"></param>
        private void HandleLoginRequest(Message loginMessage, Guid senderId)
        {
            Guid     sessionId    = senderId;
            string   fbAccountId  = CheckType.TryAssignType <string>(loginMessage.Data[0]);
            string   fbSessionKey = CheckType.TryAssignType <string>(loginMessage.Data[1]);
            string   nickName     = CheckType.TryAssignType <string>(loginMessage.Data[2]);
            string   firstName    = CheckType.TryAssignType <string>(loginMessage.Data[3]);
            string   lastName     = CheckType.TryAssignType <string>(loginMessage.Data[4]);
            string   campaignId   = CheckType.TryAssignType <string>(loginMessage.Data[5]);
            string   referrerId   = CheckType.TryAssignType <string>(loginMessage.Data[6]);
            AvatarId avatarId     = CheckType.TryAssignType <AvatarId>(loginMessage.Data[7]);

            Stopwatch loginTimer = new Stopwatch();

            loginTimer.Elapsed.Add(loginMessage.TimeSinceMessageWasCreated);
            loginTimer.Start();

            // TODO: Move the ipaddress handling within the extension
            string userIpAddress = mServerStateMachine.ServerMessageProcessor.ServerReflector.GetClientIPAddress(senderId);

            mLogger.Info(String.Format("HandleLoginRequest | sessionId={0} | fbAcctId={1} | fbSessionKey={2} | nickname={3} | firstname={4} | lastname={5} | avatarId={6} | ip={7}",
                                       sessionId, fbAccountId, fbSessionKey, nickName, firstName, lastName, avatarId.ToString(), userIpAddress));

            Action <ServerAccount> getAccountForUserCallback = delegate(ServerAccount serverAccount)
            {
                mLogger.Debug("GetAccountForUserCallback");

                try
                {
                    if (serverAccount != null)
                    {
                        mServerStateMachine.ProcessUserLogin(sessionId, serverAccount, fbSessionKey, avatarId, loginTimer);
                    }
                    else
                    {
                        mLogger.Warn("LoginFailed|sessionId=" + sessionId);
                        Message loginFailMessage = new Message(MessageType.Connect, MessageSubType.InvalidLogin, new List <object>());
                        mServerStateMachine.SendMessageToReflector(loginFailMessage, sessionId);
                    }
                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.StackTrace currentStackTrace = new System.Diagnostics.StackTrace();
                    mLogger.Error("Got an exception in getAccountForUserCallback", ex);
                }
            };

            mServerStateMachine.UsersManager.GetAccountForUser(fbAccountId, fbSessionKey, nickName, firstName, lastName, userIpAddress, campaignId, referrerId, getAccountForUserCallback);
        }