/// <summary> /// Initializes the JavaScript engine /// </summary> private void InitializeJavaScript() { // Create the JavaScript engine JavaScriptEngine = new Engine(cfg => cfg.AllowClr(AppDomain.CurrentDomain.GetAssemblies().Where(AllowAssemblyAccess).ToArray())); JavaScriptEngine.Global.FastSetProperty("importNamespace", new PropertyDescriptor(new ClrFunctionInstance(JavaScriptEngine, (thisObj, arguments) => { var nspace = TypeConverter.ToString(arguments.At(0)); if (string.IsNullOrEmpty(nspace) || (WhitelistNamespaces?.Any(nspace.StartsWith) ?? false) || nspace.Equals("System")) { return(new NamespaceReference(JavaScriptEngine, nspace)); } return(JsValue.Null); }), false, false, false)); }
private bool CheckModule(string moduleName, PythonTuple fromlist) { if (WhitelistNamespaces?.Any(moduleName.StartsWith) ?? false) { return(true); } if (moduleName.Equals("System") && !fromlist.Any(@from => @from.Equals("IO"))) { return(true); } if (_allowedTypes.Contains(moduleName)) { return(true); } if (WhitelistModules.Contains(moduleName)) { return(true); } string[] parts; return(WhitelistParts.TryGetValue(moduleName, out parts) && fromlist.All(@from => parts.Contains(@from))); }