diff --git a/OpenGridServices.GridServer/Main.cs b/OpenGridServices.GridServer/Main.cs
index c69b6dcd86..55e2b00196 100644
--- a/OpenGridServices.GridServer/Main.cs
+++ b/OpenGridServices.GridServer/Main.cs
@@ -47,20 +47,10 @@ namespace OpenGridServices.GridServer
public class OpenGrid_Main : BaseServer, conscmd_callback
{
private string ConfigDll = "OpenGrid.Config.GridConfigDb4o.dll";
- private GridConfig Cfg;
+ public GridConfig Cfg;
public static OpenGrid_Main thegrid;
- public string GridOwner;
- public string DefaultStartupMsg;
- public string DefaultAssetServer;
- public string AssetSendKey;
- public string AssetRecvKey;
- public string DefaultUserServer;
- public string UserSendKey;
- public string UserRecvKey;
- public string SimSendKey;
- public string SimRecvKey;
//public LLUUID highestUUID;
private SimProfileManager m_simProfileManager;
@@ -109,10 +99,10 @@ namespace OpenGridServices.GridServer
httpServer.AddXmlRPCHandler("simulator_login", m_simProfileManager.XmlRpcLoginToSimulatorMethod);
- httpServer.AddRestHandler("GET", "/sims", m_simProfileManager.RestGetSimMethod);
- httpServer.AddRestHandler("POST", "/sims", m_simProfileManager.RestSetSimMethod);
- httpServer.AddRestHandler("GET", "/regions", m_simProfileManager.RestGetRegionMethod);
- httpServer.AddRestHandler("POST", "/regions", m_simProfileManager.RestSetRegionMethod);
+ httpServer.AddRestHandler("GET", "/sims/", m_simProfileManager.RestGetSimMethod);
+ httpServer.AddRestHandler("POST", "/sims/", m_simProfileManager.RestSetSimMethod);
+ httpServer.AddRestHandler("GET", "/regions/", m_simProfileManager.RestGetRegionMethod);
+ httpServer.AddRestHandler("POST", "/regions/", m_simProfileManager.RestSetRegionMethod);
// lbsa71 : This code snippet taken from old http server.
diff --git a/OpenGridServices.GridServer/SimProfiles.cs b/OpenGridServices.GridServer/SimProfiles.cs
index 9e93db08e9..5e02b4f3da 100644
--- a/OpenGridServices.GridServer/SimProfiles.cs
+++ b/OpenGridServices.GridServer/SimProfiles.cs
@@ -71,7 +71,10 @@ namespace OpenGridServices.GridServer
}
public SimProfileBase GetProfileByLLUUID(LLUUID ProfileLLUUID) {
- return SimProfiles[ProfileLLUUID];
+ foreach (libsecondlife.LLUUID UUID in SimProfiles.Keys) {
+ if(SimProfiles[UUID].UUID==ProfileLLUUID) return SimProfiles[UUID];
+ }
+ return null;
}
public bool AuthenticateSim(LLUUID RegionUUID, uint regionhandle, string simrecvkey) {
@@ -172,13 +175,13 @@ namespace OpenGridServices.GridServer
responseData["estate_id"] = "1";
responseData["neighbours"] = SimNeighboursData;
- responseData["asset_url"] = m_gridManager.DefaultAssetServer;
- responseData["asset_sendkey"] = m_gridManager.AssetSendKey;
- responseData["asset_recvkey"] = m_gridManager.AssetRecvKey;
- responseData["user_url"] = m_gridManager.DefaultUserServer;
- responseData["user_sendkey"] = m_gridManager.UserSendKey;
- responseData["user_recvkey"] = m_gridManager.UserRecvKey;
- responseData["authkey"] = m_gridManager.SimSendKey;
+ responseData["asset_url"] = m_gridManager.Cfg.DefaultAssetServer;
+ responseData["asset_sendkey"] = m_gridManager.Cfg.AssetSendKey;
+ responseData["asset_recvkey"] = m_gridManager.Cfg.AssetRecvKey;
+ responseData["user_url"] = m_gridManager.Cfg.DefaultUserServer;
+ responseData["user_sendkey"] = m_gridManager.Cfg.UserSendKey;
+ responseData["user_recvkey"] = m_gridManager.Cfg.UserRecvKey;
+ responseData["authkey"] = m_gridManager.Cfg.SimSendKey;
}
return response;
@@ -188,30 +191,33 @@ namespace OpenGridServices.GridServer
{
Console.WriteLine("SimProfiles.cs:RestSetSimMethod() - processing request......");
SimProfileBase TheSim;
- LLUUID UUID = new LLUUID(param);
- TheSim = GetProfileByLLUUID(UUID);
- if ((TheSim) == null) TheSim = new SimProfileBase();
-
+ TheSim = GetProfileByLLUUID(new LLUUID(param));
+ if ((TheSim) == null) {
+ TheSim = new SimProfileBase();
+ LLUUID UUID = new LLUUID(param);
+ TheSim.UUID=UUID;
+ }
+
XmlDocument doc = new XmlDocument();
doc.LoadXml(request);
- XmlNode authkeynode = doc.FirstChild;
+ XmlNode rootnode=doc.FirstChild;
+ XmlNode authkeynode = rootnode.ChildNodes[0];
if (authkeynode.Name != "authkey")
{
return "ERROR! bad XML - expected authkey tag";
}
- XmlNode simnode = doc.ChildNodes[1];
+ XmlNode simnode = rootnode.ChildNodes[1];
if (simnode.Name != "sim")
{
return "ERROR! bad XML - expected sim tag";
}
- if (authkeynode.InnerText != m_gridManager.SimRecvKey)
+ if (authkeynode.InnerText != m_gridManager.Cfg.SimRecvKey)
{
- return "ERROR! invalid key";
+ return "ERROR! invalid key";
}
-
- for (int i = 0; i <= simnode.ChildNodes.Count; i++) {
+ for (int i = 0; i < simnode.ChildNodes.Count; i++) {
switch (simnode.ChildNodes[i].Name) {
case "regionname":
TheSim.regionname = simnode.ChildNodes[i].InnerText;
@@ -231,12 +237,23 @@ namespace OpenGridServices.GridServer
break;
case "region_locy":
- TheSim.RegionLocY = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
- TheSim.regionhandle = Helpers.UIntsToLong((TheSim.RegionLocX * 256), (TheSim.RegionLocY * 256));
+ TheSim.RegionLocY = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
+ TheSim.regionhandle = Helpers.UIntsToLong((TheSim.RegionLocX * 256), (TheSim.RegionLocY * 256));
break;
- }
+ }
}
- return "OK";
+
+ try {
+ SimProfiles.Add(TheSim.UUID, TheSim);
+ IObjectContainer db;
+ db = Db4oFactory.OpenFile("simprofiles.yap");
+ db.Set(TheSim);
+ db.Close();
+ return "OK";
+ } catch(Exception e) {
+ return "ERROR! could not save to database!";
+ }
+
}
public string RestGetRegionMethod(string request, string path, string param )
@@ -261,7 +278,8 @@ namespace OpenGridServices.GridServer
if (!(TheSim == null))
{
- respstring = "" + m_gridManager.SimSendKey + "";
+ respstring = "";
+ respstring += "" + m_gridManager.Cfg.SimSendKey + "";
respstring += "";
respstring += "" + TheSim.UUID.ToString() + "";
respstring += "" + TheSim.regionname + "";
@@ -271,6 +289,7 @@ namespace OpenGridServices.GridServer
respstring += "" + TheSim.RegionLocY.ToString() + "";
respstring += "1";
respstring += "";
+ respstring += "";
}
return respstring;
diff --git a/OpenSim.RegionServer/RegionInfo.cs b/OpenSim.RegionServer/RegionInfo.cs
index 9958f1a5b9..abc674fe68 100644
--- a/OpenSim.RegionServer/RegionInfo.cs
+++ b/OpenSim.RegionServer/RegionInfo.cs
@@ -44,7 +44,8 @@ namespace OpenSim
//we really want to keep any server connection code out of here and out of the code code
// and put it in the server connection classes (those inheriting from IGridServer etc)
string reqtext;
- reqtext = "" + this.GridSendKey + "";
+ reqtext = "";
+ reqtext += "" + this.GridSendKey + "";
reqtext += "";
reqtext += "" + this.SimUUID.ToString() + "";
reqtext += "" + this.RegionName + "";
@@ -54,6 +55,7 @@ namespace OpenSim
reqtext += "" + this.RegionLocY.ToString() + "";
reqtext += "1";
reqtext += "";
+ reqtext += "";
byte[] reqdata = (new System.Text.ASCIIEncoding()).GetBytes(reqtext);
@@ -67,7 +69,7 @@ namespace OpenSim
stOut.Close();
WebResponse gridresp = GridSaveReq.GetResponse();
- StreamReader stIn = new StreamReader(gridresp.GetResponseStream());
+ StreamReader stIn = new StreamReader(gridresp.GetResponseStream(), Encoding.ASCII);
string GridResponse = stIn.ReadToEnd();
stIn.Close();
gridresp.Close();
diff --git a/OpenSim.Servers/BaseHttpServer.cs b/OpenSim.Servers/BaseHttpServer.cs
index 0a123b75cd..bb8f0ad176 100644
--- a/OpenSim.Servers/BaseHttpServer.cs
+++ b/OpenSim.Servers/BaseHttpServer.cs
@@ -154,6 +154,7 @@ namespace OpenSim.Servers
public virtual void HandleRequest(Object stateinfo)
{
+ try {
HttpListenerContext context = (HttpListenerContext)stateinfo;
HttpListenerRequest request = context.Request;
@@ -210,7 +211,10 @@ namespace OpenSim.Servers
response.SendChunked = false;
response.ContentLength64 = buffer.Length;
output.Write(buffer, 0, buffer.Length);
- output.Close();
+ output.Close();
+ } catch (Exception e) {
+ Console.WriteLine(e.ToString());
+ }
}
public void Start()