Ejemplo n.º 1
0
        public void HandleAgentLeaving(UUID agentID, UUID regionID, ulong regionHandle)
        {
            UserProfileData userProfile = m_userDataBaseService.GetUserProfile(agentID);

            if (userProfile != null)
            {
                if (userProfile.CurrentAgent.Region == regionID)
                {
                    UserAgentData userAgent = userProfile.CurrentAgent;
                    if (userAgent != null && userAgent.AgentOnline)
                    {
                        userAgent.AgentOnline = false;
                        userAgent.LogoutTime  = Util.UnixTimeSinceEpoch();
                        if (regionID != UUID.Zero)
                        {
                            userAgent.Region = regionID;
                        }
                        userAgent.Handle      = regionHandle;
                        userProfile.LastLogin = userAgent.LogoutTime;

                        m_userDataBaseService.CommitAgent(ref userProfile);

                        handlerLogOffUser = OnLogOffUser;
                        if (handlerLogOffUser != null)
                        {
                            handlerLogOffUser(agentID);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public XmlRpcResponse XmlRPCLogOffUserMethodUUID(XmlRpcRequest request, IPEndPoint remoteClient)
        {
            // Check IP Endpoint Access
            if (!TrustManager.Instance.IsTrustedPeer(remoteClient))
            {
                return(Util.CreateTrustManagerAccessDeniedResponse());
            }

            XmlRpcResponse response    = new XmlRpcResponse();
            Hashtable      requestData = (Hashtable)request.Params[0];

            if (requestData.Contains("avatar_uuid"))
            {
                try
                {
                    UUID    userUUID     = new UUID((string)requestData["avatar_uuid"]);
                    UUID    RegionID     = new UUID((string)requestData["region_uuid"]);
                    ulong   regionhandle = (ulong)Convert.ToInt64((string)requestData["region_handle"]);
                    Vector3 position     = new Vector3(
                        (float)Convert.ToDouble((string)requestData["region_pos_x"]),
                        (float)Convert.ToDouble((string)requestData["region_pos_y"]),
                        (float)Convert.ToDouble((string)requestData["region_pos_z"]));
                    Vector3 lookat = new Vector3(
                        (float)Convert.ToDouble((string)requestData["lookat_x"]),
                        (float)Convert.ToDouble((string)requestData["lookat_y"]),
                        (float)Convert.ToDouble((string)requestData["lookat_z"]));

                    handlerLogOffUser = OnLogOffUser;
                    if (handlerLogOffUser != null)
                    {
                        handlerLogOffUser(userUUID);
                    }

                    m_userDataBaseService.LogOffUser(userUUID, RegionID, regionhandle, position, lookat);
                }
                catch (FormatException)
                {
                    m_log.Warn("[LOGOUT]: Error in Logout XMLRPC Params");
                    return(response);
                }
            }
            else
            {
                return(Util.CreateUnknownUserErrorResponse());
            }

            return(response);
        }
Ejemplo n.º 3
0
        public void HandleAgentLeaving(UUID agentID, UUID regionID, ulong regionHandle)
        {
            UserProfileData userProfile = m_userDataBaseService.GetUserProfile(agentID);
            if (userProfile != null)
            {
                if (userProfile.CurrentAgent.Region == regionID)
                {
                    UserAgentData userAgent = userProfile.CurrentAgent;
                    if (userAgent != null && userAgent.AgentOnline)
                    {
                        userAgent.AgentOnline = false;
                        userAgent.LogoutTime = Util.UnixTimeSinceEpoch();
                        if (regionID != UUID.Zero)
                        {
                            userAgent.Region = regionID;
                        }
                        userAgent.Handle = regionHandle;
                        userProfile.LastLogin = userAgent.LogoutTime;

                        m_userDataBaseService.CommitAgent(ref userProfile);

                        handlerLogOffUser = OnLogOffUser;
                        if (handlerLogOffUser != null)
                            handlerLogOffUser(agentID);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public XmlRpcResponse XmlRPCLogOffUserMethodUUID(XmlRpcRequest request, IPEndPoint remoteClient)
        {
            XmlRpcResponse response = new XmlRpcResponse();
            Hashtable requestData = (Hashtable)request.Params[0];

            if (requestData.Contains("avatar_uuid"))
            {
                try
                {
                    UUID userUUID = new UUID((string)requestData["avatar_uuid"]);
                    UUID RegionID = new UUID((string)requestData["region_uuid"]);
                    ulong regionhandle = (ulong)Convert.ToInt64((string)requestData["region_handle"]);
                    Vector3 position = new Vector3(
                        (float)Convert.ToDecimal((string)requestData["region_pos_x"]),
                        (float)Convert.ToDecimal((string)requestData["region_pos_y"]),
                        (float)Convert.ToDecimal((string)requestData["region_pos_z"]));
                    Vector3 lookat = new Vector3(
                        (float)Convert.ToDecimal((string)requestData["lookat_x"]),
                        (float)Convert.ToDecimal((string)requestData["lookat_y"]),
                        (float)Convert.ToDecimal((string)requestData["lookat_z"]));

                    handlerLogOffUser = OnLogOffUser;
                    if (handlerLogOffUser != null)
                        handlerLogOffUser(userUUID);

                    m_userDataBaseService.LogOffUser(userUUID, RegionID, regionhandle, position, lookat);
                }
                catch (FormatException)
                {
                    m_log.Warn("[LOGOUT]: Error in Logout XMLRPC Params");
                    return response;
                }
            }
            else
            {
                return Util.CreateUnknownUserErrorResponse();
            }

            return response;
        }