Ejemplo n.º 1
0
        private async Task EncodeFolder(IEnumerable <string> plainfolder, string rootpath = null)
        {
            foreach (var folder in plainfolder)
            {
                if (!Directory.Exists(folder))
                {
                    Log("folder not found : {0}", folder);
                    continue;
                }
                var encparent = rootpath;
                if (encparent == null)
                {
                    encparent = Directory.GetParent(folder).FullName;
                }

                var plainfoldername = (folder.EndsWith("\\")) ? Path.GetDirectoryName(folder) : folder;
                var i = plainfoldername.LastIndexOf('\\');
                if (i >= 0)
                {
                    plainfoldername = plainfoldername.Substring(i + 1);
                }

                var encfoldername = CryptCarotDAV.EncryptFilename(plainfoldername);

                var encfolder = Path.Combine(encparent, encfoldername);
                if (Directory.Exists(encfolder))
                {
                    Log("Exists : {0}", encfolder);
                    continue;
                }

                try
                {
                    Directory.CreateDirectory(encfolder);
                }
                catch (Exception ex)
                {
                    Log("CreateDirectory failed : {0} {1}", encfolder, ex.Message);
                    continue;
                }

                Log("OK : {0}->{1}", folder, encfolder);

                // subitems
                var subfiles = Directory.GetFiles(folder);
                var subdirs  = Directory.GetDirectories(folder);

                await EncodeFile(subfiles, encfolder);
                await EncodeFolder(subdirs, encfolder);
            }
        }
Ejemplo n.º 2
0
        private async Task EncodeFile(IEnumerable <string> plainfiles, string rootpath = null)
        {
            foreach (var file in plainfiles)
            {
                if (!File.Exists(file))
                {
                    Log("file not found : {0}", file);
                    continue;
                }
                var encfilepath = rootpath;
                if (encfilepath == null)
                {
                    encfilepath = Path.GetDirectoryName(file);
                }

                var plainfilename = Path.GetFileName(file);
                var encfilename   = CryptCarotDAV.EncryptFilename(plainfilename);

                var encfile = Path.Combine(encfilepath, encfilename);
                if (File.Exists(encfile))
                {
                    Log("Exists : {0}", encfile);
                    continue;
                }

                using (var pfile = File.OpenRead(file))
                    using (var efile = File.OpenWrite(encfile))
                        using (var cfile = new CryptCarotDAV.CryptCarotDAV_CryptStream(pfile))
                        {
                            try
                            {
                                await cfile.CopyToAsync(efile, 81920, cts.Token);
                            }
                            catch (Exception ex)
                            {
                                Log("Encode Error : {0}->{1} {2}", file, encfile, ex.Message);
                                continue;
                            }
                        }
                Log("OK : {0}->{1}", file, encfile);
            }
        }