From 8ff1d0968ff3c4173b036398359ef62a356ad2b2 Mon Sep 17 00:00:00 2001 From: mingchen Date: Tue, 26 Jun 2007 17:50:27 +0000 Subject: *Added support for reservations in OpenGridServices (mysql only for now) *SQL file coming soon (as soon as I can figure out how to get the --- .../OpenGrid.Framework.Data.MSSQL/MSSQLGridData.cs | 8 ++-- .../OpenGrid.Framework.Data.MySQL/MySQLGridData.cs | 27 +++++++++++ .../OpenGrid.Framework.Data.MySQL/MySQLManager.cs | 28 +++++++++++ .../SQLiteGridData.cs | 5 ++ .../OpenGridServices.AssetServer/Main.cs | 2 +- .../OpenGridServices.GridServer/GridManager.cs | 26 ++++++---- .../OpenGridServices.UserServer/Main.cs | 8 ++-- .../OpenGridServices.UserServer.csproj | 55 ++++++++++++---------- 8 files changed, 119 insertions(+), 40 deletions(-) (limited to 'OpenGridServices') diff --git a/OpenGridServices/OpenGrid.Framework.Data.MSSQL/MSSQLGridData.cs b/OpenGridServices/OpenGrid.Framework.Data.MSSQL/MSSQLGridData.cs index 92169c4..1dac4bd 100644 --- a/OpenGridServices/OpenGrid.Framework.Data.MSSQL/MSSQLGridData.cs +++ b/OpenGridServices/OpenGrid.Framework.Data.MSSQL/MSSQLGridData.cs @@ -181,10 +181,12 @@ namespace OpenGrid.Framework.Data.MSSQL byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge); byte[] hash = HashProvider.ComputeHash(stream); - return false; } + public ReservationData GetReservationAtPoint(uint x, uint y) + { + return null; + } } - - + } diff --git a/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLGridData.cs b/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLGridData.cs index d9a517d..4d6cf63 100644 --- a/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLGridData.cs +++ b/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLGridData.cs @@ -252,6 +252,33 @@ namespace OpenGrid.Framework.Data.MySQL return false; } + + public ReservationData GetReservationAtPoint(uint x, uint y) + { + try + { + lock (database) + { + Dictionary param = new Dictionary(); + param["?x"] = x.ToString(); + param["?y"] = y.ToString(); + System.Data.IDbCommand result = database.Query("SELECT * FROM reservations WHERE resXMin <= ?x AND resXMax >= ?x AND resYMin <= ?y AND resYMax >= ?y", param); + System.Data.IDataReader reader = result.ExecuteReader(); + + ReservationData row = database.readReservationRow(reader); + reader.Close(); + result.Dispose(); + + return row; + } + } + catch (Exception e) + { + database.Reconnect(); + Console.WriteLine(e.ToString()); + return null; + } + } } diff --git a/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLManager.cs b/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLManager.cs index 76d3faf..53b3bdd 100644 --- a/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLManager.cs +++ b/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLManager.cs @@ -241,6 +241,34 @@ namespace OpenGrid.Framework.Data.MySQL } /// + /// Reads a reservation row from a database reader + /// + /// An active database reader + /// A reservation data object + public ReservationData readReservationRow(IDataReader reader) + { + ReservationData retval = new ReservationData(); + if (reader.Read()) + { + retval.gridRecvKey = (string)reader["gridRecvKey"]; + retval.gridSendKey = (string)reader["gridSendKey"]; + retval.reservationCompany = (string)reader["resCompany"]; + retval.reservationMaxX = (int)reader["resXMax"]; + retval.reservationMaxY = (int)reader["resYMax"]; + retval.reservationMinX = (int)reader["resXMin"]; + retval.reservationMinY = (int)reader["resYMin"]; + retval.reservationName = (string)reader["resName"]; + retval.status = (bool)reader["status"]; + retval.userUUID = new libsecondlife.LLUUID((string)reader["userUUID"]); + + } + else + { + return null; + } + return retval; + } + /// /// Reads an agent row from a database reader /// /// An active database reader diff --git a/OpenGridServices/OpenGrid.Framework.Data.SQLite/SQLiteGridData.cs b/OpenGridServices/OpenGrid.Framework.Data.SQLite/SQLiteGridData.cs index 94ed46f..d7a5a69 100644 --- a/OpenGridServices/OpenGrid.Framework.Data.SQLite/SQLiteGridData.cs +++ b/OpenGridServices/OpenGrid.Framework.Data.SQLite/SQLiteGridData.cs @@ -184,6 +184,11 @@ namespace OpenGrid.Framework.Data.SQLite return false; } + + public ReservationData GetReservationAtPoint(uint x, uint y) + { + return null; + } } diff --git a/OpenGridServices/OpenGridServices.AssetServer/Main.cs b/OpenGridServices/OpenGridServices.AssetServer/Main.cs index 057004d..96c9dba 100644 --- a/OpenGridServices/OpenGridServices.AssetServer/Main.cs +++ b/OpenGridServices/OpenGridServices.AssetServer/Main.cs @@ -81,7 +81,7 @@ namespace OpenGridServices.AssetServer private OpenAsset_Main() { m_console = new LogBase("opengrid-AssetServer-console.log", "OpenAsset", this, false); - MainLog.Instance = m_console; + OpenSim.Framework.Console.MainLog.Instance = m_console; } public void Startup() diff --git a/OpenGridServices/OpenGridServices.GridServer/GridManager.cs b/OpenGridServices/OpenGridServices.GridServer/GridManager.cs index cfbf591..bf80652 100644 --- a/OpenGridServices/OpenGridServices.GridServer/GridManager.cs +++ b/OpenGridServices/OpenGridServices.GridServer/GridManager.cs @@ -392,11 +392,11 @@ namespace OpenGridServices.GridServer simProfileBlock["map-image-id"] = simProfile.regionMapTextureID.ToString(); // For Sugilite compatibility - simProfileBlock["regionhandle"] = aSim.Value.regionHandle.ToString(); - simProfileBlock["sim_ip"] = aSim.Value.serverIP.ToString(); - simProfileBlock["sim_port"] = aSim.Value.serverPort.ToString(); - simProfileBlock["sim_uri"] = aSim.Value.serverURI.ToString(); - simProfileBlock["uuid"] = aSim.Value.UUID.ToStringHyphenated(); + simProfileBlock["regionhandle"] = simProfile.regionHandle.ToString(); + simProfileBlock["sim_ip"] = simProfile.serverIP.ToString(); + simProfileBlock["sim_port"] = simProfile.serverPort.ToString(); + simProfileBlock["sim_uri"] = simProfile.serverURI.ToString(); + simProfileBlock["uuid"] = simProfile.UUID.ToStringHyphenated(); simProfileList.Add(simProfileBlock); } @@ -561,6 +561,7 @@ namespace OpenGridServices.GridServer return "ERROR! Servers must register with public addresses."; } + try { OpenSim.Framework.Console.MainLog.Instance.Verbose("Updating / adding via " + _plugins.Count + " storage provider(s) registered."); @@ -568,9 +569,18 @@ namespace OpenGridServices.GridServer { try { - kvp.Value.AddProfile(TheSim); - OpenSim.Framework.Console.MainLog.Instance.Verbose("New sim added to grid (" + TheSim.regionName + ")"); - logToDB(TheSim.UUID.ToStringHyphenated(), "RestSetSimMethod", "", 5, "Region successfully updated and connected to grid."); + //Check reservations + ReservationData reserveData = kvp.Value.GetReservationAtPoint(TheSim.regionLocX, TheSim.regionLocY); + if ((reserveData != null && reserveData.gridRecvKey == TheSim.regionRecvKey) || (reserveData == null)) + { + kvp.Value.AddProfile(TheSim); + OpenSim.Framework.Console.MainLog.Instance.Verbose("New sim added to grid (" + TheSim.regionName + ")"); + logToDB(TheSim.UUID.ToStringHyphenated(), "RestSetSimMethod", "", 5, "Region successfully updated and connected to grid."); + } + else + { + return "Unable to update region (RestSetSimMethod): Incorrect auth key."; + } } catch (Exception e) { diff --git a/OpenGridServices/OpenGridServices.UserServer/Main.cs b/OpenGridServices/OpenGridServices.UserServer/Main.cs index 56a3892..5c27d57 100644 --- a/OpenGridServices/OpenGridServices.UserServer/Main.cs +++ b/OpenGridServices/OpenGridServices.UserServer/Main.cs @@ -73,7 +73,7 @@ namespace OpenGridServices.UserServer private OpenUser_Main() { m_console = new LogBase("opengrid-userserver-console.log", "OpenUser", this , false); - MainLog.Instance = m_console; + OpenSim.Framework.Console.MainLog.Instance = m_console; } private void Work() @@ -93,16 +93,16 @@ namespace OpenGridServices.UserServer this.ConfigDB(this.localXMLConfig); this.localXMLConfig.Close(); - MainLog.Instance.Verbose("Main.cs:Startup() - Loading configuration"); + OpenSim.Framework.Console.MainLog.Instance.Verbose("Main.cs:Startup() - Loading configuration"); Cfg = this.LoadConfigDll(this.ConfigDll); Cfg.InitConfig(); - MainLog.Instance.Verbose( "Main.cs:Startup() - Establishing data connection"); + OpenSim.Framework.Console.MainLog.Instance.Verbose("Main.cs:Startup() - Establishing data connection"); m_userManager = new UserManager(); m_userManager._config = Cfg; m_userManager.AddPlugin(StorageDll); - MainLog.Instance.Verbose("Main.cs:Startup() - Starting HTTP process"); + OpenSim.Framework.Console.MainLog.Instance.Verbose("Main.cs:Startup() - Starting HTTP process"); BaseHttpServer httpServer = new BaseHttpServer(8002); httpServer.AddXmlRPCHandler("login_to_simulator", m_userManager.XmlRpcLoginMethod); diff --git a/OpenGridServices/OpenGridServices.UserServer/OpenGridServices.UserServer.csproj b/OpenGridServices/OpenGridServices.UserServer/OpenGridServices.UserServer.csproj index ad0080a..32368c5 100644 --- a/OpenGridServices/OpenGridServices.UserServer/OpenGridServices.UserServer.csproj +++ b/OpenGridServices/OpenGridServices.UserServer/OpenGridServices.UserServer.csproj @@ -1,4 +1,4 @@ - + Local 8.0.50727 @@ -6,7 +6,8 @@ {66591469-0000-0000-0000-000000000000} Debug AnyCPU - + + OpenGridServices.UserServer @@ -15,9 +16,11 @@ IE50 false Exe - + + OpenGridServices.UserServer - + + @@ -28,7 +31,8 @@ TRACE;DEBUG - + + True 4096 False @@ -37,7 +41,8 @@ False False 4 - + + False @@ -46,7 +51,8 @@ TRACE - + + False 4096 True @@ -55,50 +61,47 @@ False False 4 - + + - + ..\..\bin\Db4objects.Db4o.dll False - + ..\..\bin\libsecondlife.dll False - - OpenGrid.Framework.UserManager.dll - False - - + OpenSim.Framework.dll False - + OpenSim.Framework.Console.dll False - + OpenSim.GenericConfig.Xml.dll False - + OpenSim.Servers.dll False - + System.dll False - + System.Data.dll False - + System.Xml.dll False - + XMLRPC.dll False @@ -108,7 +111,11 @@ OpenGrid.Framework.Data {62CDF671-0000-0000-0000-000000000000} {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - False + False + + + {DA9A7391-0000-0000-0000-000000000000} + OpenGrid.Framework.UserManagement @@ -129,4 +136,4 @@ - + \ No newline at end of file -- cgit v1.1