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 CheckForDuplicateExistingDomain()
        {
            AcceptedDomain acceptedDomain = OrganizationTaskHelper.GetAcceptedDomain(AcceptedDomainIdParameter.Parse(this.Name), base.Session, new Task.TaskErrorLoggingDelegate(base.WriteError), false);

            if (acceptedDomain != null)
            {
                base.WriteError(new ManagementObjectAlreadyExistsException(Strings.ErrorAcceptedDomainExists(this.Name)), ErrorCategory.ResourceExists, null);
            }
        }
Пример #3
0
        private void CalculateProperties()
        {
            AcceptedDomainIdParameter defaultDomain = this.DefaultDomain;

            if (defaultDomain != null)
            {
                AcceptedDomain acceptedDomain = (AcceptedDomain)base.GetDataObject <AcceptedDomain>(defaultDomain, base.DataSession, this.RootId, new LocalizedString?(Strings.ErrorDefaultDomainNotFound(defaultDomain)), new LocalizedString?(Strings.ErrorDefaultDomainNotUnique(defaultDomain)));
                this.DataObject.DefaultDomain = acceptedDomain.Id;
            }
        }
        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
                });
            }
        }
        private void CleanupSecondaryDomain()
        {
            AcceptedDomain acceptedDomain = OrganizationTaskHelper.GetAcceptedDomain(AcceptedDomainIdParameter.Parse(this.Name), base.Session, new Task.TaskErrorLoggingDelegate(base.WriteError), false);

            if (acceptedDomain != null)
            {
                try
                {
                    base.Session.Delete(acceptedDomain);
                }
                catch (Exception ex)
                {
                    this.WriteWarning(Strings.ErrorNonActiveOrganizationFound(ex.ToString()));
                }
            }
        }
Пример #6
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);
                    }
                }
            }
        }
Пример #7
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);
                }
            }
        }
Пример #8
0
 internal static void ValidateAssociatedAcceptedDomains(MultiValuedProperty <AcceptedDomainIdParameter> domainIdParameters, IConfigDataProvider dataSession, TenantInboundConnector dataObject, ObjectId rootId, Task task, Func <IIdentityParameter, IConfigDataProvider, ObjectId, LocalizedString?, LocalizedString?, IConfigurable> acceptedDomainsGetter)
 {
     if (domainIdParameters != null)
     {
         NewInboundConnector.ValidateCentralizedMailControlAndAssociatedAcceptedDomainsRestriction(dataSession, dataObject, task);
         dataObject.AssociatedAcceptedDomains.Clear();
         using (MultiValuedProperty <AcceptedDomainIdParameter> .Enumerator enumerator = domainIdParameters.GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 AcceptedDomainIdParameter acceptedDomainIdParameter = enumerator.Current;
                 AcceptedDomain            acceptedDomain            = (AcceptedDomain)acceptedDomainsGetter(acceptedDomainIdParameter, dataSession, rootId, new LocalizedString?(Strings.ErrorDefaultDomainNotFound(acceptedDomainIdParameter)), new LocalizedString?(Strings.ErrorDefaultDomainNotUnique(acceptedDomainIdParameter)));
                 dataObject.AssociatedAcceptedDomains.Add(acceptedDomain.Id);
             }
             return;
         }
     }
     dataObject.AssociatedAcceptedDomains.Clear();
 }
Пример #9
0
        protected override void InternalValidate()
        {
            base.InternalValidate();
            if (base.HasErrors)
            {
                return;
            }
            string message;

            if (!NewReceiveConnector.ValidataName(this.DataObject.Name, out message))
            {
                base.WriteError(new ArgumentException(message), ErrorCategory.InvalidArgument, null);
            }
            if (base.Fields.IsModified("DefaultDomain"))
            {
                AcceptedDomainIdParameter defaultDomain = this.DefaultDomain;
                if (defaultDomain != null)
                {
                    AcceptedDomain acceptedDomain = (AcceptedDomain)base.GetDataObject <AcceptedDomain>(defaultDomain, base.DataSession, this.RootId, new LocalizedString?(Strings.ErrorDefaultDomainNotFound(defaultDomain)), new LocalizedString?(Strings.ErrorDefaultDomainNotUnique(defaultDomain)));
                    this.DataObject.DefaultDomain = acceptedDomain.Id;
                }
                else
                {
                    this.DataObject.DefaultDomain = null;
                }
            }
            LocalizedException exception;

            if (!ReceiveConnectorNoMappingConflictCondition.Verify(this.DataObject, base.DataSession as IConfigurationSession, out exception))
            {
                base.WriteError(exception, ErrorCategory.InvalidOperation, this.DataObject);
            }
            if (!this.serverObject.IsEdgeServer && (this.DataObject.AuthMechanism & AuthMechanisms.ExchangeServer) != AuthMechanisms.None && !ReceiveConnectorFqdnCondition.Verify(this.DataObject, this.serverObject, out exception))
            {
                base.WriteError(exception, ErrorCategory.InvalidOperation, this.DataObject);
            }
            if (this.DataObject.AdvertiseClientSettings && (this.DataObject.PermissionGroups & PermissionGroups.ExchangeUsers) != PermissionGroups.ExchangeUsers)
            {
                base.WriteError(new AdvertiseClientSettingsWithoutExchangeUsersPermissionGroupsException(), ErrorCategory.InvalidOperation, this.DataObject);
            }
        }
        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);
        }
 protected override void InternalProcessRecord()
 {
     TaskLogger.LogEnter();
     if (this.TenantCU.OrganizationStatus == OrganizationStatus.PendingAcceptedDomainAddition || this.TenantCU.OrganizationStatus == OrganizationStatus.PendingAcceptedDomainRemoval)
     {
         OrganizationTaskHelper.SetOrganizationStatus(base.Session, this.TenantCU, OrganizationStatus.Active);
     }
     try
     {
         base.InternalProcessRecord();
     }
     catch (Exception)
     {
         this.CleanupSecondaryDomain();
         throw;
     }
     if (!base.HasErrors)
     {
         AcceptedDomain acceptedDomain = OrganizationTaskHelper.GetAcceptedDomain(AcceptedDomainIdParameter.Parse(this.Name), base.Session, new Task.TaskErrorLoggingDelegate(base.WriteError), true);
         base.WriteObject(acceptedDomain);
     }
     else
     {
         this.CleanupSecondaryDomain();
     }
     TaskLogger.LogExit();
 }