public void RegionLoaded(Scene scene)
 {
     m_scriptModule = scene.RequestModuleInterface<IScriptModule>();
     
     if (m_scriptModule != null)
         m_log.Info("[MODULE COMMANDS]: Script engine found, module active");
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Execute code within a given module context and returns the result.
        /// The module must be local with respect to the compiled code object.
        /// </summary>
        public object Evaluate(IScriptModule module) {
            ScriptModule localModule;

            if (module == null) {
                localModule = RemoteWrapper.TryGetLocal<ScriptModule>(ScriptDomainManager.CurrentManager.Host.DefaultModule);
            } else {
                localModule = RemoteWrapper.GetLocalArgument<ScriptModule>(module, "module");
            }

            return _code.Run(localModule);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Execute code within a given module context.
 /// The module must be local with respect to the compiled code object.
 /// </summary>
 public void Execute(IScriptModule module)
 {
     Evaluate(module);
 }
Ejemplo n.º 4
0
        public UUID RequestSecureURL(IScriptModule engine, SceneObjectPart host, UUID itemID)
        {
            UUID urlcode = UUID.Random();
            string url = String.Empty;

            if (m_HttpsServer == null)
            {
                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                return urlcode;
            }

            lock (m_UrlMap)
            {
                if (m_UrlMap.Count >= m_TotalUrls)
                {
                    engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                    return urlcode;
                }

                url = m_HttpsServer.ServerURI + "/lslhttps/" + urlcode.ToString() + "/";

                UrlData urlData = new UrlData
                {
                    hostID = host.UUID,
                    itemID = itemID,
                    engine = engine,
                    url = url,
                    urlcode = urlcode,
                    requests = new List<UUID>()
                };

                m_UrlMap[url] = urlData;
            }

            string uri = "/lslhttps/" + urlcode.ToString() + "/";
            m_HttpServer.AddStreamHandler(new AsyncRequestHandler("POST", uri, AsyncHttpRequest));
            m_HttpServer.AddStreamHandler(new AsyncRequestHandler("GET", uri, AsyncHttpRequest));

            engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });

            return urlcode;
        }
        public UUID RequestSecureURL(IScriptModule engine, ISceneChildEntity host, UUID itemID)
        {
            UUID urlcode = UUID.Random();

            engine.PostScriptEvent(itemID, host.UUID, "http_request",
                                   new Object[] {urlcode.ToString(), "URL_REQUEST_DENIED", ""});

            return urlcode;
        }
Ejemplo n.º 6
0
 public void Execute(IScriptModule module) {
     _compiledCode.Execute(module);
 }
Ejemplo n.º 7
0
        public void AddRegion (IScene scene)
        {
            m_scenes.Add (scene);

            scene.RegisterModuleInterface<IXMLRPC> (this);
            m_scriptModule = scene.RequestModuleInterface<IScriptModule> ();
        }
Ejemplo n.º 8
0
 public void RegionLoaded(IScene scene)
 {
     if (IsEnabled() && !m_httpServerStarted)
     {
         m_httpServerStarted = true;
         // Start http server
         // Attach xmlrpc handlers
         MainConsole.Instance.Info("[XMLRPC MODULE]: " +
                                   "Starting up XMLRPC Server on port " + m_remoteDataPort +
                                   " for llRemoteData commands.");
         IHttpServer httpServer = new BaseHttpServer((uint) m_remoteDataPort, MainServer.Instance.HostName,
                                                     false, 1);
         httpServer.AddXmlRPCHandler("llRemoteData", XmlRpcRemoteData);
         httpServer.Start();
     }
     m_scriptModule = scene.RequestModuleInterface<IScriptModule>();
 }
Ejemplo n.º 9
0
 public void PublishModule(IScriptModule module, string publicName) {
     _manager.PublishModule(RemoteWrapper.GetLocalArgument<ScriptModule>(module, "module"), publicName);
 }
Ejemplo n.º 10
0
 public void PublishModule(IScriptModule module, string publicName)
 {
     _manager.PublishModule(RemoteWrapper.GetLocalArgument <ScriptModule>(module, "module"), publicName);
 }
Ejemplo n.º 11
0
 public virtual void PublishModule(IScriptModule module)
 {
     // nop
 }
