123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401 |
- /*
- * 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
- {
- /// <summary>
- /// Information about a particular user known to the userserver
- /// </summary>
- public class UserProfileData
- {
- /// <summary>
- /// A UNIX Timestamp (seconds since epoch) for the users creation
- /// </summary>
- private int m_created;
- /// <summary>
- /// The users last registered agent (filled in on the user server)
- /// </summary>
- private UserAgentData m_currentAgent;
- /// <summary>
- /// The first component of a users account name
- /// </summary>
- private string m_firstname;
- /// <summary>
- /// The coordinates inside the region of the home location
- /// </summary>
- private Vector3 m_homeLocation;
- /// <summary>
- /// Where the user will be looking when they rez.
- /// </summary>
- private Vector3 m_homeLookAt;
- private uint m_homeRegionX;
- private uint m_homeRegionY;
- /// <summary>
- /// The ID value for this user
- /// </summary>
- private UUID m_id;
- /// <summary>
- /// A UNIX Timestamp for the users last login date / time
- /// </summary>
- private int m_lastLogin;
- /// <summary>
- /// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt)
- /// </summary>
- /// <remarks>This is double MD5'd because the client sends an unsalted MD5 to the loginserver</remarks>
- private string m_passwordHash;
- /// <summary>
- /// The salt used for the users hash, should be 32 bytes or longer
- /// </summary>
- private string m_passwordSalt;
- /// <summary>
- /// The about text listed in a users profile.
- /// </summary>
- private string m_profileAboutText = String.Empty;
- /// <summary>
- /// A uint mask containing the "I can do" fields of the users profile
- /// </summary>
- private uint m_profileCanDoMask;
- /// <summary>
- /// The profile image for the users first life tab
- /// </summary>
- private UUID m_profileFirstImage;
- /// <summary>
- /// The first life about text listed in a users profile
- /// </summary>
- private string m_profileFirstText = String.Empty;
- /// <summary>
- /// The profile image for an avatar stored on the asset server
- /// </summary>
- private UUID m_profileImage;
- /// <summary>
- /// A uint mask containing the "I want to do" part of the users profile
- /// </summary>
- private uint m_profileWantDoMask; // Profile window "I want to" mask
- /// <summary>
- /// The profile url for an avatar
- /// </summary>
- private string m_profileUrl;
- /// <summary>
- /// The second component of a users account name
- /// </summary>
- private string m_surname;
- /// <summary>
- /// A valid email address for the account. Useful for password reset requests.
- /// </summary>
- private string m_email = String.Empty;
- /// <summary>
- /// A URI to the users asset server, used for foreigners and large grids.
- /// </summary>
- private string m_userAssetUri = String.Empty;
- /// <summary>
- /// A URI to the users inventory server, used for foreigners and large grids
- /// </summary>
- private string m_userInventoryUri = String.Empty;
- /// <summary>
- /// The last used Web_login_key
- /// </summary>
- 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;
- /// <summary>
- /// 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
- /// </summary>
- public virtual ulong HomeRegion
- {
- get
- {
- return Util.RegionWorldLocToHandle(Util.RegionToWorldLoc(m_homeRegionX), Util.RegionToWorldLoc(m_homeRegionY));
- // return Utils.UIntsToLong( m_homeRegionX * (uint)Constants.RegionSize, m_homeRegionY * (uint)Constants.RegionSize);
- }
- set
- {
- uint regionWorldLocX, regionWorldLocY;
- Util.RegionHandleToWorldLoc(value, out regionWorldLocX, out regionWorldLocY);
- m_homeRegionX = Util.WorldToRegionLoc(regionWorldLocX);
- m_homeRegionY = Util.WorldToRegionLoc(regionWorldLocY);
- // m_homeRegionX = (uint) (value >> 40);
- // m_homeRegionY = (((uint) (value)) >> 8);
- }
- }
- private UUID m_homeRegionId;
- /// <summary>
- /// 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.
- /// </summary>
- 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; }
- }
- /// <value>
- /// The concatentation of the various name components.
- /// </value>
- 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; }
- }
- }
- }
|