Example #1
0
        public static void ExtractAccountNamespaceAndSharingDomains(DataRow row, DataTable dataTable, DataObjectStore store)
        {
            if (store.GetDataObject("FederatedOrganizationIdentifier") == null)
            {
                return;
            }
            FederatedOrganizationIdWithDomainStatus federatedOrganizationIdWithDomainStatus = (FederatedOrganizationIdWithDomainStatus)store.GetDataObject("FederatedOrganizationIdentifier");
            SmtpDomain smtpDomain = (federatedOrganizationIdWithDomainStatus.AccountNamespace == null) ? null : new SmtpDomain(FederatedOrganizationId.RemoveHybridConfigurationWellKnownSubDomain(federatedOrganizationIdWithDomainStatus.AccountNamespace.Domain));
            MultiValuedProperty <FederatedDomain> domains = federatedOrganizationIdWithDomainStatus.Domains;

            dataTable.Rows[0]["HasAccountNamespace"] = false;
            dataTable.Rows[0]["HasFederatedDomains"] = false;
            if (smtpDomain != null)
            {
                List <object> list = new List <object>();
                dataTable.Rows[0]["HasAccountNamespace"] = true;
                dataTable.Rows[0]["Name"] = federatedOrganizationIdWithDomainStatus.AccountNamespace.Domain;
                foreach (FederatedDomain federatedDomain in domains)
                {
                    if (federatedDomain.Domain.Domain.Equals(smtpDomain.Domain, StringComparison.InvariantCultureIgnoreCase))
                    {
                        dataTable.Rows[0]["AccountNamespace"] = (SharingDomain)federatedDomain;
                    }
                    else
                    {
                        list.Add((SharingDomain)federatedDomain);
                    }
                }
                if (list.Count > 0)
                {
                    dataTable.Rows[0]["SharingEnabledDomains"] = list;
                    dataTable.Rows[0]["HasFederatedDomains"]   = true;
                }
            }
        }
Example #2
0
        protected override void WriteResult(IConfigurable dataObject)
        {
            TaskLogger.LogEnter(new object[]
            {
                dataObject.Identity,
                dataObject
            });
            FederatedOrganizationIdWithDomainStatus dataObject2 = this.CreatePresentationObject((FederatedOrganizationId)dataObject, this.IncludeExtendedDomainInfo);

            base.WriteResult(dataObject2);
            TaskLogger.LogExit();
        }
Example #3
0
        public static void GenerateAddAndRemoveCollection(DataRow row, DataTable dataTable, DataObjectStore store)
        {
            if (store.GetDataObject("FederatedOrganizationIdentifier") == null)
            {
                return;
            }
            List <object> list = new List <object>();

            if (dataTable.Rows[0]["SharingEnabledDomains"] != DBNull.Value)
            {
                foreach (object obj in ((IEnumerable)dataTable.Rows[0]["SharingEnabledDomains"]))
                {
                    SharingDomain sharingDomain = (SharingDomain)obj;
                    list.Add((SmtpDomain)sharingDomain);
                }
            }
            FederatedOrganizationIdWithDomainStatus federatedOrganizationIdWithDomainStatus = (FederatedOrganizationIdWithDomainStatus)store.GetDataObject("FederatedOrganizationIdentifier");
            SmtpDomain smtpDomain = (federatedOrganizationIdWithDomainStatus.AccountNamespace == null) ? null : new SmtpDomain(FederatedOrganizationId.RemoveHybridConfigurationWellKnownSubDomain(federatedOrganizationIdWithDomainStatus.AccountNamespace.Domain));

            if (smtpDomain == null && dataTable.Rows[0]["AccountNamespace"] != DBNull.Value)
            {
                smtpDomain = (SmtpDomain)((SharingDomain)dataTable.Rows[0]["AccountNamespace"]);
            }
            if (smtpDomain != null)
            {
                list.Remove(smtpDomain);
            }
            MultiValuedProperty <FederatedDomain> multiValuedProperty = (MultiValuedProperty <FederatedDomain>)store.GetValue("FederatedOrganizationIdentifier", "Domains");
            List <object> list2 = new List <object>();

            if (multiValuedProperty != null)
            {
                foreach (FederatedDomain federatedDomain in multiValuedProperty)
                {
                    if (!federatedDomain.Domain.Domain.Equals(smtpDomain.Domain, StringComparison.InvariantCultureIgnoreCase))
                    {
                        SmtpDomain item = new SmtpDomain(federatedDomain.Domain.Domain);
                        if (list.Contains(item))
                        {
                            list.Remove(item);
                        }
                        else
                        {
                            list2.Add(item);
                        }
                    }
                }
            }
            dataTable.Rows[0]["AddedSharingEnabledDomains"]   = list;
            dataTable.Rows[0]["RemovedSharingEnabledDomains"] = list2;
        }
