internal static TransportRulePredicate CreatePredicateFromBifInfo(RuleBifurcationInfo bifInfo) { if (bifInfo.ADAttributesForTextMatch.Count > 0 || bifInfo.ADAttributes.Count > 0 || bifInfo.Managers.Count > 0 || bifInfo.Recipients.Count > 0 || bifInfo.Lists.Count == 0 || bifInfo.FromRecipients.Count > 0 || bifInfo.FromLists.Count > 0 || bifInfo.Partners.Count > 0 || bifInfo.RecipientAddressContainsWords.Count > 0 || bifInfo.RecipientDomainIs.Count > 0 || bifInfo.RecipientMatchesPatterns.Count > 0 || bifInfo.RecipientAttributeContains.Count > 0 || bifInfo.RecipientAttributeMatches.Count > 0 || bifInfo.SenderInRecipientList.Count > 0 || bifInfo.RecipientInSenderList.Count > 0) { return(null); } if (bifInfo.InternalRecipients || bifInfo.ExternalRecipients || bifInfo.ExternalPartnerRecipients || bifInfo.ExternalNonPartnerRecipients) { return(null); } if (!string.IsNullOrEmpty(bifInfo.ManagementRelationship)) { return(null); } List <SmtpAddress> list = new List <SmtpAddress>(bifInfo.Lists.Count); for (int i = 0; i < bifInfo.Lists.Count; i++) { SmtpAddress item = new SmtpAddress(bifInfo.Lists[i]); if (item.IsValidAddress) { list.Add(item); } } SentToMemberOfPredicate sentToMemberOfPredicate = new SentToMemberOfPredicate(); if (list.Count > 0) { sentToMemberOfPredicate.Addresses = list.ToArray(); } return(sentToMemberOfPredicate); }
internal static TransportRulePredicate CreatePredicateFromBifInfo(RuleBifurcationInfo bifInfo) { if (bifInfo.ADAttributesForTextMatch.Count > 0 || bifInfo.ADAttributes.Count > 0 || bifInfo.Managers.Count > 0 || bifInfo.Recipients.Count > 0 || bifInfo.Lists.Count > 0 || bifInfo.FromRecipients.Count > 0 || bifInfo.FromLists.Count > 0 || bifInfo.Partners.Count > 0 || bifInfo.RecipientAddressContainsWords.Count > 0 || bifInfo.RecipientDomainIs.Count > 0 || bifInfo.RecipientMatchesPatterns.Count > 0 || bifInfo.RecipientAttributeContains.Count > 0 || bifInfo.RecipientAttributeMatches.Count > 0 || bifInfo.SenderInRecipientList.Count > 0 || bifInfo.RecipientInSenderList.Count > 0) { return(null); } if (!string.IsNullOrEmpty(bifInfo.ManagementRelationship)) { return(null); } SentToScopePredicate sentToScopePredicate = new SentToScopePredicate(); if (bifInfo.InternalRecipients && !bifInfo.ExternalRecipients && !bifInfo.ExternalPartnerRecipients && !bifInfo.ExternalNonPartnerRecipients) { sentToScopePredicate.Scope = ToUserScope.InOrganization; return(sentToScopePredicate); } if (!bifInfo.InternalRecipients && bifInfo.ExternalRecipients && !bifInfo.ExternalPartnerRecipients && !bifInfo.ExternalNonPartnerRecipients) { sentToScopePredicate.Scope = ToUserScope.NotInOrganization; return(sentToScopePredicate); } if (!bifInfo.InternalRecipients && !bifInfo.ExternalRecipients && bifInfo.ExternalPartnerRecipients && !bifInfo.ExternalNonPartnerRecipients) { sentToScopePredicate.Scope = ToUserScope.ExternalPartner; return(sentToScopePredicate); } if (!bifInfo.InternalRecipients && !bifInfo.ExternalRecipients && !bifInfo.ExternalPartnerRecipients && bifInfo.ExternalNonPartnerRecipients) { sentToScopePredicate.Scope = ToUserScope.ExternalNonPartner; return(sentToScopePredicate); } return(null); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { RuleBifurcationInfo ruleBifurcationInfo = new RuleBifurcationInfo(); RuleBifurcationInfo ruleBifurcationInfo2 = new RuleBifurcationInfo(); foreach (SmtpAddress smtpAddress in this.Addresses) { if (!smtpAddress.IsValidAddress) { throw new ArgumentException(RulesTasksStrings.InvalidRecipient(smtpAddress.ToString()), "Address"); } ruleBifurcationInfo.FromLists.Add(smtpAddress.ToString()); ruleBifurcationInfo2.Lists.Add(smtpAddress.ToString()); } foreach (SmtpAddress smtpAddress2 in this.Addresses2) { if (!smtpAddress2.IsValidAddress) { throw new ArgumentException(RulesTasksStrings.InvalidRecipient(smtpAddress2.ToString()), "Address"); } ruleBifurcationInfo.Lists.Add(smtpAddress2.ToString()); ruleBifurcationInfo2.FromLists.Add(smtpAddress2.ToString()); } additionalBifurcationInfo = ruleBifurcationInfo2; return(ruleBifurcationInfo); }
internal static TransportRulePredicate CreatePredicateFromBifInfo(RuleBifurcationInfo bifInfo) { if (bifInfo.ADAttributesForTextMatch.Count > 0 || bifInfo.ADAttributes.Count > 0 || bifInfo.Managers.Count > 0 || bifInfo.Recipients.Count > 0 || bifInfo.Lists.Count > 0 || bifInfo.FromRecipients.Count > 0 || bifInfo.FromLists.Count > 0 || bifInfo.Partners.Count > 0 || bifInfo.RecipientAddressContainsWords.Count == 0 || bifInfo.RecipientDomainIs.Count > 0 || bifInfo.RecipientMatchesPatterns.Count > 0 || bifInfo.RecipientAttributeContains.Count > 0 || bifInfo.RecipientAttributeMatches.Count > 0 || bifInfo.SenderInRecipientList.Count > 0 || bifInfo.RecipientInSenderList.Count > 0) { return(null); } if (bifInfo.InternalRecipients || bifInfo.ExternalRecipients || bifInfo.ExternalPartnerRecipients || bifInfo.ExternalNonPartnerRecipients) { return(null); } if (!string.IsNullOrEmpty(bifInfo.ManagementRelationship)) { return(null); } RecipientAddressContainsWordsPredicate recipientAddressContainsWordsPredicate = new RecipientAddressContainsWordsPredicate(); Word[] array = new Word[bifInfo.RecipientAddressContainsWords.Count]; for (int i = 0; i < bifInfo.RecipientAddressContainsWords.Count; i++) { try { array[i] = new Word(bifInfo.RecipientAddressContainsWords[i]); } catch (ArgumentOutOfRangeException) { return(null); } } recipientAddressContainsWordsPredicate.Words = array; return(recipientAddressContainsWordsPredicate); }
internal static TransportRulePredicate CreatePredicateFromBifInfo(RuleBifurcationInfo bifInfo) { if (bifInfo.ADAttributesForTextMatch.Count > 0 || bifInfo.ADAttributes.Count > 0 || bifInfo.Managers.Count > 0 || bifInfo.Recipients.Count > 0 || bifInfo.Lists.Count > 0 || bifInfo.FromRecipients.Count > 0 || bifInfo.FromLists.Count > 0 || bifInfo.Partners.Count > 0 || bifInfo.RecipientAddressContainsWords.Count > 0 || bifInfo.RecipientDomainIs.Count > 0 || bifInfo.RecipientMatchesPatterns.Count > 0 || bifInfo.RecipientAttributeContains.Count > 0 || (bifInfo.RecipientAttributeMatches.Count == 0 && bifInfo.RecipientAttributeMatchesRegex.Count == 0) || bifInfo.SenderInRecipientList.Count > 0 || bifInfo.RecipientInSenderList.Count > 0) { return(null); } if (bifInfo.InternalRecipients || bifInfo.ExternalRecipients || bifInfo.ExternalPartnerRecipients || bifInfo.ExternalNonPartnerRecipients) { return(null); } if (!string.IsNullOrEmpty(bifInfo.ManagementRelationship)) { return(null); } bool flag = bifInfo.RecipientAttributeMatches.Count > 0; RecipientAttributeMatchesPredicate recipientAttributeMatchesPredicate = new RecipientAttributeMatchesPredicate(flag); List <string> list = flag ? bifInfo.RecipientAttributeMatches : bifInfo.RecipientAttributeMatchesRegex; Pattern[] array = new Pattern[list.Count]; for (int i = 0; i < list.Count; i++) { try { array[i] = new Pattern(list[i], flag, false); } catch (ArgumentException) { return(null); } } recipientAttributeMatchesPredicate.patterns = array; return(recipientAttributeMatchesPredicate); }
internal static TransportRulePredicate CreatePredicateFromBifInfo(RuleBifurcationInfo bifInfo) { if (bifInfo.ADAttributesForTextMatch.Count > 0 || bifInfo.ADAttributes.Count > 0 || bifInfo.Managers.Count > 0 || bifInfo.Recipients.Count > 0 || bifInfo.Lists.Count > 0 || bifInfo.FromRecipients.Count > 0 || bifInfo.FromLists.Count > 0 || bifInfo.Partners.Count > 0 || bifInfo.RecipientAddressContainsWords.Count > 0 || bifInfo.RecipientDomainIs.Count > 0 || bifInfo.RecipientMatchesPatterns.Count > 0 || bifInfo.RecipientAttributeContains.Count > 0 || bifInfo.RecipientAttributeMatches.Count > 0 || bifInfo.SenderInRecipientList.Count > 0 || bifInfo.RecipientInSenderList.Count > 0) { return(null); } if (bifInfo.InternalRecipients || bifInfo.ExternalRecipients || bifInfo.ExternalPartnerRecipients || bifInfo.ExternalNonPartnerRecipients) { return(null); } if (string.IsNullOrEmpty(bifInfo.ManagementRelationship)) { return(null); } ManagementRelationshipPredicate managementRelationshipPredicate = new ManagementRelationshipPredicate(); if (string.Equals(bifInfo.ManagementRelationship, ManagementRelationship.Manager.ToString(), StringComparison.InvariantCultureIgnoreCase)) { managementRelationshipPredicate.ManagementRelationship = ManagementRelationship.Manager; } else { managementRelationshipPredicate.ManagementRelationship = ManagementRelationship.DirectReport; } return(managementRelationshipPredicate); }
internal static TransportRulePredicate CreatePredicateFromBifInfo(RuleBifurcationInfo bifInfo) { if (bifInfo.ADAttributesForTextMatch.Count > 0 || bifInfo.ADAttributes.Count == 0 || bifInfo.Managers.Count > 0 || bifInfo.Recipients.Count > 0 || bifInfo.Lists.Count > 0 || bifInfo.FromRecipients.Count > 0 || bifInfo.FromLists.Count > 0 || bifInfo.Partners.Count > 0 || bifInfo.RecipientAddressContainsWords.Count > 0 || bifInfo.RecipientDomainIs.Count > 0 || bifInfo.RecipientMatchesPatterns.Count > 0 || bifInfo.RecipientAttributeContains.Count > 0 || bifInfo.RecipientAttributeMatches.Count > 0 || bifInfo.SenderInRecipientList.Count > 0 || bifInfo.RecipientInSenderList.Count > 0) { return(null); } if (bifInfo.InternalRecipients || bifInfo.ExternalRecipients || bifInfo.ExternalPartnerRecipients || bifInfo.ExternalNonPartnerRecipients) { return(null); } if (!string.IsNullOrEmpty(bifInfo.ManagementRelationship)) { return(null); } ADAttributeComparisonPredicate adattributeComparisonPredicate = new ADAttributeComparisonPredicate { ADAttribute = (ADAttribute)Enum.Parse(typeof(ADAttribute), bifInfo.ADAttributes[0]) }; if (bifInfo.CheckADAttributeEquality) { adattributeComparisonPredicate.Evaluation = Evaluation.Equal; } else { adattributeComparisonPredicate.Evaluation = Evaluation.NotEqual; } return(adattributeComparisonPredicate); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { additionalBifurcationInfo = null; RuleBifurcationInfo ruleBifurcationInfo = new RuleBifurcationInfo(); switch (this.scope) { case ToUserScope.InOrganization: ruleBifurcationInfo.InternalRecipients = true; break; case ToUserScope.NotInOrganization: ruleBifurcationInfo.ExternalRecipients = true; break; case ToUserScope.ExternalPartner: ruleBifurcationInfo.ExternalPartnerRecipients = true; break; case ToUserScope.ExternalNonPartner: ruleBifurcationInfo.ExternalNonPartnerRecipients = true; break; default: return(null); } return(ruleBifurcationInfo); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { additionalBifurcationInfo = null; return(new RuleBifurcationInfo { ManagementRelationship = this.ManagementRelationship.ToString() }); }
internal static bool TryCreatePredicateFromBifInfo(TypeMapping[] mappings, RuleBifurcationInfo bifInfo1, RuleBifurcationInfo bifInfo2, out TransportRulePredicate predicate, out bool twoBifInfoConverted) { foreach (TypeMapping typeMapping in mappings) { if (typeMapping.Type.IsSubclassOf(typeof(BifurcationInfoPredicate))) { MethodInfo method = typeMapping.Type.GetMethod("CreatePredicateFromBifInfo", BindingFlags.Static | BindingFlags.NonPublic, null, new Type[] { typeof(RuleBifurcationInfo) }, null); TransportRulePredicate transportRulePredicate; if (method != null) { transportRulePredicate = (TransportRulePredicate)method.Invoke(null, new object[] { bifInfo1 }); if (transportRulePredicate != null) { twoBifInfoConverted = false; predicate = transportRulePredicate; predicate.Initialize(mappings); return(true); } } if (bifInfo2 == null) { goto IL_116; } method = typeMapping.Type.GetMethod("CreatePredicateFromBifInfo", BindingFlags.Static | BindingFlags.NonPublic, null, new Type[] { typeof(RuleBifurcationInfo), typeof(RuleBifurcationInfo) }, null); if (!(method != null)) { goto IL_116; } transportRulePredicate = (TransportRulePredicate)method.Invoke(null, new object[] { bifInfo1, bifInfo2 }); if (transportRulePredicate == null) { goto IL_116; } twoBifInfoConverted = true; predicate = transportRulePredicate; predicate.Initialize(mappings); return(true); } IL_116 :; } predicate = null; twoBifInfoConverted = false; return(false); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { additionalBifurcationInfo = null; RuleBifurcationInfo ruleBifurcationInfo = new RuleBifurcationInfo(); foreach (Word word in this.lists) { ruleBifurcationInfo.SenderInRecipientList.Add(word.ToString()); } return(ruleBifurcationInfo); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { additionalBifurcationInfo = null; RuleBifurcationInfo ruleBifurcationInfo = new RuleBifurcationInfo(); foreach (Word word in this.Words) { ruleBifurcationInfo.RecipientDomainIs.Add(word.ToString()); } return(ruleBifurcationInfo); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { additionalBifurcationInfo = null; return(new RuleBifurcationInfo { ADAttributes = { this.ADAttribute.ToString() }, CheckADAttributeEquality = (this.Evaluation == Evaluation.Equal) }); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { additionalBifurcationInfo = null; RuleBifurcationInfo ruleBifurcationInfo = new RuleBifurcationInfo(); foreach (Word word in this.words) { ruleBifurcationInfo.RecipientAttributeContains.Add(word.ToString()); ruleBifurcationInfo.Patterns.Add(word.ToString()); } return(ruleBifurcationInfo); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { additionalBifurcationInfo = null; return(new RuleBifurcationInfo { ADAttributesForTextMatch = { this.ADAttribute.ToString() }, CheckADAttributeEquality = (this.ADAttributeEvaluationType == ADAttributeEvaluationType.Equals), IsSenderEvaluation = (this.EvaluatedUser == EvaluatedUser.Sender), ADAttributeValue = this.AttributeValue }); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { additionalBifurcationInfo = null; RuleBifurcationInfo ruleBifurcationInfo = new RuleBifurcationInfo(); foreach (SmtpAddress smtpAddress in this.Addresses) { if (!smtpAddress.IsValidAddress) { throw new ArgumentException(RulesTasksStrings.InvalidRecipient(smtpAddress.ToString()), "Address"); } ruleBifurcationInfo.Recipients.Add(smtpAddress.ToString()); } return(ruleBifurcationInfo); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { additionalBifurcationInfo = null; RuleBifurcationInfo ruleBifurcationInfo = new RuleBifurcationInfo(); foreach (SmtpAddress smtpAddress in this.Addresses) { string text = smtpAddress.ToString(); if (string.IsNullOrEmpty(text)) { throw new ArgumentException(RulesTasksStrings.InvalidRecipient(text), "Address"); } ruleBifurcationInfo.Managers.Add(text); } ruleBifurcationInfo.IsSenderEvaluation = (this.EvaluatedUser == EvaluatedUser.Sender); return(ruleBifurcationInfo); }
internal override RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo) { additionalBifurcationInfo = null; RuleBifurcationInfo ruleBifurcationInfo = new RuleBifurcationInfo(); foreach (Pattern pattern in this.patterns) { if (base.UseLegacyRegex) { ruleBifurcationInfo.RecipientAttributeMatches.Add(pattern.ToString()); } else { ruleBifurcationInfo.RecipientAttributeMatchesRegex.Add(pattern.ToString()); } ruleBifurcationInfo.Patterns.Add(pattern.ToString()); } return(ruleBifurcationInfo); }
internal abstract RuleBifurcationInfo ToRuleBifurcationInfo(out RuleBifurcationInfo additionalBifurcationInfo);
internal static TransportRulePredicate CreatePredicateFromBifInfo(RuleBifurcationInfo bifInfo1, RuleBifurcationInfo bifInfo2) { if (bifInfo1.ADAttributesForTextMatch.Count > 0 || bifInfo1.ADAttributes.Count > 0 || bifInfo1.Managers.Count > 0 || bifInfo1.Recipients.Count > 0 || bifInfo1.Lists.Count == 0 || bifInfo1.FromRecipients.Count > 0 || bifInfo1.FromLists.Count == 0 || bifInfo1.Partners.Count > 0 || bifInfo1.RecipientAddressContainsWords.Count > 0 || bifInfo1.RecipientDomainIs.Count > 0 || bifInfo1.RecipientMatchesPatterns.Count > 0 || bifInfo1.RecipientAttributeContains.Count > 0 || bifInfo1.RecipientAttributeMatches.Count > 0 || bifInfo1.SenderInRecipientList.Count > 0 || bifInfo1.RecipientInSenderList.Count > 0) { return(null); } if (bifInfo2.ADAttributesForTextMatch.Count > 0 || bifInfo2.ADAttributes.Count > 0 || bifInfo2.Managers.Count > 0 || bifInfo2.Recipients.Count > 0 || bifInfo2.Lists.Count == 0 || bifInfo2.FromRecipients.Count > 0 || bifInfo2.FromLists.Count == 0 || bifInfo2.Partners.Count > 0 || bifInfo2.RecipientAddressContainsWords.Count > 0 || bifInfo2.RecipientDomainIs.Count > 0 || bifInfo2.RecipientMatchesPatterns.Count > 0 || bifInfo2.RecipientAttributeContains.Count > 0 || bifInfo2.RecipientAttributeMatches.Count > 0 || bifInfo2.SenderInRecipientList.Count > 0 || bifInfo2.RecipientInSenderList.Count > 0) { return(null); } if (!string.IsNullOrEmpty(bifInfo1.ManagementRelationship) || !string.IsNullOrEmpty(bifInfo2.ManagementRelationship)) { return(null); } if (bifInfo1.Exception != bifInfo2.Exception) { return(null); } if (bifInfo1.InternalRecipients || bifInfo1.ExternalRecipients || bifInfo1.ExternalPartnerRecipients || bifInfo1.ExternalNonPartnerRecipients) { return(null); } if (bifInfo2.InternalRecipients || bifInfo2.ExternalRecipients || bifInfo2.ExternalPartnerRecipients || bifInfo2.ExternalNonPartnerRecipients) { return(null); } if (bifInfo1.Lists.Count != bifInfo2.FromLists.Count || bifInfo2.Lists.Count != bifInfo1.FromLists.Count) { return(null); } for (int i = 0; i < bifInfo1.Lists.Count; i++) { if (bifInfo1.Lists[i] != bifInfo2.FromLists[i]) { return(null); } } for (int j = 0; j < bifInfo2.Lists.Count; j++) { if (bifInfo2.Lists[j] != bifInfo1.FromLists[j]) { return(null); } } List <SmtpAddress> list = new List <SmtpAddress>(bifInfo1.FromLists.Count); for (int k = 0; k < bifInfo1.FromLists.Count; k++) { SmtpAddress item = new SmtpAddress(bifInfo1.FromLists[k]); if (item.IsValidAddress) { list.Add(item); } } List <SmtpAddress> list2 = new List <SmtpAddress>(bifInfo1.Lists.Count); for (int l = 0; l < bifInfo1.Lists.Count; l++) { SmtpAddress item2 = new SmtpAddress(bifInfo1.Lists[l]); if (item2.IsValidAddress) { list2.Add(item2); } } BetweenMemberOfPredicate betweenMemberOfPredicate = new BetweenMemberOfPredicate(); if (list.Count > 0) { betweenMemberOfPredicate.Addresses = list.ToArray(); } if (list2.Count > 0) { betweenMemberOfPredicate.Addresses2 = list2.ToArray(); } return(betweenMemberOfPredicate); }
internal TransportRule ToInternalRule() { AndCondition andCondition = new AndCondition(); List <RuleBifurcationInfo> list = new List <RuleBifurcationInfo>(); andCondition.SubConditions.Add(Microsoft.Exchange.MessagingPolicies.Rules.Condition.True); int num = -1; if (this.conditions != null) { foreach (TransportRulePredicate transportRulePredicate in this.conditions) { if (transportRulePredicate.Rank <= num) { throw new ArgumentException(Strings.InvalidPredicateSequence, "Conditions"); } num = transportRulePredicate.Rank; if (transportRulePredicate is BifurcationInfoPredicate) { BifurcationInfoPredicate bifurcationInfoPredicate = (BifurcationInfoPredicate)transportRulePredicate; RuleBifurcationInfo ruleBifurcationInfo; RuleBifurcationInfo item = bifurcationInfoPredicate.ToRuleBifurcationInfo(out ruleBifurcationInfo); list.Add(item); if (ruleBifurcationInfo != null) { list.Add(ruleBifurcationInfo); } } else { Microsoft.Exchange.MessagingPolicies.Rules.Condition item2 = transportRulePredicate.ToInternalCondition(); andCondition.SubConditions.Add(item2); } } } if (this.exceptions != null && this.exceptions.Length > 0) { OrCondition orCondition = new OrCondition(); andCondition.SubConditions.Add(new NotCondition(orCondition)); num = -1; foreach (TransportRulePredicate transportRulePredicate2 in this.exceptions) { if (transportRulePredicate2.Rank <= num) { throw new ArgumentException(Strings.InvalidPredicateSequence, "Exceptions"); } num = transportRulePredicate2.Rank; if (transportRulePredicate2 is BifurcationInfoPredicate) { BifurcationInfoPredicate bifurcationInfoPredicate2 = (BifurcationInfoPredicate)transportRulePredicate2; RuleBifurcationInfo ruleBifurcationInfo3; RuleBifurcationInfo ruleBifurcationInfo2 = bifurcationInfoPredicate2.ToRuleBifurcationInfo(out ruleBifurcationInfo3); ruleBifurcationInfo2.Exception = true; list.Add(ruleBifurcationInfo2); if (ruleBifurcationInfo3 != null) { ruleBifurcationInfo3.Exception = true; list.Add(ruleBifurcationInfo3); } } else { Microsoft.Exchange.MessagingPolicies.Rules.Condition item3 = transportRulePredicate2.ToInternalCondition(); orCondition.SubConditions.Add(item3); } } if (orCondition.SubConditions.Count == 0) { orCondition.SubConditions.Add(Microsoft.Exchange.MessagingPolicies.Rules.Condition.False); } } TransportRule transportRule = new TransportRule(base.Name, andCondition); transportRule.Enabled = this.State; transportRule.Comments = this.Comments; if (list.Count > 0) { transportRule.Fork = list; } foreach (Microsoft.Exchange.MessagingPolicies.Rules.Action item4 in this.CreateActions()) { transportRule.Actions.Add(item4); } return(transportRule); }