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 '')
-rw-r--r-- | OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs | 53 |
1 files changed, 42 insertions, 11 deletions
diff --git a/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs b/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs index b507bdd..90104f2 100644 --- a/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs +++ b/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs | |||
@@ -276,6 +276,12 @@ namespace OpenSim.Region.CoreModules.Communications.REST | |||
276 | return false; | 276 | return false; |
277 | } | 277 | } |
278 | 278 | ||
279 | public bool SendCreateObject(ulong regionHandle, UUID userID, UUID itemID) | ||
280 | { | ||
281 | // Not Implemented | ||
282 | return false; | ||
283 | } | ||
284 | |||
279 | /** | 285 | /** |
280 | * Region-related communications | 286 | * Region-related communications |
281 | */ | 287 | */ |
@@ -527,13 +533,13 @@ namespace OpenSim.Region.CoreModules.Communications.REST | |||
527 | 533 | ||
528 | public Hashtable ObjectHandler(Hashtable request) | 534 | public Hashtable ObjectHandler(Hashtable request) |
529 | { | 535 | { |
530 | //m_log.Debug("[CONNECTION DEBUGGING]: ObjectHandler Called"); | 536 | m_log.Debug("[CONNECTION DEBUGGING]: ObjectHandler Called"); |
531 | 537 | ||
532 | //m_log.Debug("---------------------------"); | 538 | m_log.Debug("---------------------------"); |
533 | //m_log.Debug(" >> uri=" + request["uri"]); | 539 | m_log.Debug(" >> uri=" + request["uri"]); |
534 | //m_log.Debug(" >> content-type=" + request["content-type"]); | 540 | m_log.Debug(" >> content-type=" + request["content-type"]); |
535 | //m_log.Debug(" >> http-method=" + request["http-method"]); | 541 | m_log.Debug(" >> http-method=" + request["http-method"]); |
536 | //m_log.Debug("---------------------------\n"); | 542 | m_log.Debug("---------------------------\n"); |
537 | 543 | ||
538 | Hashtable responsedata = new Hashtable(); | 544 | Hashtable responsedata = new Hashtable(); |
539 | responsedata["content_type"] = "text/html"; | 545 | responsedata["content_type"] = "text/html"; |
@@ -557,11 +563,11 @@ namespace OpenSim.Region.CoreModules.Communications.REST | |||
557 | DoObjectPost(request, responsedata, regionHandle); | 563 | DoObjectPost(request, responsedata, regionHandle); |
558 | return responsedata; | 564 | return responsedata; |
559 | } | 565 | } |
560 | //else if (method.Equals("PUT")) | 566 | else if (method.Equals("PUT")) |
561 | //{ | 567 | { |
562 | // DoObjectPut(request, responsedata, agentID); | 568 | DoObjectPut(request, responsedata, regionHandle); |
563 | // return responsedata; | 569 | return responsedata; |
564 | //} | 570 | } |
565 | //else if (method.Equals("DELETE")) | 571 | //else if (method.Equals("DELETE")) |
566 | //{ | 572 | //{ |
567 | // DoObjectDelete(request, responsedata, agentID, action, regionHandle); | 573 | // DoObjectDelete(request, responsedata, agentID, action, regionHandle); |
@@ -632,6 +638,31 @@ namespace OpenSim.Region.CoreModules.Communications.REST | |||
632 | responsedata["str_response_string"] = result.ToString(); | 638 | responsedata["str_response_string"] = result.ToString(); |
633 | } | 639 | } |
634 | 640 | ||
641 | protected virtual void DoObjectPut(Hashtable request, Hashtable responsedata, ulong regionhandle) | ||
642 | { | ||
643 | OSDMap args = RegionClient.GetOSDMap((string)request["body"]); | ||
644 | if (args == null) | ||
645 | { | ||
646 | responsedata["int_response_code"] = 400; | ||
647 | responsedata["str_response_string"] = "false"; | ||
648 | return; | ||
649 | } | ||
650 | |||
651 | UUID userID = UUID.Zero, itemID = UUID.Zero; | ||
652 | if (args["userid"] != null) | ||
653 | userID = args["userid"].AsUUID(); | ||
654 | if (args["itemid"] != null) | ||
655 | itemID = args["itemid"].AsUUID(); | ||
656 | |||
657 | UUID regionID = m_localBackend.GetRegionID(regionhandle); | ||
658 | |||
659 | // This is the meaning of PUT object | ||
660 | bool result = m_localBackend.SendCreateObject(regionhandle, userID, itemID); | ||
661 | |||
662 | responsedata["int_response_code"] = 200; | ||
663 | responsedata["str_response_string"] = result.ToString(); | ||
664 | } | ||
665 | |||
635 | /* | 666 | /* |
636 | * Region-related incoming calls | 667 | * Region-related incoming calls |
637 | * | 668 | * |