public string GetFilePathSync(string path) { var documentsPath = DocumentConstants.DocumentsPath; var pathToFile = Path.Combine(documentsPath, "" + Waardes.Instance.GeselecteerdeBox, path.Substring(1, path.Length -1)); EmptyDecryptedFolder(); if(!File.Exists(pathToFile)) //Does not exist { var explorer = new RemoteExplorer(); var fileBytes = explorer.GetFile(path); if(fileBytes == null) { return null; } if (!Directory.Exists(pathToFile.Substring(0, pathToFile.LastIndexOf("/")))) { Directory.CreateDirectory(pathToFile.Substring(0, pathToFile.LastIndexOf("/"))); } if (pathToFile != null) File.WriteAllBytes(pathToFile, fileBytes); } // moeten buiten de root zitten if (path.Count(e => e == '/') > 1) { int index = path.IndexOf('/', path.IndexOf('/') + 1); var rootFolder = path.Substring(0, index); var folder = GetFolder(rootFolder).Result; if (folder.HasCryptoKeys) { try{ Rijndael rijndael = Rijndael.Create(); rijndael.Key = folder.Key; rijndael.IV = folder.IV; var decpath = Path.Combine(documentsPath, "decrypted", path.Substring(1, path.Length - 1)); if (!Directory.Exists(decpath.Substring(0, decpath.LastIndexOf("/")))) { Directory.CreateDirectory(decpath.Substring(0, decpath.LastIndexOf("/"))); } using (var stream = new CryptoStream(File.OpenRead(pathToFile), rijndael.CreateDecryptor(), CryptoStreamMode.Read)) using(var fs = File.OpenWrite(decpath)) { stream.CopyTo(fs); } return decpath; }catch (Exception ex){ Insights.Report(ex); return pathToFile; } } } return pathToFile; }