Ejemplo n.º 12
0
 // Gets a LanguageContext for the specified module that captures the current state
 // of the module which will be used for compilation and execution of the next piece of code against the module.
 private CodeContext GetCodeContext(IScriptModule module)
 {
     return(GetCodeContext((ScriptModule)(module ?? ScriptDomainManager.CurrentManager.Host.DefaultModule)));
 }
Ejemplo n.º 13
0
 public void ModuleCreated(IScriptModule module)
 {
     _host.ModuleCreated(module);
 }
Ejemplo n.º 14
0
 public ICompiledCode CompileInteractiveCode(string code, IScriptModule module)
 {
     Contract.RequiresNotNull(code, "code");
     return(CompileSourceUnit(SourceUnit.CreateSnippet(this, code, SourceCodeKind.InteractiveCode), module));
 }
Ejemplo n.º 15
0
 public CodeSenseProvider(IScriptEngine engine, IScriptModule module) {
     Contract.RequiresNotNull(engine, "engine");
     _engine = engine;
     _module = module;
 }
Ejemplo n.º 16
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="module"></param>
 /// <returns></returns>
 /// <exception cref="System.Runtime.Serialization.SerializationException"></exception>
 /// <exception cref="ArgumentNullException"></exception>
 public bool IsObjectCallable(IObjectHandle obj, IScriptModule module)
 {
     Contract.RequiresNotNull(obj, "obj");
     return(IsObjectCallable(obj.Unwrap(), module));
 }
 public void PublishModule(IScriptModule module) {
     _manager.Environment.PublishModule(module);
 }
Ejemplo n.º 18
0
 public virtual void ModuleCreated(IScriptModule module)
 {
     // nop
 }
 public void PublishModule(IScriptModule module, string publicName) {
     _manager.Environment.PublishModule(module, publicName);
 }
Ejemplo n.º 20
0
        public UUID RequestURL(IScriptModule engine, SceneObjectPart host, UUID itemID)
        {
            UUID urlcode = UUID.Random();

            lock (m_UrlMap)
            {
                if (m_UrlMap.Count >= m_TotalUrls)
                {
                    engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                    return urlcode;
                }
                string url = "http://"+System.Environment.MachineName+":"+m_HttpServer.Port.ToString()+"/lslhttp/"+urlcode.ToString()+"/";

                UrlData urlData = new UrlData();
                urlData.hostID = host.UUID;
                urlData.itemID = itemID;
                urlData.engine = engine;
                urlData.url = url;
                urlData.urlcode = urlcode;
                urlData.requests = new Dictionary<UUID, RequestData>();

                m_UrlMap[url] = urlData;

                m_HttpServer.AddHTTPHandler("/lslhttp/"+urlcode.ToString()+"/", HttpRequestHandler);

                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
            }

            return urlcode;
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Capability originating call to update the asset of an item in an agent's inventory
        /// </summary>
        /// <param name="remoteClient"></param>
        /// <param name="itemID"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public virtual string CapsUpdateInventoryItemAsset(IClientAPI remoteClient, UUID itemID, byte[] data)
        {
            InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);

            item = m_scene.InventoryService.GetItem(item);

            if (item != null)
            {
                if ((InventoryType)item.InvType == InventoryType.Notecard)
                {
                    if (!m_scene.Permissions.CanEditNotecard(itemID, UUID.Zero, remoteClient.AgentId))
                    {
                        remoteClient.SendAlertMessage("Insufficient permissions to edit notecard");
                        return(FailedPermissionsNotecardCAPSUpdate(UUID.Zero, itemID));
                    }

                    AssetBase asset =
                        CreateAsset(item.Name, item.Description, (sbyte)item.AssetType, data, remoteClient.AgentId.ToString());
                    item.AssetID = asset.FullID;
                    m_scene.AssetService.Store(asset);

                    m_scene.InventoryService.UpdateItem(item);

                    return(SuccessNotecardCAPSUpdate(item.AssetID, itemID));
                }
                else if ((InventoryType)item.InvType == InventoryType.LSL)
                {
                    if (!m_scene.Permissions.CanEditScript(itemID, UUID.Zero, remoteClient.AgentId))
                    {
                        return(FailedPermissionsScriptCAPSUpdate(UUID.Zero, itemID));
                    }

                    IScriptModule ScriptEngine = m_scene.RequestModuleInterface <IScriptModule>();

                    AssetBase asset =
                        CreateAsset(item.Name, item.Description, (sbyte)item.AssetType, data, remoteClient.AgentId.ToString());
                    item.AssetID = asset.FullID;
                    m_scene.AssetService.Store(asset);

                    m_scene.InventoryService.UpdateItem(item);

                    if (ScriptEngine != null)
                    {
                        string Errors = ScriptEngine.TestCompileScript(asset.FullID, itemID);
                        if (Errors != "")
                        {
                            return(FailedCompileScriptCAPSUpdate(item.AssetID, itemID, Errors));
                        }
                    }

                    return(SuccessScriptCAPSUpdate(item.AssetID, itemID));
                }
                return("");
            }
            else
            {
                m_log.ErrorFormat(
                    "[AGENT INVENTORY]: Could not find item {0} for caps inventory update",
                    itemID);
            }

            return("");
        }
