From 5a6552120395611e66a88821ce848a06c9ea4720 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Fri, 5 Oct 2007 10:14:42 +0000 Subject: == The "right name and place" commit == * Moved InventoryData to Framework.Types/InventoryItemBase.cs * Moved UserData to Framework.Interfaces/IUserData.cs * Moved UserProfileData to Framework/Types/UserProfileData.cs * Deleted ass-backwards Framework dependency on Framework.Data (now it's the other way round) * Changed some namespaces to reflect file structure --- .../Communications/Cache/AssetTransactions.cs | 2 +- .../Communications/Cache/CachedUserInfo.cs | 18 +- .../Communications/Cache/InventoryFolder.cs | 1 - .../Communications/Cache/LibraryRootFolder.cs | 2 +- .../Communications/Cache/UserProfileCache.cs | 2 +- .../Framework/Communications/Capabilities/Caps.cs | 1 - .../Communications/CommunicationsManager.cs | 1 - .../Framework/Communications/IInventoryServices.cs | 2 +- .../Communications/InventoryServiceBase.cs | 2 +- OpenSim/Framework/Communications/LoginService.cs | 2 +- .../Framework/Communications/UserManagerBase.cs | 1 + OpenSim/Framework/Data.DB4o/DB4oManager.cs | 1 + OpenSim/Framework/Data.DB4o/DB4oUserData.cs | 1 + OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs | 1 + OpenSim/Framework/Data.MySQL/MySQLManager.cs | 1 + OpenSim/Framework/Data.MySQL/MySQLUserData.cs | 1 + OpenSim/Framework/Data.SQLite/SQLiteUserData.cs | 1 + OpenSim/Framework/Data/InventoryData.cs | 222 --------------------- OpenSim/Framework/Data/UserData.cs | 134 ------------- OpenSim/Framework/Data/UserProfileData.cs | 192 ------------------ OpenSim/Framework/General/Interfaces/IClientAPI.cs | 1 - OpenSim/Framework/General/Interfaces/IUserData.cs | 135 +++++++++++++ .../Framework/General/Interfaces/IUserService.cs | 2 +- .../Framework/General/Types/InventoryItemBase.cs | 222 +++++++++++++++++++++ OpenSim/Framework/General/Types/UserProfileData.cs | 191 ++++++++++++++++++ 25 files changed, 566 insertions(+), 573 deletions(-) delete mode 100644 OpenSim/Framework/Data/InventoryData.cs delete mode 100644 OpenSim/Framework/Data/UserData.cs delete mode 100644 OpenSim/Framework/Data/UserProfileData.cs create mode 100644 OpenSim/Framework/General/Interfaces/IUserData.cs create mode 100644 OpenSim/Framework/General/Types/InventoryItemBase.cs create mode 100644 OpenSim/Framework/General/Types/UserProfileData.cs (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/Communications/Cache/AssetTransactions.cs b/OpenSim/Framework/Communications/Cache/AssetTransactions.cs index d0507d0..51fc462 100644 --- a/OpenSim/Framework/Communications/Cache/AssetTransactions.cs +++ b/OpenSim/Framework/Communications/Cache/AssetTransactions.cs @@ -32,10 +32,10 @@ using System.Text; using System.IO; using libsecondlife; using libsecondlife.Packets; +using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Interfaces; using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; -using OpenSim.Framework.Data; using OpenSim.Region.Capabilities; using OpenSim.Framework.Servers; diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index 99dc45a..b1432ff 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs @@ -25,22 +25,15 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text; -using System.IO; using libsecondlife; -using OpenSim.Framework.Interfaces; using OpenSim.Framework.Types; -using OpenSim.Framework.Data; -using OpenSim.Framework.Utilities; +using InventoryFolder=OpenSim.Framework.Communications.Caches.InventoryFolder; -namespace OpenSim.Framework.Communications.Caches +namespace OpenSim.Framework.Communications.Cache { public class CachedUserInfo { - private CommunicationsManager m_parentCommsManager; + private readonly CommunicationsManager m_parentCommsManager; // Fields public InventoryFolder RootFolder = null; public UserProfileData UserProfile = null; @@ -127,7 +120,4 @@ namespace OpenSim.Framework.Communications.Caches return result; } } - - -} - +} \ No newline at end of file diff --git a/OpenSim/Framework/Communications/Cache/InventoryFolder.cs b/OpenSim/Framework/Communications/Cache/InventoryFolder.cs index 885cffc..fbe1bd0 100644 --- a/OpenSim/Framework/Communications/Cache/InventoryFolder.cs +++ b/OpenSim/Framework/Communications/Cache/InventoryFolder.cs @@ -32,7 +32,6 @@ using System.Text; using System.IO; using libsecondlife; using OpenSim.Framework.Interfaces; -using OpenSim.Framework.Data; using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; diff --git a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs index deef028..38fad68 100644 --- a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs +++ b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs @@ -3,8 +3,8 @@ using System.IO; using System.Collections.Generic; using System.Text; using libsecondlife; +using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; -using OpenSim.Framework.Data; using Nini.Config; namespace OpenSim.Framework.Communications.Caches diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCache.cs b/OpenSim/Framework/Communications/Cache/UserProfileCache.cs index 390b938..9e32ea5 100644 --- a/OpenSim/Framework/Communications/Cache/UserProfileCache.cs +++ b/OpenSim/Framework/Communications/Cache/UserProfileCache.cs @@ -31,10 +31,10 @@ using System.Collections.Generic; using System.Text; using System.IO; using libsecondlife; +using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Interfaces; using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; -using OpenSim.Framework.Data; namespace OpenSim.Framework.Communications.Caches { diff --git a/OpenSim/Framework/Communications/Capabilities/Caps.cs b/OpenSim/Framework/Communications/Capabilities/Caps.cs index 59c6d7c..4ed59c7 100644 --- a/OpenSim/Framework/Communications/Capabilities/Caps.cs +++ b/OpenSim/Framework/Communications/Capabilities/Caps.cs @@ -35,7 +35,6 @@ using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Servers; using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; -using OpenSim.Framework.Data; namespace OpenSim.Region.Capabilities { diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs index e266b90..5af07f7 100644 --- a/OpenSim/Framework/Communications/CommunicationsManager.cs +++ b/OpenSim/Framework/Communications/CommunicationsManager.cs @@ -29,7 +29,6 @@ using System; using libsecondlife; using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Caches; -using OpenSim.Framework.Data; using OpenSim.Framework.Interfaces; using OpenSim.Framework.Servers; using OpenSim.Framework.Types; diff --git a/OpenSim/Framework/Communications/IInventoryServices.cs b/OpenSim/Framework/Communications/IInventoryServices.cs index 80c2e64..980bb27 100644 --- a/OpenSim/Framework/Communications/IInventoryServices.cs +++ b/OpenSim/Framework/Communications/IInventoryServices.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Text; -using OpenSim.Framework.Data; using libsecondlife; using OpenSim.Framework.Communications.Caches; +using OpenSim.Framework.Types; using InventoryFolder = OpenSim.Framework.Communications.Caches.InventoryFolder; namespace OpenSim.Framework.Communications diff --git a/OpenSim/Framework/Communications/InventoryServiceBase.cs b/OpenSim/Framework/Communications/InventoryServiceBase.cs index da7a0ce..7536429 100644 --- a/OpenSim/Framework/Communications/InventoryServiceBase.cs +++ b/OpenSim/Framework/Communications/InventoryServiceBase.cs @@ -4,7 +4,7 @@ using System.Reflection; using libsecondlife; using OpenSim.Framework.Communications; using OpenSim.Framework.Console; -using OpenSim.Framework.Data; +using OpenSim.Framework.Types; using InventoryFolder=OpenSim.Framework.Communications.Caches.InventoryFolder; namespace OpenSim.Framework.Communications diff --git a/OpenSim/Framework/Communications/LoginService.cs b/OpenSim/Framework/Communications/LoginService.cs index 8e7cf80..06abb69 100644 --- a/OpenSim/Framework/Communications/LoginService.cs +++ b/OpenSim/Framework/Communications/LoginService.cs @@ -6,9 +6,9 @@ using System.Security.Cryptography; using libsecondlife; using Nwc.XmlRpc; using OpenSim.Framework.Console; -using OpenSim.Framework.Data; using OpenSim.Framework.Interfaces; using OpenSim.Framework.Inventory; +using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; using OpenSim.Framework.Configuration; diff --git a/OpenSim/Framework/Communications/UserManagerBase.cs b/OpenSim/Framework/Communications/UserManagerBase.cs index bbda054..56ed959 100644 --- a/OpenSim/Framework/Communications/UserManagerBase.cs +++ b/OpenSim/Framework/Communications/UserManagerBase.cs @@ -37,6 +37,7 @@ using OpenSim.Framework.Configuration; using OpenSim.Framework.Console; using OpenSim.Framework.Data; using OpenSim.Framework.Interfaces; +using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; namespace OpenSim.Framework.UserManagement diff --git a/OpenSim/Framework/Data.DB4o/DB4oManager.cs b/OpenSim/Framework/Data.DB4o/DB4oManager.cs index 0ab7aec..224b842 100644 --- a/OpenSim/Framework/Data.DB4o/DB4oManager.cs +++ b/OpenSim/Framework/Data.DB4o/DB4oManager.cs @@ -29,6 +29,7 @@ using System; using System.Collections.Generic; using Db4objects.Db4o; using libsecondlife; +using OpenSim.Framework.Types; namespace OpenSim.Framework.Data.DB4o { diff --git a/OpenSim/Framework/Data.DB4o/DB4oUserData.cs b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs index 2ab1488..38f1b55 100644 --- a/OpenSim/Framework/Data.DB4o/DB4oUserData.cs +++ b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs @@ -28,6 +28,7 @@ using System; using System.IO; using libsecondlife; +using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; namespace OpenSim.Framework.Data.DB4o diff --git a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs index 5009d9e..f773da4 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs @@ -29,6 +29,7 @@ using System; using System.Collections.Generic; using System.Data; using libsecondlife; +using OpenSim.Framework.Types; namespace OpenSim.Framework.Data.MySQL { diff --git a/OpenSim/Framework/Data.MySQL/MySQLManager.cs b/OpenSim/Framework/Data.MySQL/MySQLManager.cs index 5037f98..a83ee45 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLManager.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLManager.cs @@ -30,6 +30,7 @@ using System.Collections.Generic; using System.Data; using libsecondlife; using MySql.Data.MySqlClient; +using OpenSim.Framework.Types; namespace OpenSim.Framework.Data.MySQL { diff --git a/OpenSim/Framework/Data.MySQL/MySQLUserData.cs b/OpenSim/Framework/Data.MySQL/MySQLUserData.cs index e746717..301550f 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLUserData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLUserData.cs @@ -29,6 +29,7 @@ using System; using System.Collections.Generic; using System.Data; using libsecondlife; +using OpenSim.Framework.Types; namespace OpenSim.Framework.Data.MySQL { diff --git a/OpenSim/Framework/Data.SQLite/SQLiteUserData.cs b/OpenSim/Framework/Data.SQLite/SQLiteUserData.cs index 3a13ecc..c7b7659 100644 --- a/OpenSim/Framework/Data.SQLite/SQLiteUserData.cs +++ b/OpenSim/Framework/Data.SQLite/SQLiteUserData.cs @@ -28,6 +28,7 @@ using System; using System.IO; using libsecondlife; +using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; using System.Data; using System.Data.SqlTypes; diff --git a/OpenSim/Framework/Data/InventoryData.cs b/OpenSim/Framework/Data/InventoryData.cs deleted file mode 100644 index 2df26e1..0000000 --- a/OpenSim/Framework/Data/InventoryData.cs +++ /dev/null @@ -1,222 +0,0 @@ -/* -* 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.Collections.Generic; -using libsecondlife; - -namespace OpenSim.Framework.Data -{ - /// <summary> - /// Inventory Item - contains all the properties associated with an individual inventory piece. - /// </summary> - public class InventoryItemBase - { - /// <summary> - /// A UUID containing the ID for the inventory item itself - /// </summary> - public LLUUID inventoryID; - /// <summary> - /// The UUID of the associated asset on the asset server - /// </summary> - public LLUUID assetID; - /// <summary> - /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc) - /// </summary> - public int assetType; - /// <summary> - /// The type of inventory item. (Can be slightly different to the asset type - /// </summary> - public int invType; - /// <summary> - /// The folder this item is contained in - /// </summary> - public LLUUID parentFolderID; - /// <summary> - /// The owner of this inventory item - /// </summary> - public LLUUID avatarID; - /// <summary> - /// The creator of this item - /// </summary> - public LLUUID creatorsID; - /// <summary> - /// The name of the inventory item (must be less than 64 characters) - /// </summary> - public string inventoryName; - /// <summary> - /// The description of the inventory item (must be less than 64 characters) - /// </summary> - public string inventoryDescription; - /// <summary> - /// A mask containing the permissions for the next owner (cannot be enforced) - /// </summary> - public uint inventoryNextPermissions; - /// <summary> - /// A mask containing permissions for the current owner (cannot be enforced) - /// </summary> - public uint inventoryCurrentPermissions; - /// <summary> - /// - /// </summary> - public uint inventoryBasePermissions; - /// <summary> - /// - /// </summary> - public uint inventoryEveryOnePermissions; - } - - /// <summary> - /// A Class for folders which contain users inventory - /// </summary> - public class InventoryFolderBase - { - /// <summary> - /// The name of the folder (64 characters or less) - /// </summary> - public string name; - /// <summary> - /// The agent who's inventory this is contained by - /// </summary> - public LLUUID agentID; - /// <summary> - /// The folder this folder is contained in - /// </summary> - public LLUUID parentID; - /// <summary> - /// The UUID for this folder - /// </summary> - public LLUUID folderID; - /// <summary> - /// Tyep of Items normally stored in this folder - /// </summary> - public short type; - /// <summary> - /// - /// </summary> - public ushort version; - } - - /// <summary> - /// An interface for accessing inventory data from a storage server - /// </summary> - public interface IInventoryData - { - /// <summary> - /// Initialises the interface - /// </summary> - void Initialise(); - - /// <summary> - /// Closes the interface - /// </summary> - void Close(); - - /// <summary> - /// The plugin being loaded - /// </summary> - /// <returns>A string containing the plugin name</returns> - string getName(); - - /// <summary> - /// The plugins version - /// </summary> - /// <returns>A string containing the plugin version</returns> - string getVersion(); - - /// <summary> - /// Returns a list of inventory items contained within the specified folder - /// </summary> - /// <param name="folderID">The UUID of the target folder</param> - /// <returns>A List of InventoryItemBase items</returns> - List<InventoryItemBase> getInventoryInFolder(LLUUID folderID); - - /// <summary> - /// Returns a list of the root folders within a users inventory - /// </summary> - /// <param name="user">The user whos inventory is to be searched</param> - /// <returns>A list of folder objects</returns> - List<InventoryFolderBase> getUserRootFolders(LLUUID user); - - /// <summary> - /// Returns the users inventory root folder. - /// </summary> - /// <param name="user">The UUID of the user who is having inventory being returned</param> - /// <returns>Root inventory folder</returns> - InventoryFolderBase getUserRootFolder(LLUUID user); - - /// <summary> - /// Returns a list of inventory folders contained in the folder 'parentID' - /// </summary> - /// <param name="parentID">The folder to get subfolders for</param> - /// <returns>A list of inventory folders</returns> - List<InventoryFolderBase> getInventoryFolders(LLUUID parentID); - - /// <summary> - /// Returns an inventory item by its UUID - /// </summary> - /// <param name="item">The UUID of the item to be returned</param> - /// <returns>A class containing item information</returns> - InventoryItemBase getInventoryItem(LLUUID item); - - /// <summary> - /// Returns a specified inventory folder by its UUID - /// </summary> - /// <param name="folder">The UUID of the folder to be returned</param> - /// <returns>A class containing folder information</returns> - InventoryFolderBase getInventoryFolder(LLUUID folder); - - /// <summary> - /// Creates a new inventory item based on item - /// </summary> - /// <param name="item">The item to be created</param> - void addInventoryItem(InventoryItemBase item); - - /// <summary> - /// Updates an inventory item with item (updates based on ID) - /// </summary> - /// <param name="item">The updated item</param> - void updateInventoryItem(InventoryItemBase item); - - /// <summary> - /// - /// </summary> - /// <param name="item"></param> - void deleteInventoryItem(InventoryItemBase item); - - /// <summary> - /// Adds a new folder specified by folder - /// </summary> - /// <param name="folder">The inventory folder</param> - void addInventoryFolder(InventoryFolderBase folder); - - /// <summary> - /// Updates a folder based on its ID with folder - /// </summary> - /// <param name="folder">The inventory folder</param> - void updateInventoryFolder(InventoryFolderBase folder); - } -} diff --git a/OpenSim/Framework/Data/UserData.cs b/OpenSim/Framework/Data/UserData.cs deleted file mode 100644 index 13bdf17..0000000 --- a/OpenSim/Framework/Data/UserData.cs +++ /dev/null @@ -1,134 +0,0 @@ -/* -* 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 libsecondlife; - -namespace OpenSim.Framework.Data -{ - /// <summary> - /// An interface for connecting to user storage servers. - /// </summary> - public interface IUserData - { - /// <summary> - /// Returns a user profile from a database via their UUID - /// </summary> - /// <param name="user">The accounts UUID</param> - /// <returns>The user data profile</returns> - UserProfileData GetUserByUUID(LLUUID user); - - /// <summary> - /// Returns a users profile by searching their username - /// </summary> - /// <param name="name">The users username</param> - /// <returns>The user data profile</returns> - UserProfileData GetUserByName(string name); - - /// <summary> - /// Returns a users profile by searching their username parts - /// </summary> - /// <param name="fname">Account firstname</param> - /// <param name="lname">Account lastname</param> - /// <returns>The user data profile</returns> - UserProfileData GetUserByName(string fname, string lname); - - /// <summary> - /// Returns the current agent for a user searching by it's UUID - /// </summary> - /// <param name="user">The users UUID</param> - /// <returns>The current agent session</returns> - UserAgentData GetAgentByUUID(LLUUID user); - - /// <summary> - /// Returns the current session agent for a user searching by username - /// </summary> - /// <param name="name">The users account name</param> - /// <returns>The current agent session</returns> - UserAgentData GetAgentByName(string name); - - /// <summary> - /// Returns the current session agent for a user searching by username parts - /// </summary> - /// <param name="fname">The users first account name</param> - /// <param name="lname">The users account surname</param> - /// <returns>The current agent session</returns> - UserAgentData GetAgentByName(string fname, string lname); - - /// <summary> - /// Adds a new User profile to the database - /// </summary> - /// <param name="user">UserProfile to add</param> - void AddNewUserProfile(UserProfileData user); - - /// <summary> - /// Updates an existing user profile - /// </summary> - /// <param name="user">UserProfile to update</param> - bool UpdateUserProfile(UserProfileData user); - - /// <summary> - /// Adds a new agent to the database - /// </summary> - /// <param name="agent">The agent to add</param> - void AddNewUserAgent(UserAgentData agent); - - /// <summary> - /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES) - /// </summary> - /// <param name="from">The account to transfer from</param> - /// <param name="to">The account to transfer to</param> - /// <param name="amount">The amount to transfer</param> - /// <returns>Successful?</returns> - bool MoneyTransferRequest(LLUUID from, LLUUID to, uint amount); - - /// <summary> - /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account. - /// </summary> - /// <param name="from">User to transfer from</param> - /// <param name="to">User to transfer to</param> - /// <param name="inventory">Specified inventory item</param> - /// <returns>Successful?</returns> - bool InventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory); - - /// <summary> - /// Returns the plugin version - /// </summary> - /// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns> - string GetVersion(); - - /// <summary> - /// Returns the plugin name - /// </summary> - /// <returns>Plugin name, eg MySQL User Provider</returns> - string getName(); - - /// <summary> - /// Initialises the plugin (artificial constructor) - /// </summary> - void Initialise(); - } -} diff --git a/OpenSim/Framework/Data/UserProfileData.cs b/OpenSim/Framework/Data/UserProfileData.cs deleted file mode 100644 index 4fafe3f..0000000 --- a/OpenSim/Framework/Data/UserProfileData.cs +++ /dev/null @@ -1,192 +0,0 @@ -/* -* 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.Data -{ - /// <summary> - /// Information about a particular user known to the userserver - /// </summary> - public class UserProfileData - { - /// <summary> - /// The ID value for this user - /// </summary> - public LLUUID UUID; - - /// <summary> - /// The first component of a users account name - /// </summary> - public string username; - /// <summary> - /// The second component of a users account name - /// </summary> - public string surname; - - /// <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> - public string passwordHash; - /// <summary> - /// The salt used for the users hash, should be 32 bytes or longer - /// </summary> - public string passwordSalt; - - /// <summary> - /// 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 - /// </summary> - public ulong homeRegion - { - get { return Helpers.UIntsToLong((homeRegionX * 256), (homeRegionY * 256)); } - set { - homeRegionX = (uint)(value >> 40); - homeRegionY = (((uint)(value)) >> 8); - Console.WriteLine("HomeRegion => Incoming: " + value + ", Computed: " + homeRegion); - } - } - public uint homeRegionX; - public uint homeRegionY; - /// <summary> - /// The coordinates inside the region of the home location - /// </summary> - public LLVector3 homeLocation; - /// <summary> - /// Where the user will be looking when they rez. - /// </summary> - public LLVector3 homeLookAt; - - /// <summary> - /// A UNIX Timestamp (seconds since epoch) for the users creation - /// </summary> - public int created; - /// <summary> - /// A UNIX Timestamp for the users last login date / time - /// </summary> - public int lastLogin; - - public LLUUID rootInventoryFolderID; - - /// <summary> - /// A URI to the users inventory server, used for foreigners and large grids - /// </summary> - public string userInventoryURI = String.Empty; - /// <summary> - /// A URI to the users asset server, used for foreigners and large grids. - /// </summary> - public string userAssetURI = String.Empty; - - /// <summary> - /// A uint mask containing the "I can do" fields of the users profile - /// </summary> - public uint profileCanDoMask; - /// <summary> - /// A uint mask containing the "I want to do" part of the users profile - /// </summary> - public uint profileWantDoMask; // Profile window "I want to" mask - - /// <summary> - /// The about text listed in a users profile. - /// </summary> - public string profileAboutText = String.Empty; - /// <summary> - /// The first life about text listed in a users profile - /// </summary> - public string profileFirstText = String.Empty; - - /// <summary> - /// The profile image for an avatar stored on the asset server - /// </summary> - public LLUUID profileImage; - /// <summary> - /// The profile image for the users first life tab - /// </summary> - public LLUUID profileFirstImage; - /// <summary> - /// The users last registered agent (filled in on the user server) - /// </summary> - public UserAgentData currentAgent; - } - - /// <summary> - /// Information about a users session - /// </summary> - public class UserAgentData - { - /// <summary> - /// The UUID of the users avatar (not the agent!) - /// </summary> - public LLUUID UUID; - /// <summary> - /// The IP address of the user - /// </summary> - public string agentIP = String.Empty; - /// <summary> - /// The port of the user - /// </summary> - public uint agentPort; - /// <summary> - /// Is the user online? - /// </summary> - public bool agentOnline; - /// <summary> - /// The session ID for the user (also the agent ID) - /// </summary> - public LLUUID sessionID; - /// <summary> - /// The "secure" session ID for the user - /// </summary> - /// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks> - public LLUUID secureSessionID; - /// <summary> - /// The region the user logged into initially - /// </summary> - public LLUUID regionID; - /// <summary> - /// A unix timestamp from when the user logged in - /// </summary> - public int loginTime; - /// <summary> - /// When this agent expired and logged out, 0 if still online - /// </summary> - public int logoutTime; - /// <summary> - /// Current region the user is logged into - /// </summary> - public LLUUID currentRegion; - /// <summary> - /// Region handle of the current region the user is in - /// </summary> - public ulong currentHandle; - /// <summary> - /// The position of the user within the region - /// </summary> - public LLVector3 currentPos; - } -} diff --git a/OpenSim/Framework/General/Interfaces/IClientAPI.cs b/OpenSim/Framework/General/Interfaces/IClientAPI.cs index 344a55c..bedea9e 100644 --- a/OpenSim/Framework/General/Interfaces/IClientAPI.cs +++ b/OpenSim/Framework/General/Interfaces/IClientAPI.cs @@ -31,7 +31,6 @@ using System.Net; using libsecondlife; using libsecondlife.Packets; using OpenSim.Framework.Types; -using OpenSim.Framework.Data; namespace OpenSim.Framework.Interfaces { diff --git a/OpenSim/Framework/General/Interfaces/IUserData.cs b/OpenSim/Framework/General/Interfaces/IUserData.cs new file mode 100644 index 0000000..bb3abe0 --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/IUserData.cs @@ -0,0 +1,135 @@ +/* +* 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 libsecondlife; +using OpenSim.Framework.Types; + +namespace OpenSim.Framework.Data +{ + /// <summary> + /// An interface for connecting to user storage servers. + /// </summary> + public interface IUserData + { + /// <summary> + /// Returns a user profile from a database via their UUID + /// </summary> + /// <param name="user">The accounts UUID</param> + /// <returns>The user data profile</returns> + UserProfileData GetUserByUUID(LLUUID user); + + /// <summary> + /// Returns a users profile by searching their username + /// </summary> + /// <param name="name">The users username</param> + /// <returns>The user data profile</returns> + UserProfileData GetUserByName(string name); + + /// <summary> + /// Returns a users profile by searching their username parts + /// </summary> + /// <param name="fname">Account firstname</param> + /// <param name="lname">Account lastname</param> + /// <returns>The user data profile</returns> + UserProfileData GetUserByName(string fname, string lname); + + /// <summary> + /// Returns the current agent for a user searching by it's UUID + /// </summary> + /// <param name="user">The users UUID</param> + /// <returns>The current agent session</returns> + UserAgentData GetAgentByUUID(LLUUID user); + + /// <summary> + /// Returns the current session agent for a user searching by username + /// </summary> + /// <param name="name">The users account name</param> + /// <returns>The current agent session</returns> + UserAgentData GetAgentByName(string name); + + /// <summary> + /// Returns the current session agent for a user searching by username parts + /// </summary> + /// <param name="fname">The users first account name</param> + /// <param name="lname">The users account surname</param> + /// <returns>The current agent session</returns> + UserAgentData GetAgentByName(string fname, string lname); + + /// <summary> + /// Adds a new User profile to the database + /// </summary> + /// <param name="user">UserProfile to add</param> + void AddNewUserProfile(UserProfileData user); + + /// <summary> + /// Updates an existing user profile + /// </summary> + /// <param name="user">UserProfile to update</param> + bool UpdateUserProfile(UserProfileData user); + + /// <summary> + /// Adds a new agent to the database + /// </summary> + /// <param name="agent">The agent to add</param> + void AddNewUserAgent(UserAgentData agent); + + /// <summary> + /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES) + /// </summary> + /// <param name="from">The account to transfer from</param> + /// <param name="to">The account to transfer to</param> + /// <param name="amount">The amount to transfer</param> + /// <returns>Successful?</returns> + bool MoneyTransferRequest(LLUUID from, LLUUID to, uint amount); + + /// <summary> + /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account. + /// </summary> + /// <param name="from">User to transfer from</param> + /// <param name="to">User to transfer to</param> + /// <param name="inventory">Specified inventory item</param> + /// <returns>Successful?</returns> + bool InventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory); + + /// <summary> + /// Returns the plugin version + /// </summary> + /// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns> + string GetVersion(); + + /// <summary> + /// Returns the plugin name + /// </summary> + /// <returns>Plugin name, eg MySQL User Provider</returns> + string getName(); + + /// <summary> + /// Initialises the plugin (artificial constructor) + /// </summary> + void Initialise(); + } +} diff --git a/OpenSim/Framework/General/Interfaces/IUserService.cs b/OpenSim/Framework/General/Interfaces/IUserService.cs index 974e025..461d4cb 100644 --- a/OpenSim/Framework/General/Interfaces/IUserService.cs +++ b/OpenSim/Framework/General/Interfaces/IUserService.cs @@ -26,7 +26,7 @@ * */ using libsecondlife; -using OpenSim.Framework.Data; +using OpenSim.Framework.Types; namespace OpenSim.Framework.Interfaces { diff --git a/OpenSim/Framework/General/Types/InventoryItemBase.cs b/OpenSim/Framework/General/Types/InventoryItemBase.cs new file mode 100644 index 0000000..e3dbe71 --- /dev/null +++ b/OpenSim/Framework/General/Types/InventoryItemBase.cs @@ -0,0 +1,222 @@ +/* +* 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.Collections.Generic; +using libsecondlife; + +namespace OpenSim.Framework.Types +{ + /// <summary> + /// Inventory Item - contains all the properties associated with an individual inventory piece. + /// </summary> + public class InventoryItemBase + { + /// <summary> + /// A UUID containing the ID for the inventory item itself + /// </summary> + public LLUUID inventoryID; + /// <summary> + /// The UUID of the associated asset on the asset server + /// </summary> + public LLUUID assetID; + /// <summary> + /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc) + /// </summary> + public int assetType; + /// <summary> + /// The type of inventory item. (Can be slightly different to the asset type + /// </summary> + public int invType; + /// <summary> + /// The folder this item is contained in + /// </summary> + public LLUUID parentFolderID; + /// <summary> + /// The owner of this inventory item + /// </summary> + public LLUUID avatarID; + /// <summary> + /// The creator of this item + /// </summary> + public LLUUID creatorsID; + /// <summary> + /// The name of the inventory item (must be less than 64 characters) + /// </summary> + public string inventoryName; + /// <summary> + /// The description of the inventory item (must be less than 64 characters) + /// </summary> + public string inventoryDescription; + /// <summary> + /// A mask containing the permissions for the next owner (cannot be enforced) + /// </summary> + public uint inventoryNextPermissions; + /// <summary> + /// A mask containing permissions for the current owner (cannot be enforced) + /// </summary> + public uint inventoryCurrentPermissions; + /// <summary> + /// + /// </summary> + public uint inventoryBasePermissions; + /// <summary> + /// + /// </summary> + public uint inventoryEveryOnePermissions; + } + + /// <summary> + /// A Class for folders which contain users inventory + /// </summary> + public class InventoryFolderBase + { + /// <summary> + /// The name of the folder (64 characters or less) + /// </summary> + public string name; + /// <summary> + /// The agent who's inventory this is contained by + /// </summary> + public LLUUID agentID; + /// <summary> + /// The folder this folder is contained in + /// </summary> + public LLUUID parentID; + /// <summary> + /// The UUID for this folder + /// </summary> + public LLUUID folderID; + /// <summary> + /// Tyep of Items normally stored in this folder + /// </summary> + public short type; + /// <summary> + /// + /// </summary> + public ushort version; + } + + /// <summary> + /// An interface for accessing inventory data from a storage server + /// </summary> + public interface IInventoryData + { + /// <summary> + /// Initialises the interface + /// </summary> + void Initialise(); + + /// <summary> + /// Closes the interface + /// </summary> + void Close(); + + /// <summary> + /// The plugin being loaded + /// </summary> + /// <returns>A string containing the plugin name</returns> + string getName(); + + /// <summary> + /// The plugins version + /// </summary> + /// <returns>A string containing the plugin version</returns> + string getVersion(); + + /// <summary> + /// Returns a list of inventory items contained within the specified folder + /// </summary> + /// <param name="folderID">The UUID of the target folder</param> + /// <returns>A List of InventoryItemBase items</returns> + List<InventoryItemBase> getInventoryInFolder(LLUUID folderID); + + /// <summary> + /// Returns a list of the root folders within a users inventory + /// </summary> + /// <param name="user">The user whos inventory is to be searched</param> + /// <returns>A list of folder objects</returns> + List<InventoryFolderBase> getUserRootFolders(LLUUID user); + + /// <summary> + /// Returns the users inventory root folder. + /// </summary> + /// <param name="user">The UUID of the user who is having inventory being returned</param> + /// <returns>Root inventory folder</returns> + InventoryFolderBase getUserRootFolder(LLUUID user); + + /// <summary> + /// Returns a list of inventory folders contained in the folder 'parentID' + /// </summary> + /// <param name="parentID">The folder to get subfolders for</param> + /// <returns>A list of inventory folders</returns> + List<InventoryFolderBase> getInventoryFolders(LLUUID parentID); + + /// <summary> + /// Returns an inventory item by its UUID + /// </summary> + /// <param name="item">The UUID of the item to be returned</param> + /// <returns>A class containing item information</returns> + InventoryItemBase getInventoryItem(LLUUID item); + + /// <summary> + /// Returns a specified inventory folder by its UUID + /// </summary> + /// <param name="folder">The UUID of the folder to be returned</param> + /// <returns>A class containing folder information</returns> + InventoryFolderBase getInventoryFolder(LLUUID folder); + + /// <summary> + /// Creates a new inventory item based on item + /// </summary> + /// <param name="item">The item to be created</param> + void addInventoryItem(InventoryItemBase item); + + /// <summary> + /// Updates an inventory item with item (updates based on ID) + /// </summary> + /// <param name="item">The updated item</param> + void updateInventoryItem(InventoryItemBase item); + + /// <summary> + /// + /// </summary> + /// <param name="item"></param> + void deleteInventoryItem(InventoryItemBase item); + + /// <summary> + /// Adds a new folder specified by folder + /// </summary> + /// <param name="folder">The inventory folder</param> + void addInventoryFolder(InventoryFolderBase folder); + + /// <summary> + /// Updates a folder based on its ID with folder + /// </summary> + /// <param name="folder">The inventory folder</param> + void updateInventoryFolder(InventoryFolderBase folder); + } +} \ No newline at end of file diff --git a/OpenSim/Framework/General/Types/UserProfileData.cs b/OpenSim/Framework/General/Types/UserProfileData.cs new file mode 100644 index 0000000..20d8224 --- /dev/null +++ b/OpenSim/Framework/General/Types/UserProfileData.cs @@ -0,0 +1,191 @@ +/* +* 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.Types +{ + /// <summary> + /// Information about a particular user known to the userserver + /// </summary> + public class UserProfileData + { + /// <summary> + /// The ID value for this user + /// </summary> + public LLUUID UUID; + + /// <summary> + /// The first component of a users account name + /// </summary> + public string username; + /// <summary> + /// The second component of a users account name + /// </summary> + public string surname; + + /// <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> + public string passwordHash; + /// <summary> + /// The salt used for the users hash, should be 32 bytes or longer + /// </summary> + public string passwordSalt; + + /// <summary> + /// 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 + /// </summary> + public ulong homeRegion + { + get { return Helpers.UIntsToLong((homeRegionX * 256), (homeRegionY * 256)); } + set { + homeRegionX = (uint)(value >> 40); + homeRegionY = (((uint)(value)) >> 8); + } + } + public uint homeRegionX; + public uint homeRegionY; + /// <summary> + /// The coordinates inside the region of the home location + /// </summary> + public LLVector3 homeLocation; + /// <summary> + /// Where the user will be looking when they rez. + /// </summary> + public LLVector3 homeLookAt; + + /// <summary> + /// A UNIX Timestamp (seconds since epoch) for the users creation + /// </summary> + public int created; + /// <summary> + /// A UNIX Timestamp for the users last login date / time + /// </summary> + public int lastLogin; + + public LLUUID rootInventoryFolderID; + + /// <summary> + /// A URI to the users inventory server, used for foreigners and large grids + /// </summary> + public string userInventoryURI = String.Empty; + /// <summary> + /// A URI to the users asset server, used for foreigners and large grids. + /// </summary> + public string userAssetURI = String.Empty; + + /// <summary> + /// A uint mask containing the "I can do" fields of the users profile + /// </summary> + public uint profileCanDoMask; + /// <summary> + /// A uint mask containing the "I want to do" part of the users profile + /// </summary> + public uint profileWantDoMask; // Profile window "I want to" mask + + /// <summary> + /// The about text listed in a users profile. + /// </summary> + public string profileAboutText = String.Empty; + /// <summary> + /// The first life about text listed in a users profile + /// </summary> + public string profileFirstText = String.Empty; + + /// <summary> + /// The profile image for an avatar stored on the asset server + /// </summary> + public LLUUID profileImage; + /// <summary> + /// The profile image for the users first life tab + /// </summary> + public LLUUID profileFirstImage; + /// <summary> + /// The users last registered agent (filled in on the user server) + /// </summary> + public UserAgentData currentAgent; + } + + /// <summary> + /// Information about a users session + /// </summary> + public class UserAgentData + { + /// <summary> + /// The UUID of the users avatar (not the agent!) + /// </summary> + public LLUUID UUID; + /// <summary> + /// The IP address of the user + /// </summary> + public string agentIP = String.Empty; + /// <summary> + /// The port of the user + /// </summary> + public uint agentPort; + /// <summary> + /// Is the user online? + /// </summary> + public bool agentOnline; + /// <summary> + /// The session ID for the user (also the agent ID) + /// </summary> + public LLUUID sessionID; + /// <summary> + /// The "secure" session ID for the user + /// </summary> + /// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks> + public LLUUID secureSessionID; + /// <summary> + /// The region the user logged into initially + /// </summary> + public LLUUID regionID; + /// <summary> + /// A unix timestamp from when the user logged in + /// </summary> + public int loginTime; + /// <summary> + /// When this agent expired and logged out, 0 if still online + /// </summary> + public int logoutTime; + /// <summary> + /// Current region the user is logged into + /// </summary> + public LLUUID currentRegion; + /// <summary> + /// Region handle of the current region the user is in + /// </summary> + public ulong currentHandle; + /// <summary> + /// The position of the user within the region + /// </summary> + public LLVector3 currentPos; + } +} \ No newline at end of file -- cgit v1.1