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
							
								
									e098d33929
								
							
						
					
					
						commit
						94646599f0
					
				| 
						 | 
				
			
			@ -362,7 +362,7 @@ namespace OpenSim.Framework.Servers.HttpServer
 | 
			
		|||
                string path = request.RawUrl;
 | 
			
		||||
                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))
 | 
			
		||||
                {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,8 +35,10 @@ using log4net;
 | 
			
		|||
using Mono.Addins;
 | 
			
		||||
using Nini.Config;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenMetaverse.Messages.Linden;
 | 
			
		||||
using OpenMetaverse.StructuredData;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Capabilities;
 | 
			
		||||
using OpenSim.Framework.Servers;
 | 
			
		||||
using OpenSim.Framework.Servers.HttpServer;
 | 
			
		||||
using OpenSim.Region.Framework.Interfaces;
 | 
			
		||||
| 
						 | 
				
			
			@ -77,28 +79,109 @@ namespace OpenSim.Region.CoreModules.Media.Moap
 | 
			
		|||
            m_log.DebugFormat(
 | 
			
		||||
                "[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(
 | 
			
		||||
                "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(
 | 
			
		||||
                "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)
 | 
			
		||||
        {            
 | 
			
		||||
            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);
 | 
			
		||||
            
 | 
			
		||||
            // 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;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        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)
 | 
			
		||||
        {            
 | 
			
		||||
            m_log.DebugFormat("[MOAP]: Got ObjectMediaNavigate request for {0}", path);
 | 
			
		||||
            //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;
 | 
			
		||||
        }        
 | 
			
		||||
        }   
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue