Exemple #1
0
        private IEnumerable <FileBackupInfo> ComposeFiles(int tenant, string config)
        {
            var files = new List <FileBackupInfo>();

            foreach (var module in StorageFactoryConfig.GetModuleList(config))
            {
                if (allowedModules.Contains(module))
                {
                    var store      = StorageFactory.GetStorage(config, tenant.ToString(), module);
                    var domainList = StorageFactoryConfig.GetDomainList(config, module);
                    foreach (var domain in domainList)
                    {
                        files.AddRange(store
                                       .ListFilesRelative(domain, "\\", "*.*", true)
                                       .Select(x => new FileBackupInfo(domain, module, x)));
                    }

                    files.AddRange(store
                                   .ListFilesRelative(string.Empty, "\\", "*.*", true)
                                   .Where(x => domainList.All(domain => x.IndexOf(string.Format("{0}/", domain)) == -1))
                                   .Select(x => new FileBackupInfo(string.Empty, module, x)));
                }
            }
            return(files.Distinct());
        }
        private void DoDeleteStorage(IEnumerable <string> storageModules, IEnumerable <Tenant> tenants)
        {
            Logger.Debug("begin delete storage");

            foreach (var tenant in tenants)
            {
                foreach (var module in storageModules)
                {
                    var storage = StorageFactory.GetStorage(ConfigPath, tenant.TenantId.ToString(), module);
                    var domains = StorageFactoryConfig.GetDomainList(ConfigPath, module).ToList();

                    domains.Add(string.Empty); //instead storage.DeleteFiles("\\", "*.*", true);

                    foreach (var domain in domains)
                    {
                        ActionInvoker.Try(
                            state =>
                        {
                            if (storage.IsDirectory((string)state))
                            {
                                storage.DeleteFiles((string)state, "\\", "*.*", true);
                            }
                        },
                            domain,
                            5,
                            onFailure: error => Logger.WarnFormat("Can't delete files for domain {0}: \r\n{1}", domain, error)
                            );
                    }

                    SetStepCompleted();
                }
            }

            Logger.Debug("end delete storage");
        }
Exemple #3
0
        private void DoDeleteStorage()
        {
            Logger.Debug("begin delete storage");
            var storageModules   = StorageFactoryConfig.GetModuleList(ConfigPath).Where(IsStorageModuleAllowed).ToList();
            var modulesProcessed = 0;

            foreach (var module in storageModules)
            {
                var storage = StorageFactory.GetStorage(ConfigPath, TenantId.ToString(), module);
                var domains = StorageFactoryConfig.GetDomainList(ConfigPath, module).ToList();
                foreach (var domain in domains)
                {
                    ActionInvoker.Try(state => storage.DeleteFiles((string)state, "\\", "*.*", true), domain, 5,
                                      onFailure: error => Logger.WarnFormat("Can't delete files for domain {0}: \r\n{1}", domain, error));
                }
                storage.DeleteFiles("\\", "*.*", true);
                SetCurrentStepProgress((int)((++modulesProcessed * 100) / (double)storageModules.Count));
            }
            Logger.Debug("end delete storage");
        }
        private void EncryptStore(Tenant tenant, string module, DiscDataStore store, StorageFactoryConfig storageFactoryConfig, ILog log)
        {
            var domains = storageFactoryConfig.GetDomainList(ConfigPath, module).ToList();

            domains.Add(string.Empty);

            var progress = ReadProgress(store);

            foreach (var domain in domains)
            {
                var logParent = string.Format("Tenant: {0}, Module: {1}, Domain: {2}", tenant.TenantAlias, module, domain);

                var files = GetFiles(domains, progress, store, domain);

                EncryptFiles(store, domain, files, logParent, log);
            }

            StepDone();

            log.DebugFormat("Percentage: {0}", Percentage);
        }
        protected IEnumerable <BackupFileInfo> GetFilesToProcess(int tenantId)
        {
            var files = new List <BackupFileInfo>();

            foreach (var module in StorageFactoryConfig.GetModuleList(ConfigPath).Where(IsStorageModuleAllowed))
            {
                var store   = StorageFactory.GetStorage(ConfigPath, tenantId.ToString(), module);
                var domains = StorageFactoryConfig.GetDomainList(ConfigPath, module).ToArray();

                foreach (var domain in domains)
                {
                    files.AddRange(
                        store.ListFilesRelative(domain, "\\", "*.*", true)
                        .Select(path => new BackupFileInfo(domain, module, path, tenantId)));
                }

                files.AddRange(
                    store.ListFilesRelative(string.Empty, "\\", "*.*", true)
                    .Where(path => domains.All(domain => !path.Contains(domain + "/")))
                    .Select(path => new BackupFileInfo(string.Empty, module, path, tenantId)));
            }

            return(files.Distinct());
        }