do a whole load of crappy hacking to get cubes to display google.com
currently, for smoe reason the page only appears when you click a face. also, actually navigating anywhere always snaps you back to the google search box, for some unknown reason you can still change the url and normal navigation will work againprebuild-update
							parent
							
								
									2be7d0cdd4
								
							
						
					
					
						commit
						701f39c8c2
					
				|  | @ -362,7 +362,7 @@ namespace OpenSim.Framework.Servers.HttpServer | ||||||
|                 string path = request.RawUrl; |                 string path = request.RawUrl; | ||||||
|                 string handlerKey = GetHandlerKey(request.HttpMethod, path); |                 string handlerKey = GetHandlerKey(request.HttpMethod, path); | ||||||
| 
 | 
 | ||||||
|                 //m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path); |                 m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path); | ||||||
| 
 | 
 | ||||||
|                 if (TryGetStreamHandler(handlerKey, out requestHandler)) |                 if (TryGetStreamHandler(handlerKey, out requestHandler)) | ||||||
|                 { |                 { | ||||||
|  |  | ||||||
|  | @ -35,8 +35,10 @@ using log4net; | ||||||
| using Mono.Addins; | using Mono.Addins; | ||||||
| using Nini.Config; | using Nini.Config; | ||||||
| using OpenMetaverse; | using OpenMetaverse; | ||||||
|  | using OpenMetaverse.Messages.Linden; | ||||||
| using OpenMetaverse.StructuredData; | using OpenMetaverse.StructuredData; | ||||||
| using OpenSim.Framework; | using OpenSim.Framework; | ||||||
|  | using OpenSim.Framework.Capabilities; | ||||||
| using OpenSim.Framework.Servers; | using OpenSim.Framework.Servers; | ||||||
| using OpenSim.Framework.Servers.HttpServer; | using OpenSim.Framework.Servers.HttpServer; | ||||||
| using OpenSim.Region.Framework.Interfaces; | using OpenSim.Region.Framework.Interfaces; | ||||||
|  | @ -77,28 +79,109 @@ namespace OpenSim.Region.CoreModules.Media.Moap | ||||||
|             m_log.DebugFormat( |             m_log.DebugFormat( | ||||||
|                 "[MOAP]: Registering ObjectMedia and ObjectMediaNavigate capabilities for agent {0}", agentID); |                 "[MOAP]: Registering ObjectMedia and ObjectMediaNavigate capabilities for agent {0}", agentID); | ||||||
|              |              | ||||||
|  |             // We do receive a post to ObjectMedia when a new avatar enters the region - though admittedly this is the | ||||||
|  |             // avatar that set the texture in the first place. | ||||||
|  |             // Even though we're registering for POST we're going to get GETS and UPDATES too | ||||||
|             caps.RegisterHandler( |             caps.RegisterHandler( | ||||||
|                 "ObjectMedia", new RestStreamHandler("GET", "/CAPS/" + UUID.Random(), OnObjectMediaRequest)); |                 "ObjectMedia", new RestStreamHandler("POST", "/CAPS/" + UUID.Random(), HandleObjectMediaRequest)); | ||||||
|  |              | ||||||
|  |             // We do get these posts when the url has been changed. | ||||||
|  |             // Even though we're registering for POST we're going to get GETS and UPDATES too | ||||||
|             caps.RegisterHandler( |             caps.RegisterHandler( | ||||||
|                 "ObjectMediaNavigate", new RestStreamHandler("GET", "/CAPS/" + UUID.Random(), OnObjectMediaNavigateRequest)); |                 "ObjectMediaNavigate", new RestStreamHandler("POST", "/CAPS/" + UUID.Random(), HandleObjectMediaNavigateRequest)); | ||||||
|         }         |         }         | ||||||
|          |          | ||||||
|         protected string OnObjectMediaRequest( |         /// <summary> | ||||||
|  |         /// Sets or gets per face media textures. | ||||||
|  |         /// </summary> | ||||||
|  |         /// <param name="request"></param> | ||||||
|  |         /// <param name="path"></param> | ||||||
|  |         /// <param name="param"></param> | ||||||
|  |         /// <param name="httpRequest"></param> | ||||||
|  |         /// <param name="httpResponse"></param> | ||||||
|  |         /// <returns></returns> | ||||||
|  |         protected string HandleObjectMediaRequest( | ||||||
|             string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) |             string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) | ||||||
|         {             |         {             | ||||||
|             m_log.DebugFormat("[MOAP]: Got ObjectMedia request for {0}", path); |             m_log.DebugFormat("[MOAP]: Got ObjectMedia raw request [{0}]", request); | ||||||
|  |              | ||||||
|  |             Hashtable osdParams = new Hashtable(); | ||||||
|  |             osdParams = (Hashtable)LLSD.LLSDDeserialize(Utils.StringToBytes(request));             | ||||||
|  |              | ||||||
|  |             foreach (Object key in osdParams.Keys) | ||||||
|  |                 m_log.DebugFormat("[MOAP]: Param {0}={1}", key, osdParams[key]); | ||||||
|  |              | ||||||
|  |             string verb = (string)osdParams["verb"]; | ||||||
|  |              | ||||||
|  |             if ("GET" == verb) | ||||||
|  |                 return HandleObjectMediaRequestGet(path, osdParams, httpRequest, httpResponse); | ||||||
|  |                                      | ||||||
|             //NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query); |             //NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query); | ||||||
|              |              | ||||||
|  |             // TODO: Persist in memory | ||||||
|  |             // TODO: Tell other agents in the region about the change via the ObjectMediaResponse (?) message | ||||||
|  |             // TODO: Persist in database              | ||||||
|  |              | ||||||
|             return string.Empty; |             return string.Empty; | ||||||
|         } |         } | ||||||
|          |          | ||||||
|         protected string OnObjectMediaNavigateRequest( |         protected string HandleObjectMediaRequestGet( | ||||||
|  |             string path, Hashtable osdParams, OSHttpRequest httpRequest, OSHttpResponse httpResponse)         | ||||||
|  |         { | ||||||
|  |             // Yeah, only for cubes right now.  I know it's dumb. | ||||||
|  |             int faces = 6; | ||||||
|  |              | ||||||
|  |             MediaEntry[] media = new MediaEntry[faces]; | ||||||
|  |             for (int i = 0; i < faces; i++) | ||||||
|  |             { | ||||||
|  |                 MediaEntry me = new MediaEntry();                 | ||||||
|  |                 me.HomeURL = "google.com"; | ||||||
|  |                 me.CurrentURL = "google.com"; | ||||||
|  |                 me.AutoScale = true; | ||||||
|  |                 //me.Height = 300; | ||||||
|  |                 //me.Width = 240; | ||||||
|  |                 media[i] = me; | ||||||
|  |             } | ||||||
|  |              | ||||||
|  |             ObjectMediaResponse resp = new ObjectMediaResponse(); | ||||||
|  |              | ||||||
|  |             resp.PrimID = (UUID)osdParams["object_id"]; | ||||||
|  |             resp.FaceMedia = media; | ||||||
|  |              | ||||||
|  |             // I know this has to end with the last avatar to edit and the version code shouldn't always be 16.  Just trying | ||||||
|  |             // to minimally satisfy for now to get something working | ||||||
|  |             resp.Version = "x-mv:0000000016/" + UUID.Random(); | ||||||
|  |             | ||||||
|  |             //string rawResp = resp.Serialize().ToString(); | ||||||
|  |             string rawResp = OSDParser.SerializeLLSDXmlString(resp.Serialize()); | ||||||
|  |              | ||||||
|  |             m_log.DebugFormat("[MOAP]: Got HandleObjectMediaRequestGet raw response is [{0}]", rawResp); | ||||||
|  |              | ||||||
|  |             return rawResp; | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         /// <summary> | ||||||
|  |         /// Received from the viewer if a user has changed the url of a media texture. | ||||||
|  |         /// </summary> | ||||||
|  |         /// <param name="request"></param> | ||||||
|  |         /// <param name="path"></param> | ||||||
|  |         /// <param name="param"></param> | ||||||
|  |         /// <param name="httpRequest">/param> | ||||||
|  |         /// <param name="httpResponse">/param> | ||||||
|  |         /// <returns></returns> | ||||||
|  |         protected string HandleObjectMediaNavigateRequest( | ||||||
|             string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) |             string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) | ||||||
|         {             |         {             | ||||||
|             m_log.DebugFormat("[MOAP]: Got ObjectMediaNavigate request for {0}", path); |             m_log.DebugFormat("[MOAP]: Got ObjectMediaNavigate request for {0}", path); | ||||||
|             //NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query); |             //NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query); | ||||||
|              |              | ||||||
|  |             // TODO: Persist in memory | ||||||
|  |             // TODO: Tell other agents in the region about the change via the ObjectMediaResponse (?) message | ||||||
|  |             // TODO: Persist in database             | ||||||
|  |              | ||||||
|             return string.Empty; |             return string.Empty; | ||||||
|         }    |         }    | ||||||
|  |          | ||||||
|  |          | ||||||
|     } |     } | ||||||
| } | } | ||||||
		Loading…
	
		Reference in New Issue
	
	 Justin Clark-Casey (justincc)
						Justin Clark-Casey (justincc)