diff options
Added CreateObject(regionhandle, userID, itemID) to post objects that are to be fetched from the user's inventory server and rezzed in the region. Added all code necessary to fetch the item and the asset, and rez it inworld. The access to the item is uncap-ed and unverified -- I may place it later either under a cap or with auth verification. But in this model regions don't have the user's inventory, so they would have to guess the item IDs.
Added safemode config to Standalone Hypergrid, similar effect to AllowRegionAccessToInventory in Inventory Server. Everyone should have these vars set to their default values except me!
Diffstat (limited to 'OpenSim/Framework/Communications/Clients/RegionClient.cs')
-rw-r--r-- | OpenSim/Framework/Communications/Clients/RegionClient.cs | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/OpenSim/Framework/Communications/Clients/RegionClient.cs b/OpenSim/Framework/Communications/Clients/RegionClient.cs index d98852b..196bcf9 100644 --- a/OpenSim/Framework/Communications/Clients/RegionClient.cs +++ b/OpenSim/Framework/Communications/Clients/RegionClient.cs | |||
@@ -417,6 +417,82 @@ namespace OpenSim.Framework.Communications.Clients | |||
417 | 417 | ||
418 | } | 418 | } |
419 | 419 | ||
420 | public bool DoCreateObjectCall(RegionInfo region, UUID userID, UUID itemID) | ||
421 | { | ||
422 | ulong regionHandle = GetRegionHandle(region.RegionHandle); | ||
423 | string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/object/" + UUID.Zero + "/" + regionHandle.ToString() + "/"; | ||
424 | //m_log.Debug(" >>> DoCreateChildAgentCall <<< " + uri); | ||
425 | |||
426 | WebRequest ObjectCreateRequest = WebRequest.Create(uri); | ||
427 | ObjectCreateRequest.Method = "PUT"; | ||
428 | ObjectCreateRequest.ContentType = "application/json"; | ||
429 | ObjectCreateRequest.Timeout = 10000; | ||
430 | |||
431 | OSDMap args = new OSDMap(2); | ||
432 | args["userid"] = OSD.FromUUID(userID); | ||
433 | args["itemid"] = OSD.FromUUID(itemID); | ||
434 | |||
435 | string strBuffer = ""; | ||
436 | byte[] buffer = new byte[1]; | ||
437 | try | ||
438 | { | ||
439 | strBuffer = OSDParser.SerializeJsonString(args); | ||
440 | UTF8Encoding str = new UTF8Encoding(); | ||
441 | buffer = str.GetBytes(strBuffer); | ||
442 | |||
443 | } | ||
444 | catch (Exception e) | ||
445 | { | ||
446 | m_log.WarnFormat("[REST COMMS]: Exception thrown on serialization of CreateObject: {0}", e.Message); | ||
447 | // ignore. buffer will be empty, caller should check. | ||
448 | } | ||
449 | |||
450 | Stream os = null; | ||
451 | try | ||
452 | { // send the Post | ||
453 | ObjectCreateRequest.ContentLength = buffer.Length; //Count bytes to send | ||
454 | os = ObjectCreateRequest.GetRequestStream(); | ||
455 | os.Write(buffer, 0, strBuffer.Length); //Send it | ||
456 | os.Close(); | ||
457 | //m_log.InfoFormat("[REST COMMS]: Posted CreateObject request to remote sim {0}", uri); | ||
458 | } | ||
459 | //catch (WebException ex) | ||
460 | catch | ||
461 | { | ||
462 | // m_log.InfoFormat("[REST COMMS]: Bad send on CreateObject {0}", ex.Message); | ||
463 | |||
464 | return false; | ||
465 | } | ||
466 | |||
467 | // Let's wait for the response | ||
468 | //m_log.Info("[REST COMMS]: Waiting for a reply after DoCreateChildAgentCall"); | ||
469 | |||
470 | try | ||
471 | { | ||
472 | WebResponse webResponse = ObjectCreateRequest.GetResponse(); | ||
473 | if (webResponse == null) | ||
474 | { | ||
475 | m_log.Info("[REST COMMS]: Null reply on DoCreateObjectCall post"); | ||
476 | } | ||
477 | |||
478 | StreamReader sr = new StreamReader(webResponse.GetResponseStream()); | ||
479 | sr.ReadToEnd().Trim(); | ||
480 | sr.ReadToEnd().Trim(); | ||
481 | sr.Close(); | ||
482 | |||
483 | //m_log.InfoFormat("[REST COMMS]: DoCreateChildAgentCall reply was {0} ", reply); | ||
484 | |||
485 | } | ||
486 | catch (WebException ex) | ||
487 | { | ||
488 | m_log.InfoFormat("[REST COMMS]: exception on reply of DoCreateObjectCall {0}", ex.Message); | ||
489 | // ignore, really | ||
490 | } | ||
491 | |||
492 | return true; | ||
493 | |||
494 | } | ||
495 | |||
420 | public bool DoHelloNeighbourCall(RegionInfo region, RegionInfo thisRegion) | 496 | public bool DoHelloNeighbourCall(RegionInfo region, RegionInfo thisRegion) |
421 | { | 497 | { |
422 | string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/region/" + thisRegion.RegionID + "/"; | 498 | string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/region/" + thisRegion.RegionID + "/"; |