Ejemplo n.º 22
0
        /// <summary>
        /// Execute code within a given module context and returns the result.
        /// The module must be local with respect to the compiled code object.
        /// </summary>
        public object Evaluate(IScriptModule module)
        {
            IScriptModule localModule;

            if (module == null) {
                localModule = ScriptDomainManager.CurrentManager.Host.DefaultModule;
            } else {
                localModule = module;
            }

            return _code.Run((ScriptModule)localModule);
        }
Ejemplo n.º 23
0
 public virtual void ModuleCreated(IScriptModule module)
 {
     // nop
 }
Ejemplo n.º 24
0
 public IObjectHandle EvaluateAndWrap(IScriptModule module) {
     return _compiledCode.EvaluateAndWrap(module);
 }
Ejemplo n.º 25
0
 public void AddRegion(Scene scene)
 {
     m_scene = scene;
     m_scene.RegisterModuleInterface<IWorldComm>(this);
     m_scriptModule = scene.RequestModuleInterface<IScriptModule> ();
     m_scene.EventManager.OnChatFromClient += DeliverClientMessage;
     m_scene.EventManager.OnChatBroadcast += DeliverClientMessage;
 }
Ejemplo n.º 26
0
 public void ModuleCreated(IScriptModule module) {
     _host.ModuleCreated(module);
 }
Ejemplo n.º 27
0
 public virtual void ModuleCreated(IScriptModule module)
 {
     Contract.RequiresNotNull(module, "module");
     Debug.Assert(_remoteHost != null);
     _remoteHost.ModuleCreated(RemoteWrapper.WrapRemotable <IScriptModule>(module));
 }
 public void RegionLoaded(IScene scene)
 {
     m_scriptModule = scene.RequestModuleInterface<IScriptModule>();
 }
Ejemplo n.º 29
0
        public void SetState(string objXMLData, IScene ins)
        {
            if (!(ins is Scene))
            {
                return;
            }

            Scene s = (Scene)ins;

            if (objXMLData == String.Empty)
            {
                return;
            }

            IScriptModule scriptModule = null;

            foreach (IScriptModule sm in s.RequestModuleInterfaces <IScriptModule>())
            {
                if (sm.ScriptEngineName == s.DefaultScriptEngine)
                {
                    scriptModule = sm;
                }
                else if (scriptModule == null)
                {
                    scriptModule = sm;
                }
            }

            if (scriptModule == null)
            {
                return;
            }

            XmlDocument doc = new XmlDocument();

            try
            {
                doc.LoadXml(objXMLData);
            }
            catch (Exception) // (System.Xml.XmlException)
            {
                // We will get here if the XML is invalid or in unit
                // tests. Really should determine which it is and either
                // fail silently or log it
                // Fail silently, for now.
                // TODO: Fix this
                //
                return;
            }

            XmlNodeList rootL = doc.GetElementsByTagName("ScriptData");

            if (rootL.Count != 1)
            {
                return;
            }

            XmlElement rootE = (XmlElement)rootL[0];

            XmlNodeList dataL = rootE.GetElementsByTagName("ScriptStates");

            if (dataL.Count != 1)
            {
                return;
            }

            XmlElement dataE = (XmlElement)dataL[0];

            foreach (XmlNode n in dataE.ChildNodes)
            {
                XmlElement stateE = (XmlElement)n;
                UUID       itemID = new UUID(stateE.GetAttribute("UUID"));

                scriptModule.SetXMLState(itemID, n.OuterXml);
            }
        }
