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); }
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; }
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; }