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); }
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); } }