Ejemplo n.º 30
0
 /// <summary>
 /// Comvenience hosting API.
 /// </summary>
 public ICompiledCode CompileStatements(string statement, IScriptModule module)
 {
     Contract.RequiresNotNull(statement, "statement");
     return(CompileSourceUnit(SourceUnit.CreateSnippet(this, statement, SourceCodeKind.Statements), module));
 }
Ejemplo n.º 31
0
        /// <summary>
        /// Capability originating call to update the asset of an item in an agent's inventory
        /// </summary>
        /// <param name="remoteClient"></param>
        /// <param name="itemID"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public virtual string CapsUpdateInventoryItemAsset(IClientAPI remoteClient, UUID itemID, byte[] data)
        {
            InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);

            item = m_scene.InventoryService.GetItem(item);

            if (item != null)
            {
                if ((InventoryType)item.InvType == InventoryType.Notecard)
                {
                    if (!m_scene.Permissions.CanEditNotecard(itemID, UUID.Zero, remoteClient.AgentId))
                    {
                        remoteClient.SendAlertMessage("Insufficient permissions to edit notecard");
                        return(FailedPermissionsNotecardCAPSUpdate(UUID.Zero, itemID));
                    }

                    UUID newID;
                    if ((newID = m_scene.AssetService.UpdateContent(item.AssetID, data)) != UUID.Zero)
                    {
                        item.AssetID = newID;
                    }
                    else
                    {
                        remoteClient.SendAlertMessage("Failed to update notecard asset");
                    }

                    m_scene.InventoryService.UpdateItem(item);

                    return(SuccessNotecardCAPSUpdate(item.AssetID, itemID));
                }
                if ((InventoryType)item.InvType == InventoryType.LSL)
                {
                    if (!m_scene.Permissions.CanEditScript(itemID, UUID.Zero, remoteClient.AgentId))
                    {
                        return(FailedPermissionsScriptCAPSUpdate(UUID.Zero, itemID));
                    }

                    UUID newID;
                    if ((newID = m_scene.AssetService.UpdateContent(item.AssetID, data)) != UUID.Zero)
                    {
                        item.AssetID = newID;
                    }
                    else
                    {
                        remoteClient.SendAlertMessage("Failed to update script asset");
                    }

                    m_scene.InventoryService.UpdateItem(item);

                    IScriptModule ScriptEngine = m_scene.RequestModuleInterface <IScriptModule>();
                    if (ScriptEngine != null)
                    {
                        string Errors = ScriptEngine.TestCompileScript(item.AssetID, itemID);
                        if (Errors != "")
                        {
                            return(FailedCompileScriptCAPSUpdate(item.AssetID, itemID, Errors));
                        }
                    }

                    return(SuccessScriptCAPSUpdate(item.AssetID, itemID));
                }
                return("");
            }
            MainConsole.Instance.ErrorFormat(
                "[AGENT INVENTORY]: Could not find item {0} for caps inventory update",
                itemID);

            return("");
        }
Ejemplo n.º 32
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="module"></param>
 /// <returns></returns>
 /// <exception cref="System.Runtime.Serialization.SerializationException"></exception>
 /// <exception cref="ArgumentNullException"><paramref name="obj"/></exception>
 public string[] GetObjectMemberNames(IObjectHandle obj, IScriptModule module)
 {
     Contract.RequiresNotNull(obj, "obj");
     return(GetObjectMemberNames(obj.Unwrap(), module));
 }
