From 44a7db0e44d175fcb854b7bfd11d3b97ed6b934c Mon Sep 17 00:00:00 2001 From: Tleiades Hax Date: Wed, 17 Oct 2007 09:36:11 +0000 Subject: Renamed SimProfileData to RegionProfileData --- OpenSim/Framework/Data.DB4o/DB4oGridData.cs | 9 +- OpenSim/Framework/Data.DB4o/DB4oManager.cs | 9 +- OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs | 14 +- OpenSim/Framework/Data.MSSQL/MSSQLManager.cs | 6 +- OpenSim/Framework/Data.MySQL/MySQLGridData.cs | 18 +-- OpenSim/Framework/Data.MySQL/MySQLManager.cs | 6 +- OpenSim/Framework/Data.SQLite/SQLiteGridData.cs | 14 +- OpenSim/Framework/Data.SQLite/SQLiteManager.cs | 6 +- OpenSim/Framework/Data/GridData.cs | 8 +- OpenSim/Framework/Data/RegionProfileData.cs | 192 ++++++++++++++++++++++++ OpenSim/Framework/Data/SimProfileData.cs | 192 ------------------------ OpenSim/Grid/GridServer/GridManager.cs | 40 ++--- OpenSim/Grid/UserServer/UserLoginService.cs | 4 +- 13 files changed, 260 insertions(+), 258 deletions(-) create mode 100644 OpenSim/Framework/Data/RegionProfileData.cs delete mode 100644 OpenSim/Framework/Data/SimProfileData.cs diff --git a/OpenSim/Framework/Data.DB4o/DB4oGridData.cs b/OpenSim/Framework/Data.DB4o/DB4oGridData.cs index a01d1a4..bc7225a 100644 --- a/OpenSim/Framework/Data.DB4o/DB4oGridData.cs +++ b/OpenSim/Framework/Data.DB4o/DB4oGridData.cs @@ -56,7 +56,7 @@ namespace OpenSim.Framework.Data.DB4o /// maximum X coordinate /// maximum Y coordinate /// An array of region profiles - public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) + public RegionProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) { return null; } @@ -66,7 +66,8 @@ namespace OpenSim.Framework.Data.DB4o /// /// The handle to search for /// A region profile - public SimProfileData GetProfileByHandle(ulong handle) { + public RegionProfileData GetProfileByHandle(ulong handle) + { lock (manager.simProfiles) { foreach (LLUUID UUID in manager.simProfiles.Keys) @@ -85,7 +86,7 @@ namespace OpenSim.Framework.Data.DB4o /// /// The region ID code /// A region profile - public SimProfileData GetProfileByLLUUID(LLUUID uuid) + public RegionProfileData GetProfileByLLUUID(LLUUID uuid) { lock (manager.simProfiles) { @@ -100,7 +101,7 @@ namespace OpenSim.Framework.Data.DB4o /// /// The profile to add /// A dataresponse enum indicating success - public DataResponse AddProfile(SimProfileData profile) + public DataResponse AddProfile(RegionProfileData profile) { lock (manager.simProfiles) { diff --git a/OpenSim/Framework/Data.DB4o/DB4oManager.cs b/OpenSim/Framework/Data.DB4o/DB4oManager.cs index 224b842..10c8490 100644 --- a/OpenSim/Framework/Data.DB4o/DB4oManager.cs +++ b/OpenSim/Framework/Data.DB4o/DB4oManager.cs @@ -41,7 +41,7 @@ namespace OpenSim.Framework.Data.DB4o /// /// A list of the current regions connected (in-memory cache) /// - public Dictionary simProfiles = new Dictionary(); + public Dictionary simProfiles = new Dictionary(); /// /// Database File Name /// @@ -56,9 +56,10 @@ namespace OpenSim.Framework.Data.DB4o dbfl = db4odb; IObjectContainer database; database = Db4oFactory.OpenFile(dbfl); - IObjectSet result = database.Get(typeof(SimProfileData)); + IObjectSet result = database.Get(typeof(RegionProfileData)); // Loads the file into the in-memory cache - foreach(SimProfileData row in result) { + foreach (RegionProfileData row in result) + { simProfiles.Add(row.UUID, row); } database.Close(); @@ -69,7 +70,7 @@ namespace OpenSim.Framework.Data.DB4o /// /// The profile to add /// Successful? - public bool AddRow(SimProfileData row) + public bool AddRow(RegionProfileData row) { if (simProfiles.ContainsKey(row.UUID)) { diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs index 09ce6d2..e628882 100644 --- a/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs +++ b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs @@ -86,7 +86,7 @@ namespace OpenSim.Framework.Data.MSSQL /// maximum X coordinate /// maximum Y coordinate /// An array of region profiles - public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) + public RegionProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) { return null; } @@ -96,7 +96,7 @@ namespace OpenSim.Framework.Data.MSSQL /// /// Region location handle /// Sim profile - public SimProfileData GetProfileByHandle(ulong handle) + public RegionProfileData GetProfileByHandle(ulong handle) { Dictionary param = new Dictionary(); param["handle"] = handle.ToString(); @@ -104,7 +104,7 @@ namespace OpenSim.Framework.Data.MSSQL IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param); IDataReader reader = result.ExecuteReader(); - SimProfileData row = database.getRow(reader); + RegionProfileData row = database.getRow(reader); reader.Close(); result.Dispose(); @@ -116,7 +116,7 @@ namespace OpenSim.Framework.Data.MSSQL /// /// The region UUID /// The sim profile - public SimProfileData GetProfileByLLUUID(LLUUID uuid) + public RegionProfileData GetProfileByLLUUID(LLUUID uuid) { Dictionary param = new Dictionary(); param["uuid"] = uuid.ToStringHyphenated(); @@ -124,7 +124,7 @@ namespace OpenSim.Framework.Data.MSSQL IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param); IDataReader reader = result.ExecuteReader(); - SimProfileData row = database.getRow(reader); + RegionProfileData row = database.getRow(reader); reader.Close(); result.Dispose(); @@ -136,7 +136,7 @@ namespace OpenSim.Framework.Data.MSSQL /// /// The profile to add /// A dataresponse enum indicating success - public DataResponse AddProfile(SimProfileData profile) + public DataResponse AddProfile(RegionProfileData profile) { if (database.insertRow(profile)) { @@ -162,7 +162,7 @@ namespace OpenSim.Framework.Data.MSSQL if (throwHissyFit) throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential."); - SimProfileData data = GetProfileByLLUUID(uuid); + RegionProfileData data = GetProfileByLLUUID(uuid); return (handle == data.regionHandle && authkey == data.regionSecret); } diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs b/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs index 1efd51e..77d29f7 100644 --- a/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs +++ b/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs @@ -98,9 +98,9 @@ namespace OpenSim.Framework.Data.MSSQL /// /// An active database reader /// A region row - public SimProfileData getRow(IDataReader reader) + public RegionProfileData getRow(IDataReader reader) { - SimProfileData regionprofile = new SimProfileData(); + RegionProfileData regionprofile = new RegionProfileData(); if (reader.Read()) { @@ -154,7 +154,7 @@ namespace OpenSim.Framework.Data.MSSQL /// /// The region profile to insert /// Successful? - public bool insertRow(SimProfileData profile) + public bool insertRow(RegionProfileData profile) { string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, "; sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, "; diff --git a/OpenSim/Framework/Data.MySQL/MySQLGridData.cs b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs index 5709bf0..9876ab1 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLGridData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs @@ -96,7 +96,7 @@ namespace OpenSim.Framework.Data.MySQL /// Maximum X coordinate /// Maximum Y coordinate /// - public SimProfileData[] GetProfilesInRange(uint xmin, uint ymin, uint xmax, uint ymax) + public RegionProfileData[] GetProfilesInRange(uint xmin, uint ymin, uint xmax, uint ymax) { try { @@ -111,9 +111,9 @@ namespace OpenSim.Framework.Data.MySQL IDbCommand result = database.Query("SELECT * FROM regions WHERE locX >= ?xmin AND locX <= ?xmax AND locY >= ?ymin AND locY <= ?ymax", param); IDataReader reader = result.ExecuteReader(); - SimProfileData row; + RegionProfileData row; - List rows = new List(); + List rows = new List(); while ((row = database.readSimRow(reader)) != null) { @@ -139,7 +139,7 @@ namespace OpenSim.Framework.Data.MySQL /// /// Region location handle /// Sim profile - public SimProfileData GetProfileByHandle(ulong handle) + public RegionProfileData GetProfileByHandle(ulong handle) { try { @@ -151,7 +151,7 @@ namespace OpenSim.Framework.Data.MySQL IDbCommand result = database.Query("SELECT * FROM regions WHERE regionHandle = ?handle", param); IDataReader reader = result.ExecuteReader(); - SimProfileData row = database.readSimRow(reader); + RegionProfileData row = database.readSimRow(reader); reader.Close(); result.Dispose(); @@ -171,7 +171,7 @@ namespace OpenSim.Framework.Data.MySQL /// /// The region UUID /// The sim profile - public SimProfileData GetProfileByLLUUID(LLUUID uuid) + public RegionProfileData GetProfileByLLUUID(LLUUID uuid) { try { @@ -183,7 +183,7 @@ namespace OpenSim.Framework.Data.MySQL IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = ?uuid", param); IDataReader reader = result.ExecuteReader(); - SimProfileData row = database.readSimRow(reader); + RegionProfileData row = database.readSimRow(reader); reader.Close(); result.Dispose(); @@ -203,7 +203,7 @@ namespace OpenSim.Framework.Data.MySQL /// /// The profile to add /// Successful? - public DataResponse AddProfile(SimProfileData profile) + public DataResponse AddProfile(RegionProfileData profile) { lock (database) { @@ -232,7 +232,7 @@ namespace OpenSim.Framework.Data.MySQL if (throwHissyFit) throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential."); - SimProfileData data = GetProfileByLLUUID(uuid); + RegionProfileData data = GetProfileByLLUUID(uuid); return (handle == data.regionHandle && authkey == data.regionSecret); } diff --git a/OpenSim/Framework/Data.MySQL/MySQLManager.cs b/OpenSim/Framework/Data.MySQL/MySQLManager.cs index d3f6976..8600d6b 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLManager.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLManager.cs @@ -267,9 +267,9 @@ namespace OpenSim.Framework.Data.MySQL /// /// An active database reader /// A region profile - public SimProfileData readSimRow(IDataReader reader) + public RegionProfileData readSimRow(IDataReader reader) { - SimProfileData retval = new SimProfileData(); + RegionProfileData retval = new RegionProfileData(); if (reader.Read()) { @@ -583,7 +583,7 @@ namespace OpenSim.Framework.Data.MySQL /// /// The region to insert /// Success? - public bool insertRegion(SimProfileData regiondata) + public bool insertRegion(RegionProfileData regiondata) { string sql = "REPLACE INTO regions (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, "; sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, "; diff --git a/OpenSim/Framework/Data.SQLite/SQLiteGridData.cs b/OpenSim/Framework/Data.SQLite/SQLiteGridData.cs index a7ff0f7..2fc80b4 100644 --- a/OpenSim/Framework/Data.SQLite/SQLiteGridData.cs +++ b/OpenSim/Framework/Data.SQLite/SQLiteGridData.cs @@ -86,7 +86,7 @@ namespace OpenSim.Framework.Data.SQLite /// maximum X coordinate /// maximum Y coordinate /// An array of region profiles - public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) + public RegionProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) { return null; } @@ -96,7 +96,7 @@ namespace OpenSim.Framework.Data.SQLite /// /// Region location handle /// Sim profile - public SimProfileData GetProfileByHandle(ulong handle) + public RegionProfileData GetProfileByHandle(ulong handle) { Dictionary param = new Dictionary(); param["handle"] = handle.ToString(); @@ -104,7 +104,7 @@ namespace OpenSim.Framework.Data.SQLite IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param); IDataReader reader = result.ExecuteReader(); - SimProfileData row = database.getRow(reader); + RegionProfileData row = database.getRow(reader); reader.Close(); result.Dispose(); @@ -116,7 +116,7 @@ namespace OpenSim.Framework.Data.SQLite /// /// The region UUID /// The sim profile - public SimProfileData GetProfileByLLUUID(LLUUID uuid) + public RegionProfileData GetProfileByLLUUID(LLUUID uuid) { Dictionary param = new Dictionary(); param["uuid"] = uuid.ToStringHyphenated(); @@ -124,7 +124,7 @@ namespace OpenSim.Framework.Data.SQLite IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param); IDataReader reader = result.ExecuteReader(); - SimProfileData row = database.getRow(reader); + RegionProfileData row = database.getRow(reader); reader.Close(); result.Dispose(); @@ -136,7 +136,7 @@ namespace OpenSim.Framework.Data.SQLite /// /// The profile to add /// A dataresponse enum indicating success - public DataResponse AddProfile(SimProfileData profile) + public DataResponse AddProfile(RegionProfileData profile) { if (database.insertRow(profile)) { @@ -162,7 +162,7 @@ namespace OpenSim.Framework.Data.SQLite if (throwHissyFit) throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential."); - SimProfileData data = GetProfileByLLUUID(uuid); + RegionProfileData data = GetProfileByLLUUID(uuid); return (handle == data.regionHandle && authkey == data.regionSecret); } diff --git a/OpenSim/Framework/Data.SQLite/SQLiteManager.cs b/OpenSim/Framework/Data.SQLite/SQLiteManager.cs index f73f480..5954fba 100644 --- a/OpenSim/Framework/Data.SQLite/SQLiteManager.cs +++ b/OpenSim/Framework/Data.SQLite/SQLiteManager.cs @@ -161,9 +161,9 @@ namespace OpenSim.Framework.Data.SQLite /// /// An active database reader /// A region profile - public SimProfileData getRow(IDataReader reader) + public RegionProfileData getRow(IDataReader reader) { - SimProfileData retval = new SimProfileData(); + RegionProfileData retval = new RegionProfileData(); if (reader.Read()) { @@ -217,7 +217,7 @@ namespace OpenSim.Framework.Data.SQLite /// /// The region to insert /// Success? - public bool insertRow(SimProfileData profile) + public bool insertRow(RegionProfileData profile) { string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, "; sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, "; diff --git a/OpenSim/Framework/Data/GridData.cs b/OpenSim/Framework/Data/GridData.cs index 7075922..2a5b8f6 100644 --- a/OpenSim/Framework/Data/GridData.cs +++ b/OpenSim/Framework/Data/GridData.cs @@ -47,14 +47,14 @@ namespace OpenSim.Framework.Data /// /// A 64bit Region Handle /// A simprofile - SimProfileData GetProfileByHandle(ulong regionHandle); + RegionProfileData GetProfileByHandle(ulong regionHandle); /// /// Returns a sim profile from a UUID /// /// A 128bit UUID /// A sim profile - SimProfileData GetProfileByLLUUID(LLUUID UUID); + RegionProfileData GetProfileByLLUUID(LLUUID UUID); /// /// Returns all profiles within the specified range @@ -64,7 +64,7 @@ namespace OpenSim.Framework.Data /// Maximum sim coordinate (X) /// Maximum sim coordinate (Y) /// An array containing all the sim profiles in the specified range - SimProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax); + RegionProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax); /// /// Authenticates a sim by use of it's recv key. @@ -103,7 +103,7 @@ namespace OpenSim.Framework.Data /// /// The profile to add /// RESPONSE_OK if successful, error if not. - DataResponse AddProfile(SimProfileData profile); + DataResponse AddProfile(RegionProfileData profile); ReservationData GetReservationAtPoint(uint x, uint y); diff --git a/OpenSim/Framework/Data/RegionProfileData.cs b/OpenSim/Framework/Data/RegionProfileData.cs new file mode 100644 index 0000000..5e5dac6 --- /dev/null +++ b/OpenSim/Framework/Data/RegionProfileData.cs @@ -0,0 +1,192 @@ +/* +* 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 Nwc.XmlRpc; + +using System; +using System.Collections; + +namespace OpenSim.Framework.Data +{ + /// + /// A class which contains information known to the grid server about a region + /// + public class RegionProfileData + { + /// + /// The name of the region + /// + public string regionName = ""; + + /// + /// A 64-bit number combining map position into a (mostly) unique ID + /// + public ulong regionHandle; + + /// + /// OGS/OpenSim Specific ID for a region + /// + public LLUUID UUID; + + /// + /// Coordinates of the region + /// + public uint regionLocX; + public uint regionLocY; + public uint regionLocZ; // Reserved (round-robin, layers, etc) + + /// + /// Authentication secrets + /// + /// Not very secure, needs improvement. + public string regionSendKey = ""; + public string regionRecvKey = ""; + public string regionSecret = ""; + + /// + /// Whether the region is online + /// + public bool regionOnline; + + /// + /// Information about the server that the region is currently hosted on + /// + public string serverIP = ""; + public uint serverPort; + public string serverURI = ""; + + public uint httpPort; + public uint remotingPort; + public string httpServerURI = ""; + + /// + /// Set of optional overrides. Can be used to create non-eulicidean spaces. + /// + public ulong regionNorthOverrideHandle; + public ulong regionSouthOverrideHandle; + public ulong regionEastOverrideHandle; + public ulong regionWestOverrideHandle; + + /// + /// Optional: URI Location of the region database + /// + /// Used for floating sim pools where the region data is not nessecarily coupled to a specific server + public string regionDataURI = ""; + + /// + /// Region Asset Details + /// + public string regionAssetURI = ""; + public string regionAssetSendKey = ""; + public string regionAssetRecvKey = ""; + + /// + /// Region Userserver Details + /// + public string regionUserURI = ""; + public string regionUserSendKey = ""; + public string regionUserRecvKey = ""; + + /// + /// Region Map Texture Asset + /// + public LLUUID regionMapTextureID = new LLUUID("00000000-0000-0000-9999-000000000006"); + + /// + /// Get Sim profile data from grid server when in grid mode + /// + /// + /// + /// + /// + public RegionProfileData RequestSimProfileData(LLUUID region_uuid, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey) + { + Hashtable requestData = new Hashtable(); + requestData["region_uuid"] = region_uuid.UUID.ToString(); + requestData["authkey"] = gridserver_sendkey; + ArrayList SendParams = new ArrayList(); + SendParams.Add(requestData); + XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); + XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000); + + Hashtable responseData = (Hashtable)GridResp.Value; + + if (responseData.ContainsKey("error")) + { + return null; + } + + RegionProfileData simData = new RegionProfileData(); + simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]); + simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]); + simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256)); + simData.serverIP = (string)responseData["sim_ip"]; + simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]); + simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]); + simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]); + simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/"; + simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/"; + simData.UUID = new LLUUID((string)responseData["region_UUID"]); + simData.regionName = (string)responseData["region_name"]; + + return simData; + } + public RegionProfileData RequestSimProfileData(ulong region_handle, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey) + { + Hashtable requestData = new Hashtable(); + requestData["region_handle"] = region_handle.ToString(); + requestData["authkey"] = gridserver_sendkey; + ArrayList SendParams = new ArrayList(); + SendParams.Add(requestData); + XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); + XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000); + + Hashtable responseData = (Hashtable)GridResp.Value; + + if (responseData.ContainsKey("error")) + { + return null; + } + + RegionProfileData simData = new RegionProfileData(); + simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]); + simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]); + simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256)); + simData.serverIP = (string)responseData["sim_ip"]; + simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]); + simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]); + simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]); + simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/"; + simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/"; + simData.UUID = new LLUUID((string)responseData["region_UUID"]); + simData.regionName = (string)responseData["region_name"]; + + return simData; + } + } +} diff --git a/OpenSim/Framework/Data/SimProfileData.cs b/OpenSim/Framework/Data/SimProfileData.cs deleted file mode 100644 index abde1f3..0000000 --- a/OpenSim/Framework/Data/SimProfileData.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 libsecondlife; -using Nwc.XmlRpc; - -using System; -using System.Collections; - -namespace OpenSim.Framework.Data -{ - /// - /// A class which contains information known to the grid server about a region - /// - public class SimProfileData - { - /// - /// The name of the region - /// - public string regionName = ""; - - /// - /// A 64-bit number combining map position into a (mostly) unique ID - /// - public ulong regionHandle; - - /// - /// OGS/OpenSim Specific ID for a region - /// - public LLUUID UUID; - - /// - /// Coordinates of the region - /// - public uint regionLocX; - public uint regionLocY; - public uint regionLocZ; // Reserved (round-robin, layers, etc) - - /// - /// Authentication secrets - /// - /// Not very secure, needs improvement. - public string regionSendKey = ""; - public string regionRecvKey = ""; - public string regionSecret = ""; - - /// - /// Whether the region is online - /// - public bool regionOnline; - - /// - /// Information about the server that the region is currently hosted on - /// - public string serverIP = ""; - public uint serverPort; - public string serverURI = ""; - - public uint httpPort; - public uint remotingPort; - public string httpServerURI = ""; - - /// - /// Set of optional overrides. Can be used to create non-eulicidean spaces. - /// - public ulong regionNorthOverrideHandle; - public ulong regionSouthOverrideHandle; - public ulong regionEastOverrideHandle; - public ulong regionWestOverrideHandle; - - /// - /// Optional: URI Location of the region database - /// - /// Used for floating sim pools where the region data is not nessecarily coupled to a specific server - public string regionDataURI = ""; - - /// - /// Region Asset Details - /// - public string regionAssetURI = ""; - public string regionAssetSendKey = ""; - public string regionAssetRecvKey = ""; - - /// - /// Region Userserver Details - /// - public string regionUserURI = ""; - public string regionUserSendKey = ""; - public string regionUserRecvKey = ""; - - /// - /// Region Map Texture Asset - /// - public LLUUID regionMapTextureID = new LLUUID("00000000-0000-0000-9999-000000000006"); - - /// - /// Get Sim profile data from grid server when in grid mode - /// - /// - /// - /// - /// - public SimProfileData RequestSimProfileData(LLUUID region_uuid, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey) - { - Hashtable requestData = new Hashtable(); - requestData["region_uuid"] = region_uuid.UUID.ToString(); - requestData["authkey"] = gridserver_sendkey; - ArrayList SendParams = new ArrayList(); - SendParams.Add(requestData); - XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); - XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000); - - Hashtable responseData = (Hashtable)GridResp.Value; - - if (responseData.ContainsKey("error")) - { - return null; - } - - SimProfileData simData = new SimProfileData(); - simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]); - simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]); - simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256)); - simData.serverIP = (string)responseData["sim_ip"]; - simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]); - simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]); - simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]); - simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/"; - simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/"; - simData.UUID = new LLUUID((string)responseData["region_UUID"]); - simData.regionName = (string)responseData["region_name"]; - - return simData; - } - public SimProfileData RequestSimProfileData(ulong region_handle, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey) - { - Hashtable requestData = new Hashtable(); - requestData["region_handle"] = region_handle.ToString(); - requestData["authkey"] = gridserver_sendkey; - ArrayList SendParams = new ArrayList(); - SendParams.Add(requestData); - XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); - XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000); - - Hashtable responseData = (Hashtable)GridResp.Value; - - if (responseData.ContainsKey("error")) - { - return null; - } - - SimProfileData simData = new SimProfileData(); - simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]); - simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]); - simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256)); - simData.serverIP = (string)responseData["sim_ip"]; - simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]); - simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]); - simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]); - simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/"; - simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/"; - simData.UUID = new LLUUID((string)responseData["region_UUID"]); - simData.regionName = (string)responseData["region_name"]; - - return simData; - } - } -} diff --git a/OpenSim/Grid/GridServer/GridManager.cs b/OpenSim/Grid/GridServer/GridManager.cs index 64e8e4b..81197fd 100644 --- a/OpenSim/Grid/GridServer/GridManager.cs +++ b/OpenSim/Grid/GridServer/GridManager.cs @@ -122,7 +122,7 @@ namespace OpenSim.Grid.GridServer /// /// A UUID key of the region to return /// A SimProfileData for the region - public SimProfileData getRegion(LLUUID uuid) + public RegionProfileData getRegion(LLUUID uuid) { foreach(KeyValuePair kvp in _plugins) { try @@ -142,7 +142,7 @@ namespace OpenSim.Grid.GridServer /// /// A regionHandle of the region to return /// A SimProfileData for the region - public SimProfileData getRegion(ulong handle) + public RegionProfileData getRegion(ulong handle) { foreach (KeyValuePair kvp in _plugins) { @@ -158,16 +158,16 @@ namespace OpenSim.Grid.GridServer return null; } - public Dictionary getRegions(uint xmin, uint ymin, uint xmax, uint ymax) + public Dictionary getRegions(uint xmin, uint ymin, uint xmax, uint ymax) { - Dictionary regions = new Dictionary(); + Dictionary regions = new Dictionary(); foreach (KeyValuePair kvp in _plugins) { try { - SimProfileData[] neighbours = kvp.Value.GetProfilesInRange(xmin, ymin, xmax, ymax); - foreach (SimProfileData neighbour in neighbours) + RegionProfileData[] neighbours = kvp.Value.GetProfilesInRange(xmin, ymin, xmax, ymax); + foreach (RegionProfileData neighbour in neighbours) { regions[neighbour.regionHandle] = neighbour; } @@ -191,8 +191,8 @@ namespace OpenSim.Grid.GridServer public string GetXMLNeighbours(ulong reqhandle) { string response = ""; - SimProfileData central_region = getRegion(reqhandle); - SimProfileData neighbour; + RegionProfileData central_region = getRegion(reqhandle); + RegionProfileData neighbour; for (int x = -1; x < 2; x++) for (int y = -1; y < 2; y++) { if (getRegion(Util.UIntsToLong((uint)((central_region.regionLocX + x) * 256), (uint)(central_region.regionLocY + y) * 256)) != null) @@ -223,7 +223,7 @@ namespace OpenSim.Grid.GridServer Hashtable responseData = new Hashtable(); response.Value = responseData; - SimProfileData TheSim = null; + RegionProfileData TheSim = null; Hashtable requestData = (Hashtable)request.Params[0]; string myword; if (requestData.ContainsKey("UUID")) @@ -254,7 +254,7 @@ namespace OpenSim.Grid.GridServer myword = "connection"; } - TheSim = new SimProfileData(); + TheSim = new RegionProfileData(); TheSim.regionRecvKey = config.SimRecvKey; TheSim.regionSendKey = config.SimSendKey; @@ -325,16 +325,16 @@ namespace OpenSim.Grid.GridServer ArrayList SimNeighboursData = new ArrayList(); - SimProfileData neighbour; + RegionProfileData neighbour; Hashtable NeighbourBlock; bool fastMode = false; // Only compatible with MySQL right now if (fastMode) { - Dictionary neighbours = getRegions(TheSim.regionLocX - 1, TheSim.regionLocY - 1, TheSim.regionLocX + 1, TheSim.regionLocY + 1); + Dictionary neighbours = getRegions(TheSim.regionLocX - 1, TheSim.regionLocY - 1, TheSim.regionLocX + 1, TheSim.regionLocY + 1); - foreach (KeyValuePair aSim in neighbours) + foreach (KeyValuePair aSim in neighbours) { NeighbourBlock = new Hashtable(); NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(aSim.Value.serverIP.ToString()).ToString(); @@ -395,7 +395,7 @@ namespace OpenSim.Grid.GridServer { Hashtable requestData = (Hashtable)request.Params[0]; Hashtable responseData = new Hashtable(); - SimProfileData simData = null; + RegionProfileData simData = null; if (requestData.ContainsKey("region_UUID")) { simData = getRegion(new LLUUID((string)requestData["region_UUID"])); @@ -461,9 +461,9 @@ namespace OpenSim.Grid.GridServer if (fastMode) { - Dictionary neighbours = getRegions((uint)xmin, (uint)ymin, (uint)xmax, (uint)ymax); + Dictionary neighbours = getRegions((uint)xmin, (uint)ymin, (uint)xmax, (uint)ymax); - foreach (KeyValuePair aSim in neighbours) + foreach (KeyValuePair aSim in neighbours) { Hashtable simProfileBlock = new Hashtable(); simProfileBlock["x"] = aSim.Value.regionLocX.ToString(); @@ -489,7 +489,7 @@ namespace OpenSim.Grid.GridServer } else { - SimProfileData simProfile; + RegionProfileData simProfile; for (int x = xmin; x < xmax+1; x++) { for (int y = ymin; y < ymax+1; y++) @@ -564,7 +564,7 @@ namespace OpenSim.Grid.GridServer { string respstring = String.Empty; - SimProfileData TheSim; + RegionProfileData TheSim; LLUUID UUID = new LLUUID(param); TheSim = getRegion(UUID); @@ -598,11 +598,11 @@ namespace OpenSim.Grid.GridServer public string RestSetSimMethod(string request, string path, string param) { Console.WriteLine("Processing region update via REST method"); - SimProfileData TheSim; + RegionProfileData TheSim; TheSim = getRegion(new LLUUID(param)); if ((TheSim) == null) { - TheSim = new SimProfileData(); + TheSim = new RegionProfileData(); LLUUID UUID = new LLUUID(param); TheSim.UUID = UUID; TheSim.regionRecvKey = config.SimRecvKey; diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index 8f89727..10a8974 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs @@ -56,8 +56,8 @@ namespace OpenSim.Grid.UserServer /// The user profile public override void CustomiseResponse(LoginResponse response, UserProfileData theUser) { - // Load information from the gridserver - SimProfileData SimInfo = new SimProfileData(); + // Load information from the gridserver + RegionProfileData SimInfo = new RegionProfileData(); SimInfo = SimInfo.RequestSimProfileData(theUser.currentAgent.currentHandle, m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey); // Customise the response -- cgit v1.1