Example #4
0
        public IFederatedOrganizationIdentifier GetFederatedOrganizationIdentifier()
        {
            SessionParameters sessionParameters = new SessionParameters();

            sessionParameters.SetNull <bool>("IncludeExtendedDomainInfo");
            FederatedOrganizationIdWithDomainStatus federatedOrganizationIdWithDomainStatus = this.RemotePowershellSession.RunOneCommandSingleResult <FederatedOrganizationIdWithDomainStatus>("Get-FederatedOrganizationIdentifier", sessionParameters, true);

            if (federatedOrganizationIdWithDomainStatus != null)
            {
                return(new FederatedOrganizationIdentifier
                {
                    Enabled = federatedOrganizationIdWithDomainStatus.Enabled,
                    Domains = federatedOrganizationIdWithDomainStatus.Domains,
                    AccountNamespace = federatedOrganizationIdWithDomainStatus.AccountNamespace,
                    DelegationTrustLink = federatedOrganizationIdWithDomainStatus.DelegationTrustLink,
                    DefaultDomain = federatedOrganizationIdWithDomainStatus.DefaultDomain
                });
            }
            return(null);
        }
Example #5
0
        private FederatedOrganizationIdWithDomainStatus CreatePresentationObject(FederatedOrganizationId fedOrgId, bool includeExtendedDomainInfo)
        {
            FederatedOrganizationIdWithDomainStatus federatedOrganizationIdWithDomainStatus = new FederatedOrganizationIdWithDomainStatus(fedOrgId);

            if (fedOrgId.DelegationTrustLink == null)
            {
                return(federatedOrganizationIdWithDomainStatus);
            }
            FederationTrust federationTrust = this.ConfigurationSession.Read <FederationTrust>(fedOrgId.DelegationTrustLink);

            if (federationTrust == null)
            {
                fedOrgId.DelegationTrustLink = ADObjectIdResolutionHelper.ResolveDN(fedOrgId.DelegationTrustLink);
                ADSessionSettings             sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), OrganizationId.ForestWideOrgId, null, false);
                ITopologyConfigurationSession topologyConfigurationSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, sessionSettings, 147, "CreatePresentationObject", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\Federation\\GetFederatedOrganizationIdentifier.cs");
                federationTrust = topologyConfigurationSession.Read <FederationTrust>(fedOrgId.DelegationTrustLink);
                if (federationTrust == null)
                {
                    return(federatedOrganizationIdWithDomainStatus);
                }
            }
            List <AcceptedDomain> allFederatedDomains = this.GetAllFederatedDomains(fedOrgId);

            if (allFederatedDomains.Count == 0)
            {
                return(federatedOrganizationIdWithDomainStatus);
            }
            foreach (AcceptedDomain acceptedDomain in allFederatedDomains)
            {
                if (acceptedDomain.IsDefaultFederatedDomain)
                {
                    federatedOrganizationIdWithDomainStatus.DefaultDomain = new SmtpDomain(acceptedDomain.DomainName.Domain);
                    break;
                }
            }
            MultiValuedProperty <FederatedDomain> multiValuedProperty = new MultiValuedProperty <FederatedDomain>();

            if (!includeExtendedDomainInfo)
            {
                foreach (AcceptedDomain acceptedDomain2 in allFederatedDomains)
                {
                    multiValuedProperty.Add(new FederatedDomain(new SmtpDomain(acceptedDomain2.DomainName.Domain)));
                }
                federatedOrganizationIdWithDomainStatus.Domains = multiValuedProperty;
                return(federatedOrganizationIdWithDomainStatus);
            }
            FederationProvision federationProvision = FederationProvision.Create(federationTrust, this);

            base.WriteVerbose(Strings.GetFedDomainStatusInfo(FederatedOrganizationId.AddHybridConfigurationWellKnownSubDomain(fedOrgId.AccountNamespace.Domain)));
            DomainState state = DomainState.Unknown;

            try
            {
                state = federationProvision.GetDomainState(FederatedOrganizationId.AddHybridConfigurationWellKnownSubDomain(fedOrgId.AccountNamespace.Domain));
            }
            catch (LocalizedException ex)
            {
                this.WriteError(new CannotGetDomainStatusFromPartnerSTSException(fedOrgId.AccountNamespace.ToString(), federationTrust.ApplicationIdentifier, ex.Message), ErrorCategory.ResourceUnavailable, null, false);
            }
            multiValuedProperty.Add(new FederatedDomain(fedOrgId.AccountNamespace, state));
            foreach (AcceptedDomain acceptedDomain3 in allFederatedDomains)
            {
                SmtpDomain smtpDomain = new SmtpDomain(acceptedDomain3.DomainName.Domain);
                if (!smtpDomain.Equals(fedOrgId.AccountNamespace))
                {
                    multiValuedProperty.Add(new FederatedDomain(smtpDomain));
                }
            }
            federatedOrganizationIdWithDomainStatus.Domains = multiValuedProperty;
            return(federatedOrganizationIdWithDomainStatus);
        }