private bool _disposedValue; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!_disposedValue) { if (disposing) { Files.Dispose(); BackupModifiedFilenames.Dispose(); Documents.Dispose(); Folders.Dispose(); Parametrized.Dispose(); ListingFilesTest.Dispose(); ListingFilesFound.Dispose(); Backups.Dispose(); OpenFoldersFound.Dispose(); InsecureMethodFoldersFound.Dispose(); } Files = null; BackupModifiedFilenames = null; Documents = null; Folders = null; Parametrized = null; ListingFilesTest = null; ListingFilesFound = null; Backups = null; OpenFoldersFound = null; InsecureMethodFoldersFound = null; _disposedValue = true; } }
/// <summary> /// Extract folders from a given URL /// </summary> /// <param name="url"></param> private void ExtractFolders(string url) { var u = new Uri(url); var port = (u.Port == 80) ? "" : ":" + u.Port; if (u.ToString().EndsWith("//")) { ExtractFolders(u.ToString().Remove(u.ToString().Length - 1, 1)); return; } var offSetProtocol = url.IndexOf("://", StringComparison.Ordinal); var protocol = url.Substring(0, offSetProtocol); var foldersSplit = u.AbsolutePath.Split('/'); var path = ""; for (var i = 0; i < foldersSplit.Length; i++) { if (i + 1 != foldersSplit.Length) { path += foldersSplit[i] + "/"; } if (ExistFolder(protocol + "://" + u.Host + port + path) || path.Contains(".")) { continue; } Folders.Add(protocol + "://" + u.Host + port + path); // ToDo use a list provided by the user string[] ficheros = { ".listing", ".DS_Store", "WS_FTP.LOG" }; var path1 = path; foreach ( var fichero in ficheros.Where(fichero => !ExistMutexFile(protocol + "://" + u.Host + port + path1 + fichero))) { BackupModifiedFilenames.Add(protocol + "://" + u.Host + port + path + fichero); } // ToDo use a list provided by the user string[] compressExt = { ".zip", ".rar", ".tar", ".gz", ".tar.gz" }; foreach ( var extension in compressExt.Where( extension => protocol + "://" + u.Host + path1.Substring(0, path1.Length - 1) != protocol + "://" + u.Host) .Where( extension => !ExistMutexFile(protocol + "://" + u.Host + port + path1.Substring(0, path1.Length - 1) + extension))) { BackupModifiedFilenames.Add(protocol + "://" + u.Host + port + path.Substring(0, path.Length - 1) + extension); } } }
private bool _disposedValue; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!_disposedValue) { if (disposing) { Files.Dispose(); BackupModifiedFilenames.Dispose(); Documents.Dispose(); Folders.Dispose(); Parametrized.Dispose(); } Files = null; BackupModifiedFilenames = null; Documents = null; Folders = null; Parametrized = null; _disposedValue = true; } }
/// <summary> /// Check if a backup filename is already generated /// </summary> /// <param name="url"></param> /// <returns></returns> private bool ExistMutexFile(string url) { return(BackupModifiedFilenames.Contains(url)); }