Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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);
                 }
             }
         }
     }
 }
Exemplo n.º 3
0
 public JournalRule(JournalRuleObject rule) : base(rule)
 {
     this.Rule = rule;
 }
Exemplo n.º 4
0
 public RuleRow(JournalRuleObject rule) : base(rule)
 {
     this.Name        = rule.Name;
     this.Enabled     = rule.Enabled;
     this.CaptionText = Strings.EditRuleCaption(rule.Name);
 }
Exemplo n.º 5
0
        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);
                }
            }
        }