Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        /// <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);
                }
            }
        }
Beispiel #3
0
        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;
            }
        }
Beispiel #4
0
 /// <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));
 }