public void RegionLoaded(Scene scene) { m_scriptModule = scene.RequestModuleInterface<IScriptModule>(); if (m_scriptModule != null) m_log.Info("[MODULE COMMANDS]: Script engine found, module active"); }
/// <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); }
/// <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); }
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; }
public void Execute(IScriptModule module) { _compiledCode.Execute(module); }
public void AddRegion (IScene scene) { m_scenes.Add (scene); scene.RegisterModuleInterface<IXMLRPC> (this); m_scriptModule = scene.RequestModuleInterface<IScriptModule> (); }
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>(); }
public void PublishModule(IScriptModule module, string publicName) { _manager.PublishModule(RemoteWrapper.GetLocalArgument<ScriptModule>(module, "module"), publicName); }
public void PublishModule(IScriptModule module, string publicName) { _manager.PublishModule(RemoteWrapper.GetLocalArgument <ScriptModule>(module, "module"), publicName); }
public virtual void PublishModule(IScriptModule module) { // nop }
// 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))); }
public void ModuleCreated(IScriptModule module) { _host.ModuleCreated(module); }
public ICompiledCode CompileInteractiveCode(string code, IScriptModule module) { Contract.RequiresNotNull(code, "code"); return(CompileSourceUnit(SourceUnit.CreateSnippet(this, code, SourceCodeKind.InteractiveCode), module)); }
public CodeSenseProvider(IScriptEngine engine, IScriptModule module) { Contract.RequiresNotNull(engine, "engine"); _engine = engine; _module = module; }
/// <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); }
public virtual void ModuleCreated(IScriptModule module) { // nop }
public void PublishModule(IScriptModule module, string publicName) { _manager.Environment.PublishModule(module, publicName); }
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; }
/// <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(""); }
/// <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); }
public IObjectHandle EvaluateAndWrap(IScriptModule module) { return _compiledCode.EvaluateAndWrap(module); }
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; }
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>(); }
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); } }
/// <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)); }
/// <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(""); }
/// <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)); }
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); }
/// <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))); }
public void RegisterNewReceiver(IScriptModule scriptEngine, UUID channel, UUID objectID, UUID itemID, string uri) { scriptEngine.PostScriptEvent(itemID, "xmlrpc_uri", new Object[] { uri }); }
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; }
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); }
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>(); }
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; }
public string[] GetObjectMemberNames(object obj, IScriptModule module) { Contract.RequiresNotNull(obj, "obj"); return(FormatObjectMemberNames(Ops_GetAttrNames(GetCodeContext(module), obj))); }
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; }
public bool TryGetVariable(string name, IScriptModule module, out object obj) { CodeContext context = GetCodeContext(module); return(context.LanguageContext.TryLookupName(context, SymbolTable.StringToId(name), out obj)); }
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)); }
public void RegisterNewReceiver(IScriptModule scriptEngine, UUID channel, UUID objectID, UUID itemID, string uri) { scriptEngine.PostScriptEvent(itemID, objectID, "xmlrpc_uri", new Object[] {uri}); }
public bool IsObjectCallable(object obj, IScriptModule module) { Contract.RequiresNotNull(obj, "obj"); return(Ops_IsCallable(GetCodeContext(module), obj)); }
// throws SerializationException public object Evaluate(IScriptModule module) { return _compiledCode.Evaluate(module); }
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; } }
public object EvaluateSourceUnit(SourceUnit sourceUnit, IScriptModule module) { Contract.RequiresNotNull(sourceUnit, "sourceUnit"); return(CompileSourceUnit(sourceUnit, module).Evaluate(module)); }
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; }
public void ExecuteFileContent(string path, IScriptModule module) { CompileFileContent(path, module).Execute(module); }
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; }
/// <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); }
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; }
public void ExecuteSourceUnit(SourceUnit sourceUnit, IScriptModule module) { Contract.RequiresNotNull(sourceUnit, "sourceUnit"); CompileSourceUnit(sourceUnit, module).Execute(module); }
public void AddRegion(IScene scene) { m_scene = scene; m_scriptModule = scene.RequestModuleInterface<IScriptModule>(); m_scene.RegisterModuleInterface<IHttpRequestModule>(this); }
public IObjectHandle EvaluateAndWrap(IScriptModule module) { return(new ObjectHandle(Evaluate(module))); }