move SEED cap to simpleStreamHandler
							parent
							
								
									ba8d188a0d
								
							
						
					
					
						commit
						7856192da6
					
				|  | @ -31,7 +31,9 @@ using System.Collections; | |||
| using System.Collections.Generic; | ||||
| using System.Collections.Specialized; | ||||
| using System.IO; | ||||
| using System.Net; | ||||
| using System.Reflection; | ||||
| using System.Security.Cryptography; | ||||
| using System.Text; | ||||
| using System.Web; | ||||
| 
 | ||||
|  | @ -130,7 +132,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
|         private bool m_AllowCapGroupMemberData = true; | ||||
|         private  IUserManagement m_UserManager; | ||||
|         private IUserAccountService m_userAccountService; | ||||
| 
 | ||||
|         private IMoneyModule m_moneyModule; | ||||
| 
 | ||||
|         private enum FileAgentInventoryState : int | ||||
|         { | ||||
|  | @ -212,6 +214,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
|             m_regionName = m_Scene.RegionInfo.RegionName; | ||||
|             m_UserManager = m_Scene.RequestModuleInterface<IUserManagement>(); | ||||
|             m_userAccountService = m_Scene.RequestModuleInterface<IUserAccountService>(); | ||||
|             m_moneyModule = m_Scene.RequestModuleInterface<IMoneyModule>(); | ||||
|             if (m_UserManager == null) | ||||
|                 m_log.Error("[CAPS]: GetDisplayNames disabled because user management component not found"); | ||||
| 
 | ||||
|  | @ -242,14 +245,11 @@ namespace OpenSim.Region.ClientStack.Linden | |||
|         public void RegisterHandlers() | ||||
|         { | ||||
|             // this path is also defined elsewhere so keeping it | ||||
|             string seedcapsBase = "/CAPS/" + m_HostCapsObj.CapsObjectPath +"0000/"; | ||||
|             string seedcapsBase = "/CAPS/" + m_HostCapsObj.CapsObjectPath + "0000/"; | ||||
| 
 | ||||
|             // the root of all evil path needs to be capsBase + m_requestPath | ||||
|             m_HostCapsObj.RegisterHandler( | ||||
|                     "SEED", new RestStreamHandler("POST", seedcapsBase, SeedCapRequest, "SEED", null)); | ||||
| 
 | ||||
| //                m_log.DebugFormat( | ||||
| //                    "[CAPS]: Registered seed capability {0} for {1}", seedcapsBase, m_HostCapsObj.AgentID); | ||||
|             m_HostCapsObj.RegisterSimpleHandler("SEED", new SimpleStreamHandler(seedcapsBase, SeedCapRequest)); | ||||
|             // m_log.DebugFormat( | ||||
|             //     "[CAPS]: Registered seed capability {0} for {1}", seedcapsBase, m_HostCapsObj.AgentID); | ||||
| 
 | ||||
|             RegisterRegionServiceHandlers(); | ||||
|             RegisterInventoryServiceHandlers(); | ||||
|  | @ -368,41 +368,62 @@ namespace OpenSim.Region.ClientStack.Linden | |||
|         /// <param name="httpRequest">HTTP request header object</param> | ||||
|         /// <param name="httpResponse">HTTP response header object</param> | ||||
|         /// <returns></returns> | ||||
|         public string SeedCapRequest(string request, string path, string param, | ||||
|                                   IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) | ||||
|         public void SeedCapRequest(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) | ||||
|         { | ||||
|             UUID agentID = m_HostCapsObj.AgentID; | ||||
|             m_log.DebugFormat( | ||||
|                 "[CAPS]: Received SEED caps request in {0} for agent {1}", m_regionName, agentID); | ||||
| 
 | ||||
|             if(httpRequest.HttpMethod != "POST" || httpRequest.ContentType != "application/llsd+xml") | ||||
|             { | ||||
|                 httpResponse.StatusCode = (int)HttpStatusCode.NotFound; | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             if (!m_HostCapsObj.WaitForActivation()) | ||||
|                 return string.Empty; | ||||
|             { | ||||
|                 httpResponse.StatusCode = (int)HttpStatusCode.ServiceUnavailable; | ||||
|                 httpResponse.AddHeader("Retry-After", "30"); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             if (!m_Scene.CheckClient(agentID, httpRequest.RemoteIPEndPoint)) | ||||
|             { | ||||
|                 m_log.WarnFormat( | ||||
|                     "[CAPS]: Unauthorized CAPS client {0} from {1}", | ||||
|                     agentID, httpRequest.RemoteIPEndPoint); | ||||
| 
 | ||||
|                 return string.Empty; | ||||
|                 httpResponse.StatusCode = (int)HttpStatusCode.Forbidden; | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             OSDArray capsRequested = (OSDArray)OSDParser.DeserializeLLSDXml(request); | ||||
|             OSDArray capsRequested; | ||||
|             try | ||||
|             { | ||||
|                 capsRequested = (OSDArray)OSDParser.DeserializeLLSDXml(httpRequest.InputStream); | ||||
|             } | ||||
|             catch | ||||
|             { | ||||
|                 httpResponse.StatusCode = (int)HttpStatusCode.BadRequest; | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
| 
 | ||||
|             List<string> validCaps = new List<string>(); | ||||
| 
 | ||||
|             foreach (OSD c in capsRequested) | ||||
|             { | ||||
|                 string cstr = c.AsString(); | ||||
|                 if(cstr == "ObjectAnimation") | ||||
|                 if (cstr.Equals("ObjectAnimation")) | ||||
|                     m_HostCapsObj.Flags |= Caps.CapsFlags.ObjectAnim; | ||||
|                 else if (cstr.Equals("ExtEnvironment")) | ||||
|                     m_HostCapsObj.Flags |= Caps.CapsFlags.AdvEnv; | ||||
|                 validCaps.Add(cstr); | ||||
|             } | ||||
| 
 | ||||
|             string result = LLSDHelpers.SerialiseLLSDReply(m_HostCapsObj.GetCapsDetails(true, validCaps)); | ||||
| 
 | ||||
|             httpResponse.RawBuffer = Encoding.UTF8.GetBytes(result); | ||||
|             httpResponse.StatusCode = (int)HttpStatusCode.OK; | ||||
|             //m_log.DebugFormat("[CAPS] CapsRequest {0}", result); | ||||
| 
 | ||||
|             return result; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 UbitUmarov
						UbitUmarov