/* * 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 /// public LLUUID UUID; /// /// The last used Web_login_key /// public LLUUID webLoginKey; /// /// The first component of a users account name /// public string username; /// /// The second component of a users account name /// public 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 public string passwordHash; /// /// The salt used for the users hash, should be 32 bytes or longer /// public 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 uint homeRegionX; public uint homeRegionY; /// /// The coordinates inside the region of the home location /// public LLVector3 homeLocation; /// /// Where the user will be looking when they rez. /// public LLVector3 homeLookAt; /// /// A UNIX Timestamp (seconds since epoch) for the users creation /// public int created; /// /// A UNIX Timestamp for the users last login date / time /// public int lastLogin; public LLUUID rootInventoryFolderID; /// /// A URI to the users inventory server, used for foreigners and large grids /// public string userInventoryURI = String.Empty; /// /// A URI to the users asset server, used for foreigners and large grids. /// public string userAssetURI = String.Empty; /// /// A uint mask containing the "I can do" fields of the users profile /// public uint profileCanDoMask; /// /// A uint mask containing the "I want to do" part of the users profile /// public uint profileWantDoMask; // Profile window "I want to" mask /// /// The about text listed in a users profile. /// public string profileAboutText = String.Empty; /// /// The first life about text listed in a users profile /// public string profileFirstText = String.Empty; /// /// The profile image for an avatar stored on the asset server /// public LLUUID profileImage; /// /// The profile image for the users first life tab /// public LLUUID profileFirstImage; /// /// The users last registered agent (filled in on the user server) /// public UserAgentData currentAgent; /// /// Authentication address (used in rex mode) /// public string authenticationAddr; } /// /// Minimal User Data required to service the AvatarPickerReply /// //public class AvatarPickerAvatar //{ //public LLUUID AvatarID; //public string firstName; //public string lastName; //public AvatarPickerAvatar() //{ //} //} /// /// Information about a users session /// public class UserAgentData { /// /// The UUID of the users avatar (not the agent!) /// public LLUUID UUID; /// /// The IP address of the user /// public string agentIP = String.Empty; /// /// The port of the user /// public uint agentPort; /// /// Is the user online? /// public bool agentOnline; /// /// The session ID for the user (also the agent ID) /// public LLUUID sessionID; /// /// The "secure" session ID for the user /// /// Not very secure. Dont rely on it for anything more than Linden Lab does. public LLUUID secureSessionID; /// /// The region the user logged into initially /// public LLUUID regionID; /// /// A unix timestamp from when the user logged in /// public int loginTime; /// /// When this agent expired and logged out, 0 if still online /// public int logoutTime; /// /// Current region the user is logged into /// public LLUUID currentRegion; /// /// Region handle of the current region the user is in /// public ulong currentHandle; /// /// The position of the user within the region /// public LLVector3 currentPos; } }