add cap DispatchRegionInfo

This commit is contained in:
UbitUmarov
2024-04-15 04:33:20 +01:00
parent c1c19784ff
commit 7dda8b4154
4 changed files with 132 additions and 31 deletions

View File

@@ -286,6 +286,9 @@ namespace OpenSim.Region.ClientStack.Linden
m_HostCapsObj.RegisterSimpleHandler("AttachmentResources",
new SimpleStreamHandler(GetNewCapPath(), AttachmentResources));
}
m_HostCapsObj.RegisterSimpleHandler("DispatchRegionInfo",
new SimpleOSDMapHandler("POST", GetNewCapPath(), DispatchRegionInfo), true);
}
catch (Exception e)
{

View File

@@ -0,0 +1,56 @@
using System;
using System.Collections;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OSDMap = OpenMetaverse.StructuredData.OSDMap;
namespace OpenSim.Region.ClientStack.Linden
{
public partial class BunchOfCaps
{
public void DispatchRegionInfo(IOSHttpRequest request, IOSHttpResponse response, OSDMap map)
{
m_log.Debug("[CAPS]: DispatchRegionInfo Request in region: " + m_regionName + "\n");
if (request.HttpMethod != "POST")
{
response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
if(map == map.Count < 3)
{
response.StatusCode = (int)HttpStatusCode.BadRequest;
return;
}
if (!m_Scene.TryGetScenePresence(m_AgentID, out ScenePresence _) || !m_Scene.Permissions.CanIssueEstateCommand(m_AgentID, false))
{
response.StatusCode = (int)HttpStatusCode.Unauthorized;
return;
}
IEstateModule estateModule = m_Scene.RequestModuleInterface<IEstateModule>();
if (estateModule == null)
{
response.StatusCode = (int)HttpStatusCode.NotImplemented;
return;
}
response.StatusCode = estateModule.SetRegionInfobyCap(map) ? (int)HttpStatusCode.OK : (int)HttpStatusCode.NotImplemented;
}
}
}