private void CreateNotification(IEnumerable <ExchangeCertificate> certificates, bool isExpired) { ADRecipientOrAddress owner = null; MicrosoftExchangeRecipient microsoftExchangeRecipient = this.adSession.FindMicrosoftExchangeRecipient(); if (microsoftExchangeRecipient == null) { this.EventLog.LogEvent(CertificateNotificationEventLogConstants.Tuple_MicrosoftExchangeRecipientNotFoundException, string.Empty, new object[] { string.Empty }); } else { owner = new ADRecipientOrAddress(new Participant(microsoftExchangeRecipient)); } foreach (ExchangeCertificate exchangeCertificate in certificates) { KeyValuePair <string, LocalizedString>[] extendedAttributes = new KeyValuePair <string, LocalizedString>[] { new KeyValuePair <string, LocalizedString>("ServerName", new LocalizedString(this.serverObj.Name)), new KeyValuePair <string, LocalizedString>("ServerFqdn", new LocalizedString(this.serverObj.Fqdn)), new KeyValuePair <string, LocalizedString>("ThumbPrint", new LocalizedString(exchangeCertificate.Thumbprint)), new KeyValuePair <string, LocalizedString>("FriendlyName", new LocalizedString(exchangeCertificate.FriendlyName)), new KeyValuePair <string, LocalizedString>("ExpireDate", new LocalizedString(exchangeCertificate.NotAfter.ToFileTimeUtc().ToString())) }; string id = this.serverObj.Fqdn + "\\" + exchangeCertificate.Thumbprint; AsyncOperationNotificationDataProvider.CreateNotification(this.orgId, id, AsyncOperationType.CertExpiry, isExpired ? AsyncOperationStatus.CertExpired : AsyncOperationStatus.CertExpiring, new LocalizedString(exchangeCertificate.FriendlyName), owner, extendedAttributes, false); AsyncOperationNotificationDataProvider.SendNotificationEmail(this.orgId, id, false, null, false); } }
protected override void InternalProcessRecord() { base.InternalProcessRecord(); if (base.HasErrors) { return; } ExchangeCertificateRpc exchangeCertificateRpc = new ExchangeCertificateRpc(); exchangeCertificateRpc.RemoveByThumbprint = this.Thumbprint; ExchangeCertificateRpcVersion exchangeCertificateRpcVersion = ExchangeCertificateRpcVersion.Version1; byte[] outputBlob = null; try { byte[] inBlob = exchangeCertificateRpc.SerializeInputParameters(ExchangeCertificateRpcVersion.Version2); ExchangeCertificateRpcClient2 exchangeCertificateRpcClient = new ExchangeCertificateRpcClient2(this.serverObject.Name); outputBlob = exchangeCertificateRpcClient.RemoveCertificate2(0, inBlob); exchangeCertificateRpcVersion = ExchangeCertificateRpcVersion.Version2; } catch (RpcException) { exchangeCertificateRpcVersion = ExchangeCertificateRpcVersion.Version1; } if (exchangeCertificateRpcVersion == ExchangeCertificateRpcVersion.Version1) { try { byte[] inBlob2 = exchangeCertificateRpc.SerializeInputParameters(exchangeCertificateRpcVersion); ExchangeCertificateRpcClient exchangeCertificateRpcClient2 = new ExchangeCertificateRpcClient(this.serverObject.Name); outputBlob = exchangeCertificateRpcClient2.RemoveCertificate(0, inBlob2); } catch (RpcException e) { ManageExchangeCertificate.WriteRpcError(e, this.serverObject.Name, new Task.TaskErrorLoggingDelegate(base.WriteError)); } } ExchangeCertificateRpc exchangeCertificateRpc2 = new ExchangeCertificateRpc(exchangeCertificateRpcVersion, null, outputBlob); ExchangeCertificateRpc.OutputTaskMessages(this.serverObject, exchangeCertificateRpc2, new Task.TaskWarningLoggingDelegate(this.WriteWarning), new Task.TaskErrorLoggingDelegate(base.WriteError)); if (string.IsNullOrEmpty(exchangeCertificateRpc2.ReturnTaskErrorString)) { AsyncOperationNotificationDataProvider.RemoveNotification(base.CurrentOrganizationId, this.serverObject.Fqdn + "\\" + this.Thumbprint, false); } }