Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/16/08 22:20:13 (15 years ago)
Author:
kgrading
Message:

improved sandbox (#410)

Location:
trunk/sources/HeuristicLab.PluginInfrastructure
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.PluginInfrastructure/PluginManager.cs

    r938 r997  
    161161
    162162    public AppDomain CreateAndInitAppDomainWithSandbox(string friendlyName, bool sandboxed, Type jobType) {
    163 
    164163      PermissionSet pset;
     164
     165      DiscoveryService dService = new DiscoveryService();
     166      //get the declaring plugin of the job
     167      PluginInfo jobPlugin = dService.GetDeclaringPlugin(jobType);
     168
     169      //get all the plugins that have dependencies with the jobplugin
     170      List<PluginInfo> depPlugins = GetDependentPlugins(jobPlugin);
     171      //insert all jobs into one list
     172      depPlugins.Add(jobPlugin);
     173     
    165174      if (sandboxed) {
    166175        pset = new PermissionSet(PermissionState.None);
    167         pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));       
     176        pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
     177        pset.AddPermission(new ReflectionPermission(PermissionState.Unrestricted));
     178        /*foreach (PluginInfo plugin in depPlugins) {
     179            foreach(String assemblies in plugin.Assemblies)
     180              pset.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read, assemblies));
     181        }*/
     182        pset.AddPermission(new FileIOPermission(PermissionState.Unrestricted));
    168183      } else {
    169184        pset = new PermissionSet(PermissionState.Unrestricted);
     
    176191      Runner remoteRunner = (Runner)applicationDomain.CreateInstanceAndUnwrap(typeof(Runner).Assembly.GetName().Name, typeof(Runner).FullName);
    177192      NotifyListeners(PluginManagerAction.Initializing, "All plugins");
    178 
    179       DiscoveryService dService = new DiscoveryService();
    180       PluginInfo jobPlugin = dService.GetDeclaringPlugin(jobType);
    181 
    182       List<PluginInfo> depPlugins = GetDependentPlugins(jobPlugin);
    183       depPlugins.Add(jobPlugin);
    184193
    185194      if (depPlugins != null && depPlugins.Count > 0) {
  • trunk/sources/HeuristicLab.PluginInfrastructure/Runner.cs

    r886 r997  
    2828
    2929namespace HeuristicLab.PluginInfrastructure {
    30   internal class Runner : MarshalByRefObject {
     30  public class Runner : MarshalByRefObject {
    3131
    3232    public void LoadPlugins(ICollection<PluginInfo> plugins) {
Note: See TracChangeset for help on using the changeset viewer.