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
                };
            });
        }
Exemplo n.º 2
0
        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
                };
            });
        }
Exemplo n.º 3
0
        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()
 });