protected override void InternalValidate()
        {
            TaskLogger.LogEnter();
            base.InternalValidate();
            this.CheckForDuplicateExistingDomain();
            AcceptedDomain acceptedDomain = new AcceptedDomain();

            acceptedDomain.Name       = this.Name;
            acceptedDomain.DomainName = new SmtpDomainWithSubdomains(this.DomainName, false);
            acceptedDomain.DomainType = this.DomainType;
            acceptedDomain.SetId(base.Session, this.DomainName.ToString());
            acceptedDomain.OrganizationId = base.CurrentOrganizationId;
            NewAcceptedDomain.ValidateDomainName(acceptedDomain, new Task.TaskErrorLoggingDelegate(this.WriteWrappedError));
            if (!this.DomainOwnershipVerified && this.AuthenticationType == AuthenticationType.Federated)
            {
                bool flag = false;
                AcceptedDomainIdParameter    acceptedDomainIdParameter = AcceptedDomainIdParameter.Parse("*");
                IEnumerable <AcceptedDomain> objects = acceptedDomainIdParameter.GetObjects <AcceptedDomain>(this.TenantCU.Id, base.Session);
                foreach (AcceptedDomain acceptedDomain2 in objects)
                {
                    SmtpDomainWithSubdomains smtpDomainWithSubdomains = new SmtpDomainWithSubdomains(acceptedDomain2.DomainName.Domain.ToString(), true);
                    if (smtpDomainWithSubdomains.Match(this.DomainName.ToString()) == acceptedDomain2.DomainName.Domain.Length)
                    {
                        flag = true;
                        break;
                    }
                }
                if (!flag)
                {
                    base.WriteError(new OrganizationTaskException(Strings.ErrorTenantAdminsCanOnlyAddSubdomains(this.DomainName.ToString())), ErrorCategory.InvalidOperation, null);
                }
            }
            TaskLogger.LogExit();
        }
        private void GetDomains(string target, List <MailFilterListReport> values)
        {
            AcceptedDomainIdParameter acceptedDomainIdParameter = AcceptedDomainIdParameter.Parse("*");

            foreach (AcceptedDomain acceptedDomain in acceptedDomainIdParameter.GetObjects <AcceptedDomain>(null, base.ConfigSession))
            {
                values.Add(new MailFilterListReport
                {
                    Organization    = base.Organization.ToString(),
                    SelectionTarget = target,
                    Display         = acceptedDomain.Name,
                    Value           = acceptedDomain.Name
                });
            }
        }
示例#3
0
        internal void ValidateEmailAddress(PropertyInfo property, object task, IConfigDataProvider configSession, CmdletValidator.EmailAddress addressType, CmdletValidator.WildcardValidationOptions wildcardOptions, CmdletValidator.EmailAcceptedDomainOptions domainOptions = CmdletValidator.EmailAcceptedDomainOptions.SkipVerify)
        {
            IList <string> list;

            if (this.TryGetValues <string>(property, task, out list))
            {
                LocalizedString      message = (addressType == CmdletValidator.EmailAddress.Sender) ? Strings.InvalidSenderAddress : Strings.InvalidRecipientAddress;
                IEnumerable <string> source  = new string[0];
                if (domainOptions == CmdletValidator.EmailAcceptedDomainOptions.Verify)
                {
                    AcceptedDomainIdParameter acceptedDomainIdParameter = AcceptedDomainIdParameter.Parse("*");
                    source = from domain in acceptedDomainIdParameter.GetObjects <AcceptedDomain>(null, configSession)
                             select domain.DomainName.Domain.ToLower();
                }
                foreach (string address in list)
                {
                    bool flag2;
                    bool flag = Schema.Utilities.ValidateEmailAddress(address, out flag2);
                    if (flag && flag2)
                    {
                        flag &= (wildcardOptions == CmdletValidator.WildcardValidationOptions.Allow);
                        if (flag && list.Count > 1)
                        {
                            message = ((addressType == CmdletValidator.EmailAddress.Sender) ? Strings.CannotCombineWildcardSenderAddress : Strings.CannotCombineWildcardRecipientAddress);
                            flag    = false;
                        }
                    }
                    if (flag && domainOptions == CmdletValidator.EmailAcceptedDomainOptions.Verify)
                    {
                        SmtpAddress smtpAddress = new SmtpAddress(address);
                        if (!source.Contains(smtpAddress.Domain, StringComparer.InvariantCultureIgnoreCase))
                        {
                            flag    = false;
                            message = Strings.EmailAddressNotInAcceptedDomain(address);
                        }
                    }
                    if (!flag)
                    {
                        if (this.errorMessageId == null)
                        {
                            throw new InvalidExpressionException(message);
                        }
                        this.ThrowError(property);
                    }
                }
            }
        }
        internal static AcceptedDomain GetAcceptedDomain(AcceptedDomainIdParameter acceptedDomainId, IConfigurationSession adSession, Task.TaskErrorLoggingDelegate errorLogger, bool reportError)
        {
            AcceptedDomain result = null;
            IEnumerable <AcceptedDomain> objects = acceptedDomainId.GetObjects <AcceptedDomain>(null, adSession);

            using (IEnumerator <AcceptedDomain> enumerator = objects.GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    result = enumerator.Current;
                    if (reportError && enumerator.MoveNext())
                    {
                        errorLogger(new ManagementObjectAmbiguousException(Strings.ErrorSecondaryDomainNotUnique(acceptedDomainId.ToString())), ErrorCategory.InvalidArgument, null);
                    }
                }
                else if (reportError)
                {
                    errorLogger(new ManagementObjectNotFoundException(Strings.ErrorSecondaryDomainNotFound(acceptedDomainId.ToString())), ErrorCategory.InvalidArgument, null);
                }
            }
            return(result);
        }
示例#5
0
        internal void ValidateDomain(PropertyInfo property, object task, IConfigDataProvider configSession)
        {
            IList <Fqdn> list;

            if (this.TryGetValues <Fqdn>(property, task, out list) && list.Count > 0)
            {
                if (configSession == null)
                {
                    throw new NullReferenceException("ValidateDomain requires an IConfigDataProvider");
                }
                AcceptedDomainIdParameter acceptedDomainIdParameter = AcceptedDomainIdParameter.Parse("*");
                HashSet <string>          acceptedDomains           = new HashSet <string>(from domain in acceptedDomainIdParameter.GetObjects <AcceptedDomain>(null, configSession)
                                                                                           select domain.DomainName.Domain.ToLower());
                if (!list.All((Fqdn domain) => acceptedDomains.Contains(domain.Domain.ToLower())))
                {
                    this.ThrowError(property);
                }
            }
        }