public static void Initialize() { var backupConfiguration = BackupConfigurationSection.GetSection(); currentWebConfigPath = ToAbsolute(backupConfiguration.RegionConfigs.GetCurrentConfig()); if (!currentWebConfigPath.EndsWith(".config", StringComparison.OrdinalIgnoreCase)) { currentWebConfigPath = Path.Combine(currentWebConfigPath, "web.config"); } tmpfolder = ToAbsolute(backupConfiguration.TmpFolder); expire = backupConfiguration.ExpirePeriod; tasks = new ProgressQueue(backupConfiguration.ThreadCount, TimeSpan.FromMinutes(15), false); cleaner = new Timer(Clean, expire, expire, expire); ThreadPool.QueueUserWorkItem(state => { foreach (var tenant in CoreContext.TenantManager .GetTenants() .Where(t => t.Status == TenantStatus.Transfering)) { tenant.SetStatus(TenantStatus.Active); CoreContext.TenantManager.SaveTenant(tenant); var url = tenant.TenantDomain; if (!url.StartsWith("http://") && !url.StartsWith("https://")) { url = "http://" + url; } NotifyHelper.SendAboutTransferError(tenant.TenantId, string.Empty, url, string.Empty, true); } }); }
private static void RestoreTransferingTenants() { foreach (var tenant in CoreContext.TenantManager.GetTenants().Where(t => t.Status == TenantStatus.Transfering)) { tenant.SetStatus(TenantStatus.Active); CoreContext.TenantManager.SaveTenant(tenant); NotifyHelper.SendAboutTransferError(tenant.TenantId, string.Empty, tenant.TenantDomain, true); } }
protected override void RunInternal() { var config = BackupConfigurationSection.GetSection(); var pathToCurrentWebConfig = FileUtility.GetRootedPath(config.WebConfigs.GetCurrentConfig()); var pathToTargetWebConfig = FileUtility.GetRootedPath(config.WebConfigs.GetPathForRegion(targetRegion)); var tempFolderPath = config.TempFolder; if (!Directory.Exists(tempFolderPath)) { Directory.CreateDirectory(tempFolderPath); } try { NotifyHelper.SendAboutTransferStart(TenantId, targetRegion, NotifyOnlyOwner); var transferTask = new TransferPortalTask(CoreContext.TenantManager.GetTenant(TenantId), pathToCurrentWebConfig, pathToTargetWebConfig) { BackupDirectory = FileUtility.GetRootedPath(config.TempFolder) }; if (!TransferMail) { transferTask.IgnoreModule(ModuleName.Mail); } transferTask.ProgressChanged += (sender, args) => Progress = args.Progress; transferTask.Message += (sender, args) => { if (args.Reason == MessageReason.Info && Log != null) { Log.Debug(args.Message); } else if (args.Reason == MessageReason.Warning && Log != null) { Log.Warn(args.Message); } }; transferTask.Run(); NotifyHelper.SendAboutTransferComplete(TenantId, targetRegion, GetPortalAddress(pathToTargetWebConfig), NotifyOnlyOwner); } catch { NotifyHelper.SendAboutTransferError(TenantId, targetRegion, GetPortalAddress(pathToCurrentWebConfig), NotifyOnlyOwner); throw; } }
public void RunJob() { try { NotifyHelper.SendAboutTransferStart(_tenant.TenantId, _targetRegion, _notifyAllUsers); string targetWebConfigPath = ToAbsolute(BackupConfigurationSection.GetSection().RegionConfigs.GetConfig(_targetRegion).Path); var transferTask = new TransferPortalTask(_tenant, currentWebConfigPath, targetWebConfigPath) { BackupDirectory = tmpfolder }; if (!_backupMail) { transferTask.IgnoreModule(ModuleName.Mail); } transferTask.ProgressChanged += (sender, args) => Percentage = args.Progress; transferTask.Message += (sender, args) => { if (args.Reason == MessageReason.Info) { log.Debug(args.Message); } else if (args.Reason == MessageReason.Warning) { log.Warn(args.Message); } }; transferTask.Run(); NotifyHelper.SendAboutTransferComplete(_tenant.TenantId, _targetRegion, GetPortalAddress(targetWebConfigPath), _notifyAllUsers); } catch (Exception error) { log.Error(error); NotifyHelper.SendAboutTransferError(_tenant.TenantId, _targetRegion, GetPortalAddress(currentWebConfigPath), error.Message, _notifyAllUsers); Error = error; } finally { IsCompleted = true; } }
public void RunJob() { var tempFile = PathHelper.GetTempFileName(tempFolder); var alias = CoreContext.TenantManager.GetTenant(TenantId).TenantAlias; try { NotifyHelper.SendAboutTransferStart(TenantId, TargetRegion, Notify); var transferProgressItem = new TransferPortalTask(Log, TenantId, configPaths[currentRegion], configPaths[TargetRegion]) { BackupDirectory = tempFolder }; transferProgressItem.ProgressChanged += (sender, args) => Percentage = args.Progress; if (!TransferMail) { transferProgressItem.IgnoreModule(ModuleName.Mail); } transferProgressItem.RunJob(); Link = GetLink(alias, false); NotifyHelper.SendAboutTransferComplete(TenantId, TargetRegion, Link, !Notify); } catch (Exception error) { Log.Error(error); Error = error; Link = GetLink(alias, true); NotifyHelper.SendAboutTransferError(TenantId, TargetRegion, Link, !Notify); } finally { if (File.Exists(tempFile)) { File.Delete(tempFile); } IsCompleted = true; } }