/* * 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 OpenSim 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 _created; /// /// The users last registered agent (filled in on the user server) /// private UserAgentData _currentAgent; /// /// The first component of a users account name /// private string _firstname; /// /// The coordinates inside the region of the home location /// private Vector3 _homeLocation; /// /// Where the user will be looking when they rez. /// private Vector3 _homeLookAt; private uint _homeRegionX; private uint _homeRegionY; /// /// The ID value for this user /// private UUID _id; /// /// A UNIX Timestamp for the users last login date / time /// private int _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 _passwordHash; /// /// The salt used for the users hash, should be 32 bytes or longer /// private string _passwordSalt; /// /// The about text listed in a users profile. /// private string _profileAboutText = String.Empty; /// /// A uint mask containing the "I can do" fields of the users profile /// private uint _profileCanDoMask; /// /// The profile image for the users first life tab /// private UUID _profileFirstImage; /// /// The first life about text listed in a users profile /// private string _profileFirstText = String.Empty; /// /// The profile image for an avatar stored on the asset server /// private UUID _profileImage; /// /// A uint mask containing the "I want to do" part of the users profile /// private uint _profileWantDoMask; // Profile window "I want to" mask private UUID _rootInventoryFolderID; /// /// The second component of a users account name /// private string _surname; /// /// A URI to the users asset server, used for foreigners and large grids. /// private string _userAssetURI = String.Empty; /// /// A URI to the users inventory server, used for foreigners and large grids /// private string _userInventoryURI = String.Empty; /// /// The last used Web_login_key /// private UUID _webLoginKey; // Data for estates and other goodies // to get away from per-machine configs a little // private int _userFlags; private int _godLevel; private string _customType; private UUID _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 Helpers.UIntsToLong((_homeRegionX * (uint) Constants.RegionSize), (_homeRegionY * (uint) Constants.RegionSize)); } set { _homeRegionX = (uint) (value >> 40); _homeRegionY = (((uint) (value)) >> 8); } } private UUID _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 _homeRegionID; } set { _homeRegionID = value; } } // Property wrappers public virtual UUID ID { get { return _id; } set { _id = value; } } public virtual UUID WebLoginKey { get { return _webLoginKey; } set { _webLoginKey = value; } } public virtual string FirstName { get { return _firstname; } set { _firstname = value; } } public virtual string SurName { get { return _surname; } set { _surname = value; } } public virtual string PasswordHash { get { return _passwordHash; } set { _passwordHash = value; } } public virtual string PasswordSalt { get { return _passwordSalt; } set { _passwordSalt = value; } } public virtual uint HomeRegionX { get { return _homeRegionX; } set { _homeRegionX = value; } } public virtual uint HomeRegionY { get { return _homeRegionY; } set { _homeRegionY = value; } } public virtual Vector3 HomeLocation { get { return _homeLocation; } set { _homeLocation = value; } } // for handy serialization public virtual float HomeLocationX { get { return _homeLocation.X; } set { _homeLocation.X = value; } } public virtual float HomeLocationY { get { return _homeLocation.Y; } set { _homeLocation.Y = value; } } public virtual float HomeLocationZ { get { return _homeLocation.Z; } set { _homeLocation.Z = value; } } public virtual Vector3 HomeLookAt { get { return _homeLookAt; } set { _homeLookAt = value; } } // for handy serialization public virtual float HomeLookAtX { get { return _homeLookAt.X; } set { _homeLookAt.X = value; } } public virtual float HomeLookAtY { get { return _homeLookAt.Y; } set { _homeLookAt.Y = value; } } public virtual float HomeLookAtZ { get { return _homeLookAt.Z; } set { _homeLookAt.Z = value; } } public virtual int Created { get { return _created; } set { _created = value; } } public virtual int LastLogin { get { return _lastLogin; } set { _lastLogin = value; } } public virtual UUID RootInventoryFolderID { get { return _rootInventoryFolderID; } set { _rootInventoryFolderID = value; } } public virtual string UserInventoryURI { get { return _userInventoryURI; } set { _userInventoryURI = value; } } public virtual string UserAssetURI { get { return _userAssetURI; } set { _userAssetURI = value; } } public virtual uint CanDoMask { get { return _profileCanDoMask; } set { _profileCanDoMask = value; } } public virtual uint WantDoMask { get { return _profileWantDoMask; } set { _profileWantDoMask = value; } } public virtual string AboutText { get { return _profileAboutText; } set { _profileAboutText = value; } } public virtual string FirstLifeAboutText { get { return _profileFirstText; } set { _profileFirstText = value; } } public virtual UUID Image { get { return _profileImage; } set { _profileImage = value; } } public virtual UUID FirstLifeImage { get { return _profileFirstImage; } set { _profileFirstImage = value; } } public virtual UserAgentData CurrentAgent { get { return _currentAgent; } set { _currentAgent = value; } } public virtual int UserFlags { get { return _userFlags; } set { _userFlags = value; } } public virtual int GodLevel { get { return _godLevel; } set { _godLevel = value; } } public virtual string CustomType { get { return _customType; } set { _customType = value; } } public virtual UUID Partner { get { return _partner; } set { _partner = value; } } } }