private async Task CheckBreach(CheckTypeEnum breachType) { if (!pluginHost.Database.IsOpen) { MessageBox.Show("You must first open a database", Resources.MessageTitle); return; } var dialog = new CheckerPrompt(breachType, breachType != CheckTypeEnum.Password); if (dialog.ShowDialog() == DialogResult.OK) { progressForm = new StatusProgressForm(); var progressIndicator = new Progress <ProgressItem>(ReportProgress); progressForm.InitEx("Checking Breaches", false, breachType == CheckTypeEnum.SiteDomain, pluginHost.MainWindow); progressForm.Show(); progressForm.SetProgress(0); List <BreachedEntry> result = new List <BreachedEntry>(); if (dialog.CheckAllBreaches) { progressForm.Tag = new ProgressHelper(Enum.GetValues(typeof(BreachEnum)).Length); foreach (var breach in Enum.GetValues(typeof(BreachEnum))) { var foundBreaches = await CheckBreaches(supportedBreachCheckers[(BreachEnum)breach](client, pluginHost), dialog.ExpireEntries, dialog.OnlyCheckOldEntries, dialog.IgnoreDeletedEntries, progressIndicator); result.AddRange(foundBreaches); ((ProgressHelper)progressForm.Tag).CurrentBreach++; } } else { progressForm.Tag = new ProgressHelper(1); var foundBreaches = await CheckBreaches(supportedBreachCheckers[dialog.SelectedBreach](client, pluginHost), dialog.ExpireEntries, dialog.OnlyCheckOldEntries, dialog.IgnoreDeletedEntries, progressIndicator); result.AddRange(foundBreaches); } progressForm.Close(); if (!result.Any()) { MessageBox.Show("No breached entries found.", Resources.MessageTitle, MessageBoxButtons.OK, MessageBoxIcon.Information); } else { var breachedEntriesDialog = new BreachedEntriesDialog(pluginHost); breachedEntriesDialog.AddBreaches(result); breachedEntriesDialog.ShowDialog(); } } pluginHost.MainWindow.Show(); }
private async Task CheckBreach(CheckTypeEnum breachType, PwGroup group) { var dialog = new CheckerPrompt(breachType, breachType != CheckTypeEnum.Password); if (dialog.ShowDialog() == DialogResult.OK) { progressForm = new StatusProgressForm(); var progressIndicator = new Progress <ProgressItem>(ReportProgress); progressForm.InitEx("Checking Breaches", true, breachType == CheckTypeEnum.SiteDomain, pluginHost.MainWindow); progressForm.Show(); progressForm.SetProgress(0); List <BreachedEntry> result = new List <BreachedEntry>(); try { if (dialog.CheckAllBreaches) { var breaches = Enum.GetValues(typeof(BreachEnum)).Cast <BreachEnum>().Where(b => b.GetAttribute <CheckerTypeAttribute>().Type == breachType); progressForm.Tag = new ProgressHelper(breaches.Count()); foreach (var breach in breaches) { var foundBreaches = await CheckBreaches(supportedBreachCheckers[(BreachEnum)breach](client, pluginHost), group, dialog.ExpireEntries, dialog.OnlyCheckOldEntries, dialog.IgnoreDeletedEntries, dialog.IgnoreExpiredEntries, progressIndicator, () => progressForm.ContinueWork()); result.AddRange(foundBreaches); ((ProgressHelper)progressForm.Tag).CurrentBreach++; } } else { progressForm.Tag = new ProgressHelper(1); var foundBreaches = await CheckBreaches(supportedBreachCheckers[dialog.SelectedBreach](client, pluginHost), group, dialog.ExpireEntries, dialog.OnlyCheckOldEntries, dialog.IgnoreDeletedEntries, dialog.IgnoreExpiredEntries, progressIndicator, () => progressForm.ContinueWork()); result.AddRange(foundBreaches); } } catch (Exception ex) { result = null; MessageBox.Show(pluginHost.MainWindow, ex.Message, Resources.MessageTitle, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { progressForm.Close(); } if (result != null) { if (!result.Any()) { MessageBox.Show(pluginHost.MainWindow, "No breached entries found.", Resources.MessageTitle, MessageBoxButtons.OK, MessageBoxIcon.Information); } else { var breachedEntriesDialog = new BreachedEntriesDialog(pluginHost); breachedEntriesDialog.AddBreaches(result); breachedEntriesDialog.ShowDialog(); } } } pluginHost.MainWindow.Show(); }