Ejemplo n.º 33
0
        public UUID RequestURL(IScriptModule engine, SceneObjectPart host, UUID itemID, Hashtable options)
        {
            UUID urlcode;

            if (options != null && options["PersistentURL"] != null)
            {
                urlcode = (UUID)options["PersistentURL"];
            }
            else
            {
                urlcode = UUID.Random();
            }

            if (!m_enabled)
            {
                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", m_ErrorStr });
                return(urlcode);
            }

            lock (m_UrlMap)
            {
                if (m_UrlMap.Count >= TotalUrls)
                {
                    engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED",
                                                                                  "Too many URLs already open" });
                    return(urlcode);
                }
                string url = "http://" + ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + "/lslhttp/" + urlcode.ToString() + "/";

                UrlData urlData = new UrlData();
                urlData.hostID   = host.UUID;
                urlData.itemID   = itemID;
                urlData.engine   = engine;
                urlData.url      = url;
                urlData.urlcode  = urlcode;
                urlData.isSsl    = false;
                urlData.requests = new Dictionary <UUID, RequestData>();
                urlData.scene    = host.ParentGroup.Scene;
                urlData.allowXss = false;

                if (options != null && options["allowXss"] != null)
                {
                    urlData.allowXss = true;
                }

                m_UrlMap[url] = urlData;

                string uri = "/lslhttp/" + urlcode.ToString() + "/";

                PollServiceEventArgs args
                          = new PollServiceEventArgs(HttpRequestHandler, uri, HasEvents, GetEvents, NoEvents, Drop, urlcode, 25000);
                args.Type = PollServiceEventArgs.EventType.LslHttp;
                m_HttpServer.AddPollServiceHTTPHandler(uri, args);

//                m_log.DebugFormat(
//                    "[URL MODULE]: Set up incoming request url {0} for {1} in {2} {3}",
//                    uri, itemID, host.Name, host.LocalId);

                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
            }

            return(urlcode);
        }
Ejemplo n.º 34
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="expression"></param>
 /// <param name="module">Can be <c>null</c>.</param>
 /// <returns></returns>
 /// <exception cref="ArgumentNullException"><paramref name="expression"/></exception>
 public IObjectHandle EvaluateAndWrap(string expression, IScriptModule module)
 {
     return(new ObjectHandle(Evaluate(expression, module)));
 }
Ejemplo n.º 35
0
 public void RegisterNewReceiver(IScriptModule scriptEngine, UUID channel, UUID objectID, UUID itemID, string uri)
 {
     scriptEngine.PostScriptEvent(itemID, "xmlrpc_uri", new Object[] { uri });
 }
Ejemplo n.º 36
0
        public UUID RequestSecureURL(IScriptModule engine, SceneObjectPart host, UUID itemID, Hashtable options)
        {
            UUID urlcode = UUID.Random();

            if (m_HttpsServer == null)
            {
                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                return urlcode;
            }

            lock (m_UrlMap)
            {
                if (m_UrlMap.Count >= TotalUrls)
                {
                    engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                    return urlcode;
                }
                string url = "https://" + ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString() + "/";

                UrlData urlData = new UrlData();
                urlData.hostID = host.UUID;
                urlData.itemID = itemID;
                urlData.engine = engine;
                urlData.url = url;
                urlData.urlcode = urlcode;
                urlData.isSsl = true;
                urlData.requests = new Dictionary<UUID, RequestData>();
                urlData.allowXss = false;

                if (options != null && options["allowXss"] != null)
                    urlData.allowXss = true;
                
                m_UrlMap[url] = urlData;
                
                string uri = "/lslhttps/" + urlcode.ToString() + "/";
               
                PollServiceEventArgs args 
                    = new PollServiceEventArgs(HttpRequestHandler, uri, HasEvents, GetEvents, NoEvents, urlcode, 25000);
                args.Type = PollServiceEventArgs.EventType.LslHttp;
                m_HttpsServer.AddPollServiceHTTPHandler(uri, args);

//                m_log.DebugFormat(
//                    "[URL MODULE]: Set up incoming secure request url {0} for {1} in {2} {3}",
//                    uri, itemID, host.Name, host.LocalId);

                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
            }

            return urlcode;
        }
