public EmailViewModel(EmailOptions emailOptions, INotifyModelChangedEventPublisher eventPublisher, IShellExecuteProvider shellExecuteProvider, IProtectedSecretProvider secretProvider, AdminNotificationOptions adminNotificationOptions) { this.shellExecuteProvider = shellExecuteProvider; this.secretProvider = secretProvider; this.adminNotificationOptions = adminNotificationOptions; this.emailOptions = emailOptions; this.DisplayName = "Email"; eventPublisher.Register(this); }
public async Task Execute(IJobExecutionContext context) { try { AdminNotificationOptions emailOptions = this.adminNotificationOptions.CurrentValue; if (!emailOptions.EnableNewVersionAlerts || string.IsNullOrWhiteSpace(emailOptions.AdminAlertRecipients)) { return; } if (!this.smtpProvider.IsConfigured) { return; } var versionInfo = await this.appUpgradeProvider.GetVersionInfo(); if (versionInfo.Status != VersionInfoStatus.UpdateAvailable) { return; } if (this.registryProvider.LastNotifiedVersion == versionInfo.AvailableVersion.ToString()) { return; } this.registryProvider.LastNotifiedVersion = versionInfo.AvailableVersion.ToString(); this.Send(versionInfo, emailOptions.AdminAlertRecipients); } catch (Exception ex) { logger.LogWarning(EventIDs.NewVersionCheckJobFailed, ex, "Could not get version update"); } }
public Task Execute(IJobExecutionContext context) { try { AdminNotificationOptions emailOptions = this.adminNotificationOptions.CurrentValue; if (!emailOptions.EnableCertificateExpiryAlerts || string.IsNullOrWhiteSpace(emailOptions.AdminAlertRecipients)) { return(Task.CompletedTask); } if (!this.smtpProvider.IsConfigured) { return(Task.CompletedTask); } var cert = this.httpSysConfigProvider.GetCertificate(); if (cert == null) { return(Task.CompletedTask); } bool hasExpired = DateTime.Now > cert.NotAfter; int daysRemaining = (int)Math.Ceiling(cert.NotAfter.Subtract(DateTime.Now).TotalDays); if (daysRemaining > 30) { return(Task.CompletedTask); } string durationKey; if (daysRemaining <= 0) { durationKey = "0"; } else if (daysRemaining <= 1) { durationKey = "1"; } else if (daysRemaining <= 7) { durationKey = "7"; } else { durationKey = "30"; } string certKey = $"{cert.Thumbprint}-{durationKey}".ToLower(); if (this.registryProvider.LastNotifiedCertificateKey == certKey) { return(Task.CompletedTask); } this.registryProvider.LastNotifiedCertificateKey = certKey; this.Send(cert, emailOptions.AdminAlertRecipients, hasExpired, daysRemaining); } catch (Exception ex) { logger.LogWarning(EventIDs.CertificateExpiryCheckJobFailed, ex, "Certificate expiry check failed"); } return(Task.CompletedTask); }