public static async Task <IFolderEntry> FindOrCreateFolderAsync(this IFolderEntry folder, string name) { var f = await folder.OpenFolderAsync(name); if (f == null) { f = await folder.CreateFolderAsync(name); } return(f); }
private void WriteFolderEntry(StringBuilder sb, IFolderEntry entry, string username) { sb.AppendLine($"\"{entry.FullName}\",\"{((entry is Share) ? "Share" : "Directory")}\",\"{((entry is Share) ? (entry as Share).Accessible : entry.EffectiveAccess.Read)}\",\"{entry.EffectiveAccess.Read}\",\"{entry.EffectiveAccess.Write}\",\"{username}\""); foreach (var childEntry in entry.FileSystemEntries) { if (childEntry is IFolderEntry) { WriteFolderEntry(sb, childEntry as IFolderEntry, username); } else { sb.AppendLine($"\"{childEntry.FullName}\",\"File\",\"{childEntry.EffectiveAccess.Read}\",\"{childEntry.EffectiveAccess.Read}\",\"{childEntry.EffectiveAccess.Write}\",\"{username}\""); } } }
private void CustomWriteFolderEntry(StringBuilder sb, IFolderEntry entry, string username, Dionach.ShareAudit.Model.Configuration config) { string lineAddition = $"\"{entry.FullName}\",\"{((entry is Share) ? "Share" : "Directory")}\",\"{((entry is Share) ? (entry as Share).Accessible : entry.EffectiveAccess.Read)}\",\"{entry.EffectiveAccess.Read}\",\"{entry.EffectiveAccess.Write}\",\"{username}\""; if (config.EnableReadOnly && !entry.EffectiveAccess.Read) { return; } if (config.EnableWriteOnly && !entry.EffectiveAccess.Write) { return; } List <string> file_list = config.Files.Files.Split(',').ToList <string>(); foreach (var bad_file in file_list) { if (entry.FullName.Contains(bad_file.Trim()) && bad_file.Length > 0) { return; } } sb.AppendLine(lineAddition); if (config.EnableSharesOnly) { return; } foreach (var childEntry in entry.FileSystemEntries) { if (childEntry is IFolderEntry) { CustomWriteFolderEntry(sb, childEntry as IFolderEntry, username, config); } else { if (config.EnableReadOnly && !entry.EffectiveAccess.Read) { return; } if (config.EnableWriteOnly && !entry.EffectiveAccess.Write) { return; } sb.AppendLine($"\"{childEntry.FullName}\",\"File\",\"{childEntry.EffectiveAccess.Read}\",\"{childEntry.EffectiveAccess.Read}\",\"{childEntry.EffectiveAccess.Write}\",\"{username}\""); } } }
public File GetFile(string path) { string[] Folder = path.Substring(1).Split('/'); Folder CurrentFolder = RootFolder; if (Folder[0] == "") { var IndexFile = RootFolder.Entries.Find(x => x.Name == "index.nml"); if (IndexFile != null) { return((File)IndexFile); } } for (int i = 0; i < Folder.Length; i++) { IFolderEntry current = CurrentFolder.Entries.Find(x => x.Name == Folder[i] || x.Name.Replace(".nml", "") == Folder[i]); if (current is Folder) { if (i == Folder.Length - 1) { var IndexFile = ((Folder)current).Entries.Find(x => x.Name == "index.nml"); if (IndexFile != null) { return((File)IndexFile); } else { throw new System.IO.FileNotFoundException($"File path: {path}, parsed path: {string.Join("→", Folder)}"); } } CurrentFolder = (Folder)current; } else if (current is File) { return((File)current); } } throw new System.IO.FileNotFoundException($"File path: {path}, parsed path: {string.Join("→", Folder)}"); }
private static void Clear(IFolderEntry folder) { foreach (IFileEntry file in folder.GetChildFiles()) { try { file.Delete(); } catch { } } foreach (IFolderEntry childFolder in folder.GetChildFolders()) { try { SetFolderRepeat(childFolder); childFolder.Delete(true); } catch { } } }
private static void SetFolderRepeat(IFolderEntry folder) { folder.Repeater.NumberOfRetries = 1; folder.Repeater.ThrottleTime = TimeSpan.FromMilliseconds(0); }