示例#1
0
 /// <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));
 }
示例#2
0
 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)));
 }