/* * 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 libsecondlife; namespace OpenSim.Framework { /// /// Information about a particular user known to the userserver /// public class UserProfileData { /// /// The ID value for this user /// private LLUUID _id; /// /// The last used Web_login_key /// private LLUUID webLoginKey; /// /// The first component of a users account name /// private string username; /// /// The second component of a users account name /// private string surname; /// /// 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 regionhandle of the users preffered home region. If multiple sims occupy the same spot, the grid may decide which region the user logs into /// public ulong HomeRegion { get { return Helpers.UIntsToLong((homeRegionX * (uint)Constants.RegionSize), (homeRegionY * (uint)Constants.RegionSize)); } set { homeRegionX = (uint) (value >> 40); homeRegionY = (((uint) (value)) >> 8); } } public LLUUID Id { get { return _id; } set { _id = value; } } public LLUUID WebLoginKey { get { return webLoginKey; } set { webLoginKey = value; } } public string FirstName { get { return username; } set { username = value; } } public string SurName { get { return surname; } set { surname = value; } } public string PasswordHash { get { return passwordHash; } set { passwordHash = value; } } public string PasswordSalt { get { return passwordSalt; } set { passwordSalt = value; } } public uint HomeRegionX { get { return homeRegionX; } set { homeRegionX = value; } } public uint HomeRegionY { get { return homeRegionY; } set { homeRegionY = value; } } public LLVector3 HomeLocation { get { return homeLocation; } set { homeLocation = value; } } public LLVector3 HomeLookAt { get { return homeLookAt; } set { homeLookAt = value; } } public int Created { get { return created; } set { created = value; } } public int LastLogin { get { return lastLogin; } set { lastLogin = value; } } public LLUUID RootInventoryFolderID { get { return rootInventoryFolderID; } set { rootInventoryFolderID = value; } } public string UserInventoryURI { get { return userInventoryURI; } set { userInventoryURI = value; } } public string UserAssetURI { get { return userAssetURI; } set { userAssetURI = value; } } public uint ProfileCanDoMask { get { return profileCanDoMask; } set { profileCanDoMask = value; } } public uint ProfileWantDoMask { get { return profileWantDoMask; } set { profileWantDoMask = value; } } public string ProfileAboutText { get { return profileAboutText; } set { profileAboutText = value; } } public string ProfileFirstText { get { return profileFirstText; } set { profileFirstText = value; } } public LLUUID ProfileImage { get { return profileImage; } set { profileImage = value; } } public LLUUID ProfileFirstImage { get { return profileFirstImage; } set { profileFirstImage = value; } } public UserAgentData CurrentAgent { get { return currentAgent; } set { currentAgent = value; } } private uint homeRegionX; private uint homeRegionY; /// /// The coordinates inside the region of the home location /// private LLVector3 homeLocation; /// /// Where the user will be looking when they rez. /// private LLVector3 homeLookAt; /// /// A UNIX Timestamp (seconds since epoch) for the users creation /// private int created; /// /// A UNIX Timestamp for the users last login date / time /// private int lastLogin; private LLUUID rootInventoryFolderID; /// /// A URI to the users inventory server, used for foreigners and large grids /// private string userInventoryURI = String.Empty; /// /// A URI to the users asset server, used for foreigners and large grids. /// private string userAssetURI = String.Empty; /// /// A uint mask containing the "I can do" fields of the users profile /// private uint profileCanDoMask; /// /// A uint mask containing the "I want to do" part of the users profile /// private uint profileWantDoMask; // Profile window "I want to" mask /// /// The about text listed in a users profile. /// private string profileAboutText = String.Empty; /// /// 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 LLUUID profileImage; /// /// The profile image for the users first life tab /// private LLUUID profileFirstImage; /// /// The users last registered agent (filled in on the user server) /// private UserAgentData currentAgent; } }