Ejemplo n.º 37
0
        public UUID RequestSecureURL(IScriptModule engine, SceneObjectPart host, UUID itemID, Hashtable options)
        {
            UUID urlcode = UUID.Random();

            if (!m_enabled)
            {
                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", m_ErrorStr });
                return(urlcode);
            }

            if (m_HttpsServer == null)
            {
                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                return(urlcode);
            }

            lock (m_UrlMap)
            {
                if (m_UrlMap.Count >= TotalUrls)
                {
                    engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED",
                                                                                  "Too many URLs already open" });
                    return(urlcode);
                }
                string url = "https://" + ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString();

                UUID    groupID = host.ParentGroup.UUID;
                UrlData urlData = new UrlData();
                urlData.hostID   = host.UUID;
                urlData.groupID  = groupID;
                urlData.itemID   = itemID;
                urlData.engine   = engine;
                urlData.url      = url;
                urlData.urlcode  = urlcode;
                urlData.isSsl    = true;
                urlData.requests = new Dictionary <UUID, RequestData>();
                urlData.allowXss = false;

                if (options != null && options["allowXss"] != null)
                {
                    urlData.allowXss = true;
                }

                m_UrlMap[url] = urlData;

                if (m_countsPerSOG.TryGetValue(groupID, out int urlcount))
                {
                    m_countsPerSOG[groupID] = ++urlcount;
                }
                else
                {
                    m_countsPerSOG[groupID] = 1;
                }

                string uri = "/lslhttps/" + urlcode.ToString();

                PollServiceEventArgs args
                    = new PollServiceEventArgs(HttpRequestHandler, uri, HasEvents, GetEvents, NoEvents, Drop, urlcode, 25000);
                m_HttpsServer.AddPollServiceHTTPHandlerVarPath(args);

                //m_log.DebugFormat(
                //    "[URL MODULE]: Set up incoming secure request url {0} for {1} in {2} {3}",
                //     uri, itemID, host.Name, host.LocalId);
                // keep ending / because legacy
                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url + "/" });
            }

            return(urlcode);
        }
Ejemplo n.º 38
0
 public virtual void ModuleCreated(IScriptModule module) {
     Contract.RequiresNotNull(module, "module");
     Debug.Assert(_remoteHost != null);
     _remoteHost.ModuleCreated(RemoteWrapper.WrapRemotable<IScriptModule>(module));
 }
Ejemplo n.º 39
0
 public void RegionLoaded(IScene scene)
 {
     m_scriptModule = scene.RequestModuleInterface <IScriptModule>();
 }
Ejemplo n.º 40
0
        public UUID RequestSecureURL(IScriptModule engine, SceneObjectPart host, UUID itemID)
        {
            UUID urlcode = UUID.Random();

            if (m_HttpsServer == null)
            {
                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                return urlcode;
            }

            lock (m_UrlMap) /* this lock here is for preventing concurrency when checking for Url amount */
            {
                if (m_UrlMap.Count >= TotalUrls)
                {
                    engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                    return urlcode;
                }
                string url = "https://" + ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString() + "/";

                UrlData urlData = new UrlData();
                urlData.hostID = host.UUID;
                urlData.itemID = itemID;
                urlData.engine = engine;
                urlData.url = url;
                urlData.urlcode = urlcode;
                urlData.requests = new ThreadedClasses.RwLockedDictionary<UUID, RequestData>();

                m_UrlMap[url] = urlData;
                
                string uri = "/lslhttps/" + urlcode.ToString() + "/";
               
                PollServiceEventArgs args 
                    = new PollServiceEventArgs(HttpRequestHandler, uri, HasEvents, GetEvents, NoEvents, urlcode, 25000);
                args.Type = PollServiceEventArgs.EventType.LslHttp;
                m_HttpsServer.AddPollServiceHTTPHandler(uri, args);

                m_log.DebugFormat(
                    "[URL MODULE]: Set up incoming secure request url {0} for {1} in {2} {3}",
                    uri, itemID, host.Name, host.LocalId);

                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
            }

            return urlcode;
        }
Ejemplo n.º 41
0
 public string[] GetObjectMemberNames(object obj, IScriptModule module)
 {
     Contract.RequiresNotNull(obj, "obj");
     return(FormatObjectMemberNames(Ops_GetAttrNames(GetCodeContext(module), obj)));
 }
