Beispiel #1
0
        public static FileInfoTypes Type(this IDataItem fileInfo)
        {
            if (fileInfo == null)
            {
                throw new ArgumentNullException("fileInfo");
            }

            if (!fileInfo.IsAvailable)
            {
                return(FileInfoTypes.NonExisting);
            }
            if (fileInfo.IsFolder)
            {
                return(FileInfoTypes.Folder);
            }
            if (fileInfo.IsEncrypted())
            {
                return(FileInfoTypes.EncryptedFile);
            }
            if (New <FileFilter>().IsEncryptable(fileInfo))
            {
                return(FileInfoTypes.EncryptableFile);
            }
            return(FileInfoTypes.OtherFile);
        }
        public bool IsEncryptable(IDataItem fileInfo)
        {
            if (fileInfo == null)
            {
                throw new ArgumentNullException("fileInfo");
            }

            foreach (Regex filter in pathFilters)
            {
                if (filter.IsMatch(fileInfo.FullName))
                {
                    return(false);
                }
            }
            return(!fileInfo.IsEncrypted());
        }
Beispiel #3
0
        /// <summary>
        /// Create a file name based on an existing, but convert the file name to the pattern used by
        /// AxCrypt for encrypted files. The original must not already be in that form.
        /// </summary>
        /// <param name="fileInfo">A file name representing a file that is not encrypted</param>
        /// <returns>A corresponding file name representing the encrypted version of the original</returns>
        /// <exception cref="InternalErrorException">Can't get encrypted name for a file that already has the encrypted extension.</exception>
        public static IDataStore CreateEncryptedName(this IDataItem fullName)
        {
            if (fullName == null)
            {
                throw new ArgumentNullException("fullName");
            }

            if (fullName.IsEncrypted())
            {
                throw new InternalErrorException("Can't get encrypted name for a file that cannot be encrypted.");
            }

            string encryptedName = fullName.FullName.CreateEncryptedName();

            return(New <IDataStore>(encryptedName));
        }
Beispiel #4
0
        private async Task HandleWatchedFolderChangesAsync(WatchedFolder watchedFolder, IDataItem dataItem)
        {
            if (watchedFolder.Path == dataItem.FullName && !dataItem.IsAvailable)
            {
                await RemoveAndDecryptWatchedFolder(dataItem);
                await Save();

                return;
            }
            if (!dataItem.IsEncrypted())
            {
                return;
            }
            if (IsExisting(dataItem))
            {
                return;
            }
            await RemoveDeletedActiveFile(dataItem);
        }