示例#1
0
            protected override void HandleNonAuthoritativeDomains(EmailAddressPolicy policy, HashSet <SmtpDomain> domains)
            {
                ProxyAddressTemplateCollection proxyAddressTemplateCollection = new ProxyAddressTemplateCollection();

                foreach (ProxyAddressTemplate proxyAddressTemplate in policy.NonAuthoritativeDomains)
                {
                    SmtpDomain smtpDomain;
                    if (!UpdateEmailAddressPolicy.DomainValidator.TryGetDomain(proxyAddressTemplate, out smtpDomain))
                    {
                        proxyAddressTemplateCollection.Add(proxyAddressTemplate);
                    }
                }
                bool flag = false;

                foreach (SmtpDomain smtpDomain2 in domains)
                {
                    SmtpProxyAddressTemplate item = new SmtpProxyAddressTemplate("@" + smtpDomain2.Domain, false);
                    proxyAddressTemplateCollection.Add(item);
                    if (!flag && !policy.NonAuthoritativeDomains.Contains(item))
                    {
                        flag = true;
                    }
                }
                if (!flag)
                {
                    flag = (proxyAddressTemplateCollection.Count != policy.NonAuthoritativeDomains.Count);
                }
                if (flag)
                {
                    UpdateEmailAddressPolicy.CheckEapVersion(policy);
                    policy.NonAuthoritativeDomains = proxyAddressTemplateCollection;
                }
            }
示例#2
0
            protected override void HandleNonAuthoritativeDomains(EmailAddressPolicy policy, HashSet <SmtpDomain> domains)
            {
                ProxyAddressTemplateCollection proxyAddressTemplateCollection = new ProxyAddressTemplateCollection();

                foreach (ProxyAddressTemplate proxyAddressTemplate in policy.NonAuthoritativeDomains)
                {
                    SmtpDomain template;
                    if (!UpdateEmailAddressPolicy.DomainValidator.TryGetDomain(proxyAddressTemplate, out template) || (!SetAcceptedDomain.DomainEditValidator.Conflict(this.newDomain, template) && !SetAcceptedDomain.DomainEditValidator.Conflict(this.oldDomain, template)))
                    {
                        proxyAddressTemplateCollection.Add(proxyAddressTemplate);
                    }
                }
                foreach (SmtpDomain smtpDomain in domains)
                {
                    if (SetAcceptedDomain.DomainEditValidator.Conflict(this.newDomain, smtpDomain) || SetAcceptedDomain.DomainEditValidator.Conflict(this.oldDomain, smtpDomain))
                    {
                        SmtpProxyAddressTemplate item = new SmtpProxyAddressTemplate("@" + smtpDomain.Domain, false);
                        proxyAddressTemplateCollection.Add(item);
                    }
                }
                UpdateEmailAddressPolicy.CheckEapVersion(policy);
                policy.NonAuthoritativeDomains = proxyAddressTemplateCollection;
                this.session.Save(policy);
            }
示例#3
0
 internal static int PreparePriorityOfEapObjects(OrganizationId organizationId, EmailAddressPolicy policy, IConfigDataProvider session, TaskExtendedErrorLoggingDelegate writeError, out EmailAddressPolicy[] policiesAdjusted, out EmailAddressPolicyPriority[] originalPriorities)
 {
     policiesAdjusted   = null;
     originalPriorities = null;
     try
     {
         QueryFilter queryFilter = new AndFilter(new QueryFilter[]
         {
             new ComparisonFilter(ComparisonOperator.LessThan, EmailAddressPolicySchema.Priority, EmailAddressPolicyPriority.Lowest),
             new ComparisonFilter(ComparisonOperator.GreaterThanOrEqual, EmailAddressPolicySchema.Priority, EmailAddressPolicyPriority.Highest)
         });
         if (policy.ObjectState != ObjectState.New)
         {
             queryFilter = new AndFilter(new QueryFilter[]
             {
                 queryFilter,
                 new ComparisonFilter(ComparisonOperator.NotEqual, ADObjectSchema.Id, new ADObjectId(null, policy.Guid))
             });
         }
         IConfigurationSession configurationSession       = (IConfigurationSession)session;
         ADPagedReader <EmailAddressPolicy> adpagedReader = configurationSession.FindPaged <EmailAddressPolicy>(EmailAddressPolicyIdParameter.GetRootContainerId(configurationSession, organizationId), QueryScope.OneLevel, queryFilter, new SortBy(EmailAddressPolicySchema.Priority, SortOrder.Ascending), 0);
         EmailAddressPolicy[] array = adpagedReader.ReadAllPages();
         Array.Sort <EmailAddressPolicy>(array, EmailAddressPolicy.PriorityComparer);
         if (policy.Priority != EmailAddressPolicyPriority.Lowest)
         {
             if (policy.ObjectState == ObjectState.New)
             {
                 if ((array.Length == 0 && policy.Priority != EmailAddressPolicyPriority.Highest) || (array.Length > 0 && policy.Priority > 1 + array[array.Length - 1].Priority))
                 {
                     writeError(new ArgumentException(Strings.ErrorInvalidEapNewPriority(policy.Priority.ToString()), "Priority"), ErrorCategory.InvalidArgument, policy.Id, true);
                 }
             }
             else if ((array.Length == 0 && policy.Priority != EmailAddressPolicyPriority.Highest) || (array.Length > 0 && policy.Priority > array[array.Length - 1].Priority))
             {
                 writeError(new ArgumentException(Strings.ErrorInvalidEapSetPriority(policy.Priority.ToString()), "Priority"), ErrorCategory.InvalidArgument, policy.Id, true);
             }
         }
         List <EmailAddressPolicy>         list  = new List <EmailAddressPolicy>();
         List <EmailAddressPolicyPriority> list2 = new List <EmailAddressPolicyPriority>();
         bool flag = false;
         for (int i = 0; i < array.Length; i++)
         {
             int num = i + (flag ? 1 : 0) + EmailAddressPolicyPriority.Highest;
             if (!flag && num == policy.Priority)
             {
                 flag = true;
                 num++;
             }
             EmailAddressPolicyPriority priority = array[i].Priority;
             UpdateEmailAddressPolicy.CheckEapVersion(array[i]);
             array[i].Priority = (EmailAddressPolicyPriority)num;
             if (array[i].IsChanged(EmailAddressPolicySchema.Priority))
             {
                 list.Add(array[i]);
                 list2.Add(priority);
             }
         }
         if (!flag)
         {
             UpdateEmailAddressPolicy.CheckEapVersion(policy);
             policy.Priority = (EmailAddressPolicyPriority)(array.Length + EmailAddressPolicyPriority.Highest);
         }
         foreach (EmailAddressPolicy emailAddressPolicy in list)
         {
             ValidationError[] array2 = emailAddressPolicy.Validate();
             int num2 = 0;
             while (array2.Length > num2)
             {
                 writeError(new InvalidOperationException(Strings.ErrorInvalidOperationOnEapObject(emailAddressPolicy.Id.ToString(), array2[num2].Description)), ErrorCategory.InvalidData, policy.Id, array2.Length - 1 == num2);
                 num2++;
             }
         }
         policiesAdjusted   = list.ToArray();
         originalPriorities = list2.ToArray();
         return(list.Count);
     }
     catch (DataSourceTransientException exception)
     {
         writeError(exception, ErrorCategory.ReadError, policy.Id, true);
     }
     return(-1);
 }