Ejemplo n.º 1
0
    public static Item Resolve(Solitary confinement, FileInfo file)
    {
        if (!file.Exists || file.Name.StartsWith("."))
        {
            return(null);
        }

        Item item = null;

        foreach (var regex in confinement.PathBlacklist)
        {
            if (regex.IsMatch(file.FullName))
            {
                return(null);
            }
        }

        if (!String.IsNullOrEmpty(ProcessTools.RealConfinementRoot) &&
            file.FullName.StartsWith(ProcessTools.RealConfinementRoot))
        {
            string path = file.FullName.Replace(ProcessTools.RealConfinementRoot, confinement.ConfinementRoot);
            file = new FileInfo(path);
        }

        if (SymlinkItem.IsSymlink(file.FullName))
        {
            return(new SymlinkItem()
            {
                File = file,
                Confinement = confinement
            });
        }

        switch (GetFileType(file))
        {
        case FileType.PE32Executable:
            item = new AssemblyItem();
            break;

        case FileType.MachO:
        case FileType.ELF:
            item = new NativeLibraryItem();
            break;

        default:
            item = new DataItem();
            break;
        }

        item.Confinement = confinement;
        item.File        = file;
        return(item);
    }
Ejemplo n.º 2
0
    public static Item Resolve(Solitary confinement, FileInfo file)
    {
        if (!file.Exists || file.Name.StartsWith (".")) {
            return null;
        }

        Item item = null;

        foreach (var regex in confinement.PathBlacklist) {
            if (regex.IsMatch (file.FullName)) {
                return null;
            }
        }

        if (SymlinkItem.IsSymlink (file.FullName)) {
            return new SymlinkItem () {
                File = file,
                Confinement = confinement
            };
        }

        switch (GetFileType (file)) {
            case FileType.PE32Executable:
                item = new AssemblyItem ();
                break;
            case FileType.MachO:
                item = new NativeLibraryItem ();
                break;
            default:
                item = new DataItem ();
                break;
        }

        item.Confinement = confinement;
        item.File = file;
        return item;
    }
Ejemplo n.º 3
0
    public static Item Resolve(Solitary confinement, FileInfo file)
    {
        if (!file.Exists || file.Name.StartsWith (".")) {
            return null;
        }

        Item item = null;

        foreach (var regex in confinement.PathBlacklist) {
            if (regex.IsMatch (file.FullName)) {
                return null;
            }
        }

        if (!String.IsNullOrEmpty (ProcessTools.RealConfinementRoot) &&
            file.FullName.StartsWith (ProcessTools.RealConfinementRoot)) {
            string path = file.FullName.Replace (ProcessTools.RealConfinementRoot, confinement.ConfinementRoot);
            file = new FileInfo (path);
        }

        if (SymlinkItem.IsSymlink (file.FullName)) {
            return new SymlinkItem () {
                File = file,
                Confinement = confinement
            };
        }

        switch (GetFileType (file)) {
            case FileType.PE32Executable:
                item = new AssemblyItem ();
                break;
            case FileType.MachO:
            case FileType.ELF:
                item = new NativeLibraryItem ();
                break;
            default:
                item = new DataItem ();
                break;
        }

        item.Confinement = confinement;
        item.File = file;
        return item;
    }