Example #1
0
        private void WriteRuleObject(TransportRule transportRule)
        {
            JournalingRule  journalingRule = null;
            ParserException ex             = null;

            try
            {
                journalingRule = (JournalingRule)JournalingRuleParser.Instance.GetRule(transportRule.Xml);
            }
            catch (ParserException ex2)
            {
                ex = ex2;
            }
            Exception ex3 = null;

            if (journalingRule != null && journalingRule.GccRuleType != GccType.None && !this.LawfulInterception)
            {
                return;
            }
            if (journalingRule != null && journalingRule.GccRuleType == GccType.None && this.LawfulInterception)
            {
                return;
            }
            JournalRuleObject journalRuleObject;

            if (journalingRule == null)
            {
                journalRuleObject = JournalRuleObject.CreateCorruptJournalRuleObject(transportRule, Strings.CorruptRule(transportRule.Name, ex.Message));
            }
            else if (journalingRule.IsTooAdvancedToParse)
            {
                journalRuleObject = JournalRuleObject.CreateCorruptJournalRuleObject(transportRule, Strings.CannotParseRuleDueToVersion(transportRule.Name));
            }
            else
            {
                journalRuleObject = new JournalRuleObject();
                try
                {
                    journalRuleObject.Deserialize(journalingRule);
                }
                catch (RecipientInvalidException ex4)
                {
                    ex3 = ex4;
                }
                catch (JournalRuleCorruptException ex5)
                {
                    ex3 = ex5;
                }
            }
            if (ex3 != null)
            {
                journalRuleObject = JournalRuleObject.CreateCorruptJournalRuleObject(transportRule, Strings.CorruptRule(transportRule.Name, ex3.Message));
            }
            journalRuleObject.SetTransportRule(transportRule);
            this.WriteResult(journalRuleObject);
        }
        internal static JournalNdrValidationCheckResult ValidateJournalNdrMailboxSetting(IConfigDataProvider dataProvider, SmtpAddress journalNdrToAddress)
        {
            ADJournalRuleStorageManager adjournalRuleStorageManager = null;
            bool flag = false;

            try
            {
                adjournalRuleStorageManager = new ADJournalRuleStorageManager("JournalingVersioned", dataProvider);
            }
            catch (RuleCollectionNotInAdException)
            {
            }
            if (adjournalRuleStorageManager != null)
            {
                adjournalRuleStorageManager.LoadRuleCollection();
                RoutingAddress value = new RoutingAddress(journalNdrToAddress.ToString());
                if (value == RoutingAddress.NullReversePath)
                {
                    if (adjournalRuleStorageManager.Count > 0)
                    {
                        return(JournalNdrValidationCheckResult.JournalNdrCannotBeNullReversePath);
                    }
                }
                else
                {
                    foreach (Microsoft.Exchange.MessagingPolicies.Rules.Rule rule in adjournalRuleStorageManager.GetRuleCollection())
                    {
                        TransportRule     transportRule     = (TransportRule)rule;
                        JournalRuleObject journalRuleObject = new JournalRuleObject();
                        journalRuleObject.Deserialize(transportRule as JournalingRule);
                        if (journalRuleObject.Recipient != null && journalRuleObject.Recipient != null && journalNdrToAddress == journalRuleObject.Recipient.Value)
                        {
                            return(JournalNdrValidationCheckResult.JournalNdrExistInJournalRuleRecipient);
                        }
                        if (journalNdrToAddress == journalRuleObject.JournalEmailAddress)
                        {
                            flag = true;
                        }
                    }
                }
            }
            if (!flag)
            {
                return(JournalNdrValidationCheckResult.JournalNdrValidationPassed);
            }
            return(JournalNdrValidationCheckResult.JournalNdrExistInJournalRuleJournalEmailAddress);
        }
Example #3
0
        protected override void InternalProcessRecord()
        {
            if (!base.ShouldContinue(Strings.PromptToOverwriteRulesOnImport))
            {
                return;
            }
            ADJournalRuleStorageManager adjournalRuleStorageManager;

            try
            {
                adjournalRuleStorageManager = new ADJournalRuleStorageManager("JournalingVersioned", base.DataSession);
            }
            catch (RuleCollectionNotInAdException exception)
            {
                base.WriteError(exception, ErrorCategory.InvalidOperation, null);
                return;
            }
            TransportRuleCollection transportRuleCollection = null;

            using (Stream stream = new MemoryStream(this.FileData))
            {
                try
                {
                    transportRuleCollection = (TransportRuleCollection)JournalingRuleParser.Instance.LoadStream(stream);
                }
                catch (ParserException exception2)
                {
                    base.WriteError(exception2, ErrorCategory.InvalidData, "FileData");
                    return;
                }
            }
            JournalRuleObject journalRuleObject = new JournalRuleObject();

            foreach (Microsoft.Exchange.MessagingPolicies.Rules.Rule rule in transportRuleCollection)
            {
                JournalingRule journalingRule = (JournalingRule)rule;
                try
                {
                    journalRuleObject.Deserialize(journalingRule);
                }
                catch (RecipientInvalidException exception3)
                {
                    base.WriteError(exception3, ErrorCategory.InvalidArgument, journalRuleObject.JournalEmailAddress);
                    return;
                }
                catch (JournalRuleCorruptException exception4)
                {
                    base.WriteError(exception4, ErrorCategory.InvalidArgument, journalingRule.Name);
                }
                if (journalingRule.IsTooAdvancedToParse)
                {
                    base.WriteError(new InvalidOperationException(Strings.CannotCreateRuleDueToVersion(journalingRule.Name)), ErrorCategory.InvalidOperation, null);
                    return;
                }
            }
            try
            {
                adjournalRuleStorageManager.ReplaceRules(transportRuleCollection, this.ResolveCurrentOrganization());
            }
            catch (DataValidationException exception5)
            {
                base.WriteError(exception5, ErrorCategory.InvalidArgument, null);
            }
        }