Ejemplo n.º 42
0
        public UUID RequestURL(IScriptModule engine, SceneObjectPart host, UUID itemID)
        {
            UUID urlcode = UUID.Random();

            lock (m_UrlMap)
            {
                if (m_UrlMap.Count >= m_TotalUrls)
                {
                    engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                    return urlcode;
                }
                string url = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + "/lslhttp/" + urlcode.ToString() + "/";

                UrlData urlData = new UrlData();
                urlData.hostID = host.UUID;
                urlData.itemID = itemID;
                urlData.engine = engine;
                urlData.url = url;
                urlData.urlcode = urlcode;
                urlData.requests = new Dictionary<UUID, RequestData>();
                
                m_UrlMap[url] = urlData;
                
                string uri = "/lslhttp/" + urlcode.ToString() + "/";
               
                m_HttpServer.AddPollServiceHTTPHandler(
                    uri,
                    new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, urlcode));

                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
            }

            return urlcode;
        }
Ejemplo n.º 43
0
        public bool TryGetVariable(string name, IScriptModule module, out object obj)
        {
            CodeContext context = GetCodeContext(module);

            return(context.LanguageContext.TryLookupName(context, SymbolTable.StringToId(name), out obj));
        }
Ejemplo n.º 44
0
 /// <summary>
 /// Execute code within a given module context. 
 /// The module must be local with respect to the compiled code object.
 /// </summary>
 public void Execute(IScriptModule module)
 {
     Evaluate(module);
 }
Ejemplo n.º 45
0
 public bool TryGetObjectMemberValue(object obj, string name, IScriptModule module, out object value)
 {
     Contract.RequiresNotNull(obj, "obj");
     return(Ops_TryGetAttr(GetCodeContext(module), obj, SymbolTable.StringToId(name), out value));
 }
Ejemplo n.º 46
0
 public void RegisterNewReceiver(IScriptModule scriptEngine, UUID channel, UUID objectID, UUID itemID, string uri)
 {
     scriptEngine.PostScriptEvent(itemID, objectID, "xmlrpc_uri", new Object[] {uri});
 }
Ejemplo n.º 47
0
        public bool IsObjectCallable(object obj, IScriptModule module)
        {
            Contract.RequiresNotNull(obj, "obj");

            return(Ops_IsCallable(GetCodeContext(module), obj));
        }
Ejemplo n.º 48
0
 // throws SerializationException
 public object Evaluate(IScriptModule module) {
     return _compiledCode.Evaluate(module);
 }
Ejemplo n.º 49
0
 public object Evaluate(string expression, IScriptModule module)
 {
     Contract.RequiresNotNull(expression, "expression");
     return(CompileExpression(expression, module).Evaluate(module));
 }
        public void RegisterNewReceiver(IScriptModule scriptEngine, UUID channel, UUID objectID, UUID itemID, string uri)
        {
            if (!m_Channels.ContainsKey(itemID))
            {
                XmlRpcInfo info = new XmlRpcInfo();
                info.channel = channel;
                info.uri = uri;

                bool success = SynchronousRestObjectPoster.BeginPostObject<XmlRpcInfo, bool>(
                        "POST", m_ServerURI+"/RegisterChannel/", info);

                if (!success)
                {
                    m_log.Error("[XMLRPC GRID ROUTER] Error contacting server");
                }

                m_Channels[itemID] = channel;
            }
        }
Ejemplo n.º 51
0
 public object EvaluateSourceUnit(SourceUnit sourceUnit, IScriptModule module)
 {
     Contract.RequiresNotNull(sourceUnit, "sourceUnit");
     return(CompileSourceUnit(sourceUnit, module).Evaluate(module));
 }
Ejemplo n.º 52
0
        public UUID RequestURL(IScriptModule engine, ISceneChildEntity host, UUID itemID)
        {
            UUID urlcode = UUID.Random();

            lock (m_UrlMap)
            {
                if (m_UrlMap.Count >= m_TotalUrls)
                {
                    engine.PostScriptEvent(itemID, host.UUID, "http_request",
                                           new Object[] {urlcode.ToString(), "URL_REQUEST_DENIED", ""});
                    return urlcode;
                }
                string url = MainServer.Instance.ServerURI + "/lslhttp/" + urlcode.ToString() + "/";

                UrlData urlData = new UrlData
                                      {
                                          hostID = host.UUID,
                                          itemID = itemID,
                                          engine = engine,
                                          url = url,
                                          urlcode = urlcode,
                                          requests = new Dictionary<UUID, RequestData>()
                                      };

                m_UrlMap[url] = urlData;

                string uri = "/lslhttp/" + urlcode.ToString() + "/";
                MainServer.Instance.AddPollServiceHTTPHandler(uri, new PollServiceEventArgs(HttpRequestHandler, HasEvents,
                                                                                       GetEvents, NoEvents,
                                                                                       urlcode));

                engine.PostScriptEvent(itemID, host.UUID, "http_request",
                                       new Object[] {urlcode.ToString(), "URL_REQUEST_GRANTED", url});
            }

            return urlcode;
        }
Ejemplo n.º 53
0
 public void ExecuteFileContent(string path, IScriptModule module)
 {
     CompileFileContent(path, module).Execute(module);
 }
Ejemplo n.º 54
0
        public UUID RequestSecureURL(IScriptModule engine, SceneObjectPart host, UUID itemID)
        {
            UUID urlcode = UUID.Random();

            if (m_HttpsServer == null)
            {
                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                return urlcode;
            }

            lock (m_UrlMap)
            {
                if (m_UrlMap.Count >= m_TotalUrls)
                {
                    engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
                    return urlcode;
                }
                string url = "https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString() + "/";

                UrlData urlData = new UrlData();
                urlData.hostID = host.UUID;
                urlData.itemID = itemID;
                urlData.engine = engine;
                urlData.url = url;
                urlData.urlcode = urlcode;
                urlData.requests = new Dictionary<UUID, RequestData>();

                m_UrlMap[url] = urlData;
                
                string uri = "/lslhttps/" + urlcode.ToString() + "/";
               
                m_HttpsServer.AddPollServiceHTTPHandler(
                    uri,
                    new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, urlcode));

                m_log.DebugFormat(
                    "[URL MODULE]: Set up incoming secure request url {0} for {1} in {2} {3}",
                    uri, itemID, host.Name, host.LocalId);

                engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
            }

            return urlcode;
        }
Ejemplo n.º 55
0
 /// <summary>
 /// Execute a snippet of code within the scope of the specified module. Convenience API.
 /// </summary>
 public void Execute(string code, IScriptModule module)
 {
     Contract.RequiresNotNull(code, "code");
     ExecuteSourceUnit(SourceUnit.CreateSnippet(this, code), module);
 }
Ejemplo n.º 56
0
        public void RegisterNewReceiver(IScriptModule scriptEngine, UUID channel, UUID objectID, UUID itemID, string uri)
        {
            if (!m_Enabled)
                return;

            m_log.InfoFormat("[XMLRPC GRID ROUTER]: New receiver Obj: {0} Ch: {1} ID: {2} URI: {3}", 
                                objectID.ToString(), channel.ToString(), itemID.ToString(), uri);

            XmlRpcInfo info = new XmlRpcInfo();
            info.channel = channel;
            info.uri = uri;
            info.item = itemID;

            bool success = SynchronousRestObjectRequester.MakeRequest<XmlRpcInfo, bool>(
                    "POST", m_ServerURI+"/RegisterChannel/", info);

            if (!success)
            {
                m_log.Error("[XMLRPC GRID ROUTER] Error contacting server");
            }

            m_Channels[itemID] = channel;

        }
Ejemplo n.º 57
0
 public void ExecuteSourceUnit(SourceUnit sourceUnit, IScriptModule module)
 {
     Contract.RequiresNotNull(sourceUnit, "sourceUnit");
     CompileSourceUnit(sourceUnit, module).Execute(module);
 }
Ejemplo n.º 58
0
        public void AddRegion(IScene scene)
        {
            m_scene = scene;

            m_scriptModule = scene.RequestModuleInterface<IScriptModule>();
            m_scene.RegisterModuleInterface<IHttpRequestModule>(this);
        }
Ejemplo n.º 59
0
 public IObjectHandle EvaluateAndWrap(IScriptModule module)
 {
     return(new ObjectHandle(Evaluate(module)));
 }