public JournalRuleRow(JournalRuleObject rule) : base(rule) { this.JournalEmailAddress = rule.JournalEmailAddress.ToString(); this.Scope = rule.Scope.ToString(); this.Global = this.Scope.Equals("Global"); this.Internal = this.Scope.Equals("Internal"); this.External = this.Scope.Equals("External"); this.RecipientString = ((rule.Recipient != null) ? rule.Recipient.ToString() : string.Empty); base.Supported = true; }
private void WarnForJournalNdrMailboxSetting(TransportConfigContainer originalObject) { if (this.DataObject.IsModified(ADAMTransportConfigContainerSchema.JournalingReportNdrTo)) { SmtpAddress journalingReportNdrTo = this.DataObject.JournalingReportNdrTo; if (this.DataObject.JournalingReportNdrTo.IsValidAddress) { RoutingAddress value = new RoutingAddress(this.DataObject.JournalingReportNdrTo.ToString()); if (value != RoutingAddress.NullReversePath) { RecipientIdParameter recipId = new RecipientIdParameter(this.DataObject.JournalingReportNdrTo.ToString()); SmtpAddress smtpAddress; if (!JournalRuleObject.LookupAndCheckAllowedTypes(recipId, base.TenantGlobalCatalogSession, this.DataObject.OrganizationId, true, out smtpAddress)) { this.WriteWarning(Strings.JournalNdrMailboxWarning); } } } } }
public JournalRule(JournalRuleObject rule) : base(rule) { this.Rule = rule; }
public RuleRow(JournalRuleObject rule) : base(rule) { this.Name = rule.Name; this.Enabled = rule.Enabled; this.CaptionText = Strings.EditRuleCaption(rule.Name); }
protected override void InternalValidate() { base.InternalValidate(); TransportConfigContainer transportConfigContainer = (TransportConfigContainer)this.DataObject.GetOriginalObject(); if (!(this.DataObject.Schema is TransportConfigContainerSchema)) { if (this.DataObject.IsModified(TransportConfigContainerSchema.AnonymousSenderToRecipientRatePerHour) || this.DataObject.IsModified(TransportConfigContainerSchema.MaxDumpsterSizePerDatabase) || this.DataObject.IsModified(TransportConfigContainerSchema.MaxDumpsterTime) || this.DataObject.IsModified(TransportConfigContainerSchema.MaxReceiveSize) || this.DataObject.IsModified(TransportConfigContainerSchema.MaxRecipientEnvelopeLimit) || this.DataObject.IsModified(TransportConfigContainerSchema.SupervisionTags) || this.DataObject.IsModified(TransportConfigContainerSchema.ShadowHeartbeatFrequency) || this.DataObject.IsModified(TransportConfigContainerSchema.ShadowResubmitTimeSpan) || base.Fields.IsModified("QueueDiagnosticsAggregationInterval") || base.Fields.IsModified("DiagnosticsAggregationServicePort") || base.Fields.IsModified("AgentGeneratedMessageLoopDetectionInSubmissionEnabled") || base.Fields.IsModified("AgentGeneratedMessageLoopDetectionInSmtpEnabled") || base.Fields.IsModified("MaxAllowedAgentGeneratedMessageDepth") || base.Fields.IsModified("MaxAllowedAgentGeneratedMessageDepthPerAgent")) { this.WriteWarning(Strings.WarningUnsupportedEdgeTransportConfigProperty); } if (Server.IsSubscribedGateway(base.GlobalConfigSession)) { ADPropertyDefinition[] array = new ADPropertyDefinition[] { ADAMTransportConfigContainerSchema.InternalSMTPServers, ADAMTransportConfigContainerSchema.TLSReceiveDomainSecureList, ADAMTransportConfigContainerSchema.TLSSendDomainSecureList, ADAMTransportConfigContainerSchema.ShadowHeartbeatRetryCount, ADAMTransportConfigContainerSchema.ShadowHeartbeatTimeoutInterval, ADAMTransportConfigContainerSchema.ShadowMessageAutoDiscardInterval, ADAMTransportConfigContainerSchema.RejectMessageOnShadowFailure, ADAMTransportConfigContainerSchema.ShadowMessagePreferenceSetting, ADAMTransportConfigContainerSchema.MaxRetriesForLocalSiteShadow, ADAMTransportConfigContainerSchema.MaxRetriesForRemoteSiteShadow }; foreach (ADPropertyDefinition adpropertyDefinition in array) { if (this.DataObject.IsModified(adpropertyDefinition)) { base.WriteError(new CannotSetTransportServerPropertyOnSubscribedEdgeException(adpropertyDefinition.Name), ErrorCategory.InvalidOperation, base.Identity); } } this.ValidateFlagSettingUnchanged <bool>(transportConfigContainer, ADAMTransportConfigContainerSchema.ShadowRedundancyDisabled, "ShadowRedundancyEnabled"); this.ValidateFlagSettingUnchanged <ShadowMessagePreference>(transportConfigContainer, ADAMTransportConfigContainerSchema.ShadowMessagePreferenceSetting, "ShadowMessagePreferenceSetting"); this.ValidateFlagSettingUnchanged <bool>(transportConfigContainer, ADAMTransportConfigContainerSchema.RejectMessageOnShadowFailure, "RejectMessageOnShadowFailure"); } } if (VariantConfiguration.InvariantNoFlightingSnapshot.Global.MultiTenancy.Enabled) { this.ValidateLegacyArchiveLiveJournalingConfiguration(transportConfigContainer); if (this.DataObject.IsModified(ADAMTransportConfigContainerSchema.JournalingReportNdrTo)) { SmtpAddress journalingReportNdrTo = this.DataObject.JournalingReportNdrTo; if (this.DataObject.JournalingReportNdrTo.IsValidAddress) { JournalNdrValidationCheckResult journalNdrValidationCheckResult = JournalRuleObject.ValidateJournalNdrMailboxSetting(base.DataSession, this.DataObject.JournalingReportNdrTo); if (journalNdrValidationCheckResult == JournalNdrValidationCheckResult.JournalNdrCannotBeNullReversePath) { base.WriteError(new InvalidOperationException(Strings.JournalNdrMailboxCannotBeNull), ErrorCategory.InvalidOperation, null); } else if (journalNdrValidationCheckResult == JournalNdrValidationCheckResult.JournalNdrExistInJournalRuleRecipient) { base.WriteError(new InvalidOperationException(Strings.JournalNdrMailboxInJournalRuleRecipient), ErrorCategory.InvalidOperation, null); } else if (journalNdrValidationCheckResult == JournalNdrValidationCheckResult.JournalNdrExistInJournalRuleJournalEmailAddress) { this.WriteWarning(Strings.JournalNdrMailboxInJournalRuleJournalEmailAddress); } } } } this.WarnForJournalNdrMailboxSetting(transportConfigContainer); if (this.DataObject.IsModified(ADAMTransportConfigContainerSchema.TLSReceiveDomainSecureList) && this.DataObject.TLSReceiveDomainSecureList.Count > 256) { base.WriteError(new ExceededMaximumCollectionCountException(ADAMTransportConfigContainerSchema.TLSReceiveDomainSecureList.Name, 256, this.DataObject.TLSReceiveDomainSecureList.Count), ErrorCategory.InvalidOperation, base.Identity); } if (this.DataObject.IsModified(ADAMTransportConfigContainerSchema.TLSSendDomainSecureList) && this.DataObject.TLSSendDomainSecureList.Count > 256) { base.WriteError(new ExceededMaximumCollectionCountException(ADAMTransportConfigContainerSchema.TLSSendDomainSecureList.Name, 256, this.DataObject.TLSSendDomainSecureList.Count), ErrorCategory.InvalidOperation, base.Identity); } if (this.DataObject.IsModified(ADAMTransportConfigContainerSchema.ExternalPostmasterAddress) && this.DataObject.ExternalPostmasterAddress != null && (!this.DataObject.ExternalPostmasterAddress.Value.IsValidAddress || this.DataObject.ExternalPostmasterAddress.Value == SmtpAddress.NullReversePath)) { base.WriteError(new InvalidPostMasterAddressException(), ErrorCategory.InvalidOperation, base.Identity); } if (this.DataObject.IsModified(TransportConfigContainerSchema.TransportRuleRegexValidationTimeout) && this.DataObject.TransportRuleRegexValidationTimeout.TotalMilliseconds <= 0.0) { base.WriteError(new InvalidArgumentException("TransportRuleRegexValidationTimeout"), ErrorCategory.InvalidArgument, this.DataObject.TransportRuleRegexValidationTimeout); } if (this.DataObject.IsChanged(TransportConfigContainerSchema.SupervisionTags)) { HashSet <string> hashSet = new HashSet <string>(transportConfigContainer.SupervisionTags, StringComparer.OrdinalIgnoreCase); foreach (string item in this.DataObject.SupervisionTags) { hashSet.Remove(item); } if (hashSet.Count != 0) { this.WriteWarning(Strings.WarningSupervisionTagsRemoved); } } this.ValidateShadowRedundancyPreference(transportConfigContainer); if (this.DataObject.IsModified(ADAMTransportConfigContainerSchema.SafetyNetHoldTime)) { this.WriteWarning(Strings.WarningSafetyNetHoldTimeMustBeGreaterThanReplayLagTime); } if (VariantConfiguration.InvariantNoFlightingSnapshot.Transport.LimitTransportRules.Enabled && this.DataObject.IsModified(TransportConfigContainerSchema.TransportRuleLimit)) { int num = (int)this.DataObject[TransportConfigContainerSchema.TransportRuleLimit]; int num2 = 0; try { ADRuleStorageManager adruleStorageManager = new ADRuleStorageManager(Utils.RuleCollectionNameFromRole(), base.DataSession); adruleStorageManager.LoadRuleCollection(); num2 = adruleStorageManager.Count; } catch (RuleCollectionNotInAdException) { } if (num2 > num) { base.WriteError(new TransportRuleLimitTooSmallException(num, num2), ErrorCategory.InvalidOperation, base.Identity); } } }