public ContainerizeFileTask(string filePath, ContainerizationSettingsModel settingsModel) : base(ResourceType.File, filePath) { InnerTask = new Task(() => { if (Path.GetExtension(filePath).Equals(settingsModel.Extension)) { return; } ContainerHelper.ContainerizeFile(filePath, AesHelper.GetNewAesKey(), settingsModel.Password); var newPath = FileGeneratorHelper.GetValidFileNameForDirectory( DirectoryHelper.GetDirectoryPath(filePath), Path.GetFileNameWithoutExtension(filePath), settingsModel.Extension); File.Move(filePath, newPath); Result.Value = new FileModel { File = Path.GetFileName(filePath), Time = DateTime.Now, Secured = newPath }; }); }
public DecontainerizeFolderFilesTask(FolderModel model, ContainerizationSettingsModel settingsModel, bool includeSubFolders, bool removeAfter, bool temporary) : base(ResourceType.Folder, model.Uri) { InnerTask = new Task(() => { DirectoryHelper.DecontainerizeDirectoryFiles(model, model.Uri, settingsModel, includeSubFolders); Result.Value = new DecontainerizeFolderFilesTaskResultModel { Model = model, RemoveAfter = removeAfter, Temporary = temporary }; }); }
public EncryptTempFoldersTask(IReadOnlyCollection <FolderModel> models, ContainerizationSettingsModel settingsModel, bool includeSubFolders, bool exitAfter, bool silent) : base(ResourceType.Folder, models.Select(x => x.Uri)) { InnerTask = new Task(() => { var uncontainerized = new List <FolderModel>(); var containerized = new List <FolderModel>(); foreach (var model in models) { SecureFolder(model.Uri); } Result.Value = new EncryptTempFoldersTaskResultModel { ContainerizedFolders = containerized, UncontainerizedFolders = uncontainerized, ExitAfter = exitAfter, Silent = silent }; void SecureFolder(string folderUri) { var folderModel = new FolderModel { Uri = folderUri }; try { folderModel.FileModels = DirectoryHelper.EnumerateAndSecureFiles(folderUri, settingsModel).ToList(); if (includeSubFolders) { folderModel.SubFolders = DirectoryHelper.EnumerateAndSecureSubFolders(folderUri, settingsModel) .ToList(); } containerized.Add(folderModel); } catch (Exception) { uncontainerized.Add(folderModel); } } }); }
public SecureFolderTask(string folderPath, ContainerizationSettingsModel settingsModel, bool includeSubFolders) : base(ResourceType.Folder, folderPath) { InnerTask = new Task(() => { var model = new FolderModel { Uri = folderPath, FileModels = DirectoryHelper.EnumerateAndSecureFiles(folderPath, settingsModel).ToList() }; if (includeSubFolders) { model.SubFolders = DirectoryHelper.EnumerateAndSecureSubFolders(folderPath, settingsModel).ToList(); } Result.Value = model; }); }
public static void DecontainerizeDirectoryFiles(FolderModel masterModel, string folderPath, ContainerizationSettingsModel settingsModel, bool includeSubFolders) { foreach (var filePath in Directory.GetFiles(folderPath).Where(x => Path.GetExtension(x).Equals(settingsModel.Extension))) { ContainerHelper.DecontainerizeFile(filePath, settingsModel.Password); var fileModel = folderPath.Equals(masterModel.Uri) ? masterModel.FileModels.FirstOrDefault(x => x.Secured.Equals(filePath)) : GetFileModel(masterModel, file => file.Secured.Equals(filePath)); var newPath = FileGeneratorHelper.GetValidFileNameForDirectory( GetDirectoryPath(filePath), Path.GetFileNameWithoutExtension(filePath), fileModel != null ? Path.GetExtension(fileModel.File) : string.Empty); File.Move(filePath, newPath); } if (!includeSubFolders) { return; } foreach (var subFolderPath in Directory.GetDirectories(folderPath)) { DecontainerizeDirectoryFiles(masterModel, subFolderPath, settingsModel, true); } }
public static IEnumerable <FileModel> EnumerateAndSecureFiles(string folderPath, ContainerizationSettingsModel settingsModel) { var fileModels = new List <FileModel>(); foreach (var filePath in Directory.GetFiles(folderPath).Where(x => !Path.GetExtension(x).Equals(settingsModel.Extension))) { ContainerHelper.ContainerizeFile(filePath, AesHelper.GetNewAesKey(), settingsModel.Password); var newPath = FileGeneratorHelper.GetValidFileNameForDirectory( GetDirectoryPath(filePath), Path.GetFileNameWithoutExtension(filePath), settingsModel.Extension); File.Move(filePath, newPath); fileModels.Add(new FileModel { File = Path.GetFileName(filePath), Time = DateTime.Now, Secured = newPath }); } return(fileModels); }
public static IEnumerable <FolderModel> EnumerateAndSecureSubFolders(string folderPath, ContainerizationSettingsModel settingsModel) => Directory.GetDirectories(folderPath).Select(x => new FolderModel { Uri = x, FileModels = EnumerateAndSecureFiles(x, settingsModel).ToList(), SubFolders = EnumerateAndSecureSubFolders(x, settingsModel).ToList() });