/* * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the OpenSimulator Project nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ using System; using OpenMetaverse; namespace OpenSim.Framework { /// /// Information about a particular user known to the userserver /// public class UserProfileData { /// /// A UNIX Timestamp (seconds since epoch) for the users creation /// private int m_created; /// /// The users last registered agent (filled in on the user server) /// private UserAgentData m_currentAgent; /// /// The first component of a users account name /// private string m_firstname; /// /// The coordinates inside the region of the home location /// private Vector3 m_homeLocation; /// /// Where the user will be looking when they rez. /// private Vector3 m_homeLookAt; private uint m_homeRegionX; private uint m_homeRegionY; /// /// The ID value for this user /// private UUID m_id; /// /// A UNIX Timestamp for the users last login date / time /// private int m_lastLogin; /// /// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt) /// /// This is double MD5'd because the client sends an unsalted MD5 to the loginserver private string m_passwordHash; /// /// The salt used for the users hash, should be 32 bytes or longer /// private string m_passwordSalt; /// /// The about text listed in a users profile. /// private string m_profileAboutText = String.Empty; /// /// A uint mask containing the "I can do" fields of the users profile /// private uint m_profileCanDoMask; /// /// The profile image for the users first life tab /// private UUID m_profileFirstImage; /// /// The first life about text listed in a users profile /// private string m_profileFirstText = String.Empty; /// /// The profile image for an avatar stored on the asset server /// private UUID m_profileImage; /// /// A uint mask containing the "I want to do" part of the users profile /// private uint m_profileWantDoMask; // Profile window "I want to" mask /// /// The profile url for an avatar /// private string m_profileUrl; /// /// The second component of a users account name /// private string m_surname; /// /// A valid email address for the account. Useful for password reset requests. /// private string m_email = String.Empty; /// /// A URI to the users asset server, used for foreigners and large grids. /// private string m_userAssetUri = String.Empty; /// /// A URI to the users inventory server, used for foreigners and large grids /// private string m_userInventoryUri = String.Empty; /// /// The last used Web_login_key /// private UUID m_webLoginKey; // Data for estates and other goodies // to get away from per-machine configs a little // private int m_userFlags; private int m_godLevel; private string m_customType; private UUID m_partner; /// /// The regionhandle of the users preferred home region. If /// multiple sims occupy the same spot, the grid may decide /// which region the user logs into /// public virtual ulong HomeRegion { get { return Utils.UIntsToLong( m_homeRegionX * (uint)Constants.RegionSize, m_homeRegionY * (uint)Constants.RegionSize); } set { m_homeRegionX = (uint) (value >> 40); m_homeRegionY = (((uint) (value)) >> 8); } } private UUID m_homeRegionId; /// /// The regionID of the users home region. This is unique; /// even if the position of the region changes within the /// grid, this will refer to the same region. /// public UUID HomeRegionID { get { return m_homeRegionId; } set { m_homeRegionId = value; } } // Property wrappers public UUID ID { get { return m_id; } set { m_id = value; } } public UUID WebLoginKey { get { return m_webLoginKey; } set { m_webLoginKey = value; } } public string FirstName { get { return m_firstname; } set { m_firstname = value; } } public string SurName { get { return m_surname; } set { m_surname = value; } } /// /// The concatentation of the various name components. /// public string Name { get { return String.Format("{0} {1}", m_firstname, m_surname); } } public string Email { get { return m_email; } set { m_email = value; } } public string PasswordHash { get { return m_passwordHash; } set { m_passwordHash = value; } } public string PasswordSalt { get { return m_passwordSalt; } set { m_passwordSalt = value; } } public uint HomeRegionX { get { return m_homeRegionX; } set { m_homeRegionX = value; } } public uint HomeRegionY { get { return m_homeRegionY; } set { m_homeRegionY = value; } } public Vector3 HomeLocation { get { return m_homeLocation; } set { m_homeLocation = value; } } // for handy serialization public float HomeLocationX { get { return m_homeLocation.X; } set { m_homeLocation.X = value; } } public float HomeLocationY { get { return m_homeLocation.Y; } set { m_homeLocation.Y = value; } } public float HomeLocationZ { get { return m_homeLocation.Z; } set { m_homeLocation.Z = value; } } public Vector3 HomeLookAt { get { return m_homeLookAt; } set { m_homeLookAt = value; } } // for handy serialization public float HomeLookAtX { get { return m_homeLookAt.X; } set { m_homeLookAt.X = value; } } public float HomeLookAtY { get { return m_homeLookAt.Y; } set { m_homeLookAt.Y = value; } } public float HomeLookAtZ { get { return m_homeLookAt.Z; } set { m_homeLookAt.Z = value; } } public int Created { get { return m_created; } set { m_created = value; } } public int LastLogin { get { return m_lastLogin; } set { m_lastLogin = value; } } public string UserInventoryURI { get { return m_userInventoryUri; } set { m_userInventoryUri = value; } } public string UserAssetURI { get { return m_userAssetUri; } set { m_userAssetUri = value; } } public uint CanDoMask { get { return m_profileCanDoMask; } set { m_profileCanDoMask = value; } } public uint WantDoMask { get { return m_profileWantDoMask; } set { m_profileWantDoMask = value; } } public string AboutText { get { return m_profileAboutText; } set { m_profileAboutText = value; } } public string FirstLifeAboutText { get { return m_profileFirstText; } set { m_profileFirstText = value; } } public string ProfileUrl { get { return m_profileUrl; } set { m_profileUrl = value; } } public UUID Image { get { return m_profileImage; } set { m_profileImage = value; } } public UUID FirstLifeImage { get { return m_profileFirstImage; } set { m_profileFirstImage = value; } } public UserAgentData CurrentAgent { get { return m_currentAgent; } set { m_currentAgent = value; } } public int UserFlags { get { return m_userFlags; } set { m_userFlags = value; } } public int GodLevel { get { return m_godLevel; } set { m_godLevel = value; } } public string CustomType { get { return m_customType; } set { m_customType = value; } } public UUID Partner { get { return m_partner; } set { m_partner = value; } } } }