Exemplo n.º 1
0
        public override bool CheckPrereqs(ITaskContext taskContext)
        {
            if (!base.CheckPrereqs(taskContext))
            {
                base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.HybridInfoBasePrereqsFailed));
                return(false);
            }
            HybridConfiguration hybridConfigurationObject = taskContext.HybridConfigurationObject;

            this.onPremOrgRel = taskContext.Parameters.Get <OrganizationRelationship>("_onPremOrgRel");
            if (this.onPremOrgRel == null)
            {
                throw new LocalizedException(HybridStrings.ErrorOrgRelNotFoundOnPrem);
            }
            this.tenantOrgRel = taskContext.Parameters.Get <OrganizationRelationship>("_tenantOrgRel");
            if (this.tenantOrgRel == null)
            {
                throw new LocalizedException(HybridStrings.ErrorOrgRelNotFoundOnTenant);
            }
            if (this.RequiresFederationTrust())
            {
                this.fedOrgId = base.TenantSession.GetFederatedOrganizationIdentifier();
                if (this.fedOrgId == null)
                {
                    throw new LocalizedException(HybridStrings.ErrorFederationIDNotProvisioned);
                }
                if (!this.fedOrgId.Enabled || string.IsNullOrEmpty(this.fedOrgId.AccountNamespace.Domain) || this.fedOrgId.Domains.Count == 0)
                {
                    throw new LocalizedException(HybridStrings.ErrorFederationIDNotProvisioned);
                }
            }
            return(true);
        }
Exemplo n.º 2
0
 public override bool CheckPrereqs(ITaskContext taskContext)
 {
     if (!base.CheckPrereqs(taskContext))
     {
         base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.HybridInfoBasePrereqsFailed));
         return(false);
     }
     return(true);
 }
Exemplo n.º 3
0
 public override bool CheckPrereqs(ITaskContext taskContext)
 {
     if (!base.CheckPrereqs(taskContext))
     {
         base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.HybridInfoBasePrereqsFailed));
         return(false);
     }
     this.tenantRoutingDomain = taskContext.Parameters.Get <string>("_hybridDomain");
     if (string.IsNullOrEmpty(this.tenantRoutingDomain))
     {
         throw new LocalizedException(HybridStrings.ErrorNoHybridDomain);
     }
     return(true);
 }
 private bool CheckTaskPrerequisites(ITaskContext taskContext)
 {
     this.Reset();
     if (this.RequiresFederationTrust())
     {
         string value = Configuration.SignupDomainSuffix(taskContext.HybridConfigurationObject.ServiceInstance);
         foreach (AutoDiscoverSmtpDomain autoDiscoverSmtpDomain in this.HybridDomains)
         {
             if (!autoDiscoverSmtpDomain.Domain.EndsWith(value, StringComparison.InvariantCultureIgnoreCase) && autoDiscoverSmtpDomain.Domain.Length <= 32)
             {
                 this.accountNamespace = autoDiscoverSmtpDomain.Domain;
                 break;
             }
         }
         if (string.IsNullOrEmpty(this.accountNamespace))
         {
             base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorAccountNamespace));
             base.AddLocalizedStringError(HybridStrings.ErrorAccountNamespace);
             return(false);
         }
         int num = base.OnPremisesSession.GetFederationTrust().Count <IFederationTrust>();
         if (num == 0)
         {
             base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, Strings.ErrorFederationTrustNotFound("")));
             base.AddLocalizedStringError(HybridStrings.ErrorNoFederationTrustFound);
             return(false);
         }
         if (num > 1)
         {
             base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorMultipleFederationTrusts));
             base.AddLocalizedStringError(HybridStrings.ErrorMultipleFederationTrusts);
             return(false);
         }
         IFederatedOrganizationIdentifier federatedOrganizationIdentifier = base.OnPremisesSession.GetFederatedOrganizationIdentifier();
         if (federatedOrganizationIdentifier == null)
         {
             this.updateOnPremisesFedOrgId = true;
         }
         else if (federatedOrganizationIdentifier.AccountNamespace == null || string.IsNullOrEmpty(federatedOrganizationIdentifier.AccountNamespace.Domain))
         {
             this.updateOnPremisesFedOrgId = true;
         }
         else
         {
             if (!federatedOrganizationIdentifier.Enabled)
             {
                 base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorFederatedIdentifierDisabled));
                 base.AddLocalizedStringError(HybridStrings.ErrorFederatedIdentifierDisabled);
                 return(false);
             }
             this.accountNamespace = federatedOrganizationIdentifier.AccountNamespace.Domain.Replace(FederatedOrganizationId.HybridConfigurationWellKnownSubDomain + ".", string.Empty);
             if (!string.Equals(TaskCommon.ToStringOrNull(federatedOrganizationIdentifier.DelegationTrustLink), Configuration.FederatedTrustIdentity))
             {
                 this.updateOnPremisesFedOrgId = true;
             }
             else
             {
                 this.updateOnPremisesFedOrgId = false;
                 using (IEnumerator <string> enumerator2 = (from d in this.HybridDomains
                                                            select d.Domain).GetEnumerator())
                 {
                     while (enumerator2.MoveNext())
                     {
                         string hybridDomain = enumerator2.Current;
                         if (!federatedOrganizationIdentifier.Domains.Any((FederatedDomain d) => string.Equals(d.Domain.Domain, hybridDomain, StringComparison.InvariantCultureIgnoreCase)))
                         {
                             this.addOnPremisesFedDomains.Add(hybridDomain);
                         }
                     }
                 }
             }
             if (!TaskCommon.AreEqual(federatedOrganizationIdentifier.DefaultDomain, this.AutoDiscoverHybridDomain))
             {
                 this.updateOnPremisesFedOrgId = true;
             }
         }
         if (this.updateOnPremisesFedOrgId)
         {
             foreach (string text in from d in this.HybridDomains
                      select d.Domain)
             {
                 if (!text.Equals(this.accountNamespace, StringComparison.InvariantCultureIgnoreCase))
                 {
                     this.addOnPremisesFedDomains.Add(text);
                 }
             }
         }
         IFederatedOrganizationIdentifier federatedOrganizationIdentifier2 = base.TenantSession.GetFederatedOrganizationIdentifier();
         string text2 = (federatedOrganizationIdentifier2 != null && federatedOrganizationIdentifier2.DefaultDomain != null) ? federatedOrganizationIdentifier2.DefaultDomain.ToString() : null;
         if (text2 == null || !text2.Equals(this.TenantCoexistenceDomain, StringComparison.InvariantCultureIgnoreCase))
         {
             this.updateTenantFedOrgId = true;
         }
     }
     return(true);
 }
Exemplo n.º 5
0
        public override bool CheckPrereqs(ITaskContext taskContext)
        {
            if (!base.CheckPrereqs(taskContext))
            {
                return(false);
            }
            if (taskContext.HybridConfigurationObject.ExchangeVersion.ExchangeBuild.Major != taskContext.HybridConfigurationObject.MaximumSupportedExchangeObjectVersion.ExchangeBuild.Major)
            {
                base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorHybridMustBeUpgraded));
                base.AddLocalizedStringError(HybridStrings.ErrorHybridMustBeUpgraded);
                return(false);
            }
            if (Configuration.RequiresIntraOrganizationConnector(taskContext.HybridConfigurationObject.ServiceInstance) && Configuration.RestrictIOCToSP1OrGreater(taskContext.HybridConfigurationObject.ServiceInstance) && !(taskContext.OnPremisesSession.GetIntraOrganizationConfiguration().DeploymentIsCompleteIOCReady ?? false))
            {
                base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorIncompatibleServersDetected));
                base.AddLocalizedStringError(HybridStrings.ErrorIncompatibleServersDetected);
                return(false);
            }
            if (taskContext.HybridConfigurationObject.Domains == null || taskContext.HybridConfigurationObject.Domains.Count == 0)
            {
                base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorNoHybridDomains));
                base.AddLocalizedStringError(HybridStrings.ErrorNoHybridDomains);
                return(false);
            }
            IOrderedEnumerable <string> orderedEnumerable = from d in taskContext.HybridConfigurationObject.Domains
                                                            select d.Domain into d
                                                            orderby d
                                                            select d;

            taskContext.Parameters.Set <IEnumerable <string> >("_hybridDomainList", orderedEnumerable);
            IEnumerable <IAcceptedDomain> acceptedDomain = base.TenantSession.GetAcceptedDomain();

            if (acceptedDomain.Count <IAcceptedDomain>() == 0)
            {
                base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorNoTenantAcceptedDomains));
                base.AddLocalizedStringError(HybridStrings.ErrorNoTenantAcceptedDomains);
                return(false);
            }
            taskContext.Parameters.Set <IEnumerable <IAcceptedDomain> >("_tenantAcceptedDomains", acceptedDomain);
            string text = null;

            foreach (IAcceptedDomain acceptedDomain2 in acceptedDomain)
            {
                if (acceptedDomain2.IsCoexistenceDomain)
                {
                    text = acceptedDomain2.DomainNameDomain;
                    break;
                }
            }
            if (string.IsNullOrEmpty(text))
            {
                base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorNoHybridDomain));
                base.AddLocalizedStringError(HybridStrings.ErrorNoHybridDomain);
                return(false);
            }
            taskContext.Parameters.Set <string>("_hybridDomain", text);
            IEnumerable <IAcceptedDomain> acceptedDomain3 = base.OnPremisesSession.GetAcceptedDomain();

            if (acceptedDomain3.Count <IAcceptedDomain>() == 0)
            {
                base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorNoOnPremAcceptedDomains));
                base.AddLocalizedStringError(HybridStrings.ErrorNoOnPremAcceptedDomains);
                return(false);
            }
            taskContext.Parameters.Set <IEnumerable <IAcceptedDomain> >("_onPremAcceptedDomains", acceptedDomain3);
            foreach (string domain in orderedEnumerable)
            {
                if (!GlobalPrereqTask.IsAcceptedDomain(domain, acceptedDomain))
                {
                    base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorHybridDomainNotAcceptedOnTenant(domain)));
                    base.AddLocalizedStringError(HybridStrings.ErrorHybridDomainNotAcceptedOnTenant(domain));
                    return(false);
                }
                if (!GlobalPrereqTask.IsAcceptedDomain(domain, acceptedDomain3))
                {
                    base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorHybridDomainNotAcceptedOnPrem(domain)));
                    base.AddLocalizedStringError(HybridStrings.ErrorHybridDomainNotAcceptedOnPrem(domain));
                    return(false);
                }
            }
            if (!GlobalPrereqTask.IsAcceptedDomain(text, acceptedDomain))
            {
                base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorCoexistenceDomainNotAcceptedOnTenant(text)));
                base.AddLocalizedStringError(HybridStrings.ErrorCoexistenceDomainNotAcceptedOnTenant(text));
                return(false);
            }
            IOrganizationConfig organizationConfig = base.OnPremisesSession.GetOrganizationConfig();
            List <string>       list = new List <string>();

            list.Add(text);
            OrganizationRelationship organizationRelationship = TaskCommon.GetOrganizationRelationship(taskContext.OnPremisesSession, TaskCommon.GetOnPremOrgRelationshipName(organizationConfig), list);

            taskContext.Parameters.Set <OrganizationRelationship>("_onPremOrgRel", organizationRelationship);
            organizationRelationship = TaskCommon.GetOrganizationRelationship(taskContext.TenantSession, TaskCommon.GetTenantOrgRelationshipName(organizationConfig), orderedEnumerable);
            taskContext.Parameters.Set <OrganizationRelationship>("_tenantOrgRel", organizationRelationship);
            foreach (ADObjectId adobjectId in taskContext.HybridConfigurationObject.ClientAccessServers)
            {
                IExchangeServer exchangeServer = base.OnPremisesSession.GetExchangeServer(adobjectId.Name);
                if (!this.HasCASRole(exchangeServer))
                {
                    base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorCASRoleInvalid(exchangeServer.Name)));
                    base.AddLocalizedStringError(HybridStrings.ErrorCASRoleInvalid(exchangeServer.Name));
                    return(false);
                }
            }
            return(true);
        }