private IConfigurable ReadImpl <T>(ObjectId id) where T : IConfigurable, new()
        {
            if (typeof(T) == typeof(ExchangeConfigurationUnit))
            {
                FfoTenant ffoTenant = base.ReadAndHandleException <FfoTenant>(base.AddTenantIdFilter(null));
                return(FfoConfigurationSession.GetExchangeConfigurationUnit(ffoTenant));
            }
            if (typeof(T) == typeof(ADOrganizationalUnit))
            {
                FfoTenant ffoTenant2 = base.ReadAndHandleException <FfoTenant>(base.AddTenantIdFilter(null));
                return(FfoConfigurationSession.GetADOrganizationalUnit(ffoTenant2));
            }
            if (typeof(T) == typeof(Organization))
            {
                FfoTenant ffoTenant3 = base.ReadAndHandleException <FfoTenant>(base.AddTenantIdFilter(null));
                return(FfoConfigurationSession.GetOrganization(ffoTenant3));
            }
            T        t        = base.ReadAndHandleException <T>(base.AddTenantIdFilter(new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Id, id)));
            ADObject adobject = t as ADObject;

            if (adobject != null)
            {
                FfoDirectorySession.FixDistinguishedName(adobject, base.TenantId.DistinguishedName, base.TenantId.ObjectGuid, ((ADObjectId)adobject.Identity).ObjectGuid, null);
            }
            return(t);
        }
        protected static Organization GetOrganization(FfoTenant ffoTenant)
        {
            if (ffoTenant == null)
            {
                return(null);
            }
            Organization organization = new Organization();

            FfoConfigurationSession.SetTenantIds(ffoTenant, organization);
            return(organization);
        }
        protected static ADOrganizationalUnit GetADOrganizationalUnit(FfoTenant ffoTenant)
        {
            if (ffoTenant == null)
            {
                return(null);
            }
            ADOrganizationalUnit adorganizationalUnit = new ADOrganizationalUnit();

            FfoConfigurationSession.SetTenantIds(ffoTenant, adorganizationalUnit);
            return(adorganizationalUnit);
        }
Пример #4
0
        ExchangeConfigurationUnit ITenantConfigurationSession.GetExchangeConfigurationUnitByName(string organizationName)
        {
            ComparisonFilter filter    = new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Name, organizationName);
            FfoTenant        ffoTenant = (FfoTenant)base.DataProvider.Find <FfoTenant>(filter, null, false, null).FirstOrDefault <IConfigurable>();

            if (ffoTenant == null)
            {
                return(null);
            }
            return(FfoConfigurationSession.GetExchangeConfigurationUnit(ffoTenant));
        }
        internal static ExchangeConfigurationUnit GetExchangeConfigurationUnit(FfoTenant ffoTenant)
        {
            if (ffoTenant == null)
            {
                return(null);
            }
            ExchangeConfigurationUnit exchangeConfigurationUnit = new ExchangeConfigurationUnit();

            FfoConfigurationSession.SetTenantIds(ffoTenant, exchangeConfigurationUnit);
            exchangeConfigurationUnit.ExternalDirectoryOrganizationId = ffoTenant.TenantId.ObjectGuid.ToString();
            exchangeConfigurationUnit.CompanyTags            = ffoTenant.CompanyTags;
            exchangeConfigurationUnit.DirSyncServiceInstance = ffoTenant.ServiceInstance;
            return(exchangeConfigurationUnit);
        }
Пример #6
0
        internal override ADSessionSettings FromTenantCUName(string name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            GlobalConfigSession globalConfigSession = new GlobalConfigSession();
            FfoTenant           tenantByName        = globalConfigSession.GetTenantByName(name);

            if (tenantByName == null)
            {
                throw new CannotResolveTenantNameException(DirectoryStrings.CannotResolveTenantName(name));
            }
            ExchangeConfigurationUnit exchangeConfigurationUnit = FfoConfigurationSession.GetExchangeConfigurationUnit(tenantByName);

            return(ADSessionSettings.SessionSettingsFactory.CreateADSessionSettings(ScopeSet.GetOrgWideDefaultScopeSet(OrganizationId.ForestWideOrgId), null, exchangeConfigurationUnit.OrganizationId, null, ConfigScopes.TenantLocal, PartitionId.LocalForest));
        }
 private IEnumerable <T> FindImpl <T>(QueryFilter filter, ObjectId rootId, bool deepSearch, SortBy sortBy, int pageSize) where T : IConfigurable, new()
 {
     if (base.TenantId == null)
     {
         FfoDirectorySession.LogNotSupportedInFFO(null);
     }
     else if (typeof(T) == typeof(ExchangeConfigurationUnit))
     {
         IEnumerable <FfoTenant> ffoTenants = base.FindAndHandleException <FfoTenant>(filter, rootId, deepSearch, sortBy, pageSize);
         foreach (FfoTenant ffoTenant in ffoTenants)
         {
             yield return((T)((object)FfoConfigurationSession.GetExchangeConfigurationUnit(ffoTenant)));
         }
     }
     else if (typeof(T) == typeof(ADOrganizationalUnit))
     {
         IEnumerable <FfoTenant> ffoTenants2 = base.FindAndHandleException <FfoTenant>(filter, rootId, deepSearch, sortBy, pageSize);
         foreach (FfoTenant ffoTenant2 in ffoTenants2)
         {
             yield return((T)((object)FfoConfigurationSession.GetADOrganizationalUnit(ffoTenant2)));
         }
     }
     else if (typeof(T) == typeof(Organization))
     {
         IEnumerable <FfoTenant> ffoTenants3 = base.FindAndHandleException <FfoTenant>(filter, rootId, deepSearch, sortBy, pageSize);
         foreach (FfoTenant ffoTenant3 in ffoTenants3)
         {
             yield return((T)((object)FfoConfigurationSession.GetOrganization(ffoTenant3)));
         }
     }
     else if (typeof(T) == typeof(TransportRuleCollection))
     {
         IEnumerable <TransportRuleCollection> collections = this.FindTransportRuleCollections(filter, rootId, deepSearch, sortBy, pageSize);
         foreach (TransportRuleCollection coll in collections)
         {
             yield return((T)((object)coll));
         }
     }
     else if (typeof(T) == typeof(BindingStorage))
     {
         IEnumerable <BindingStorage> bindings = this.FindBindingStorage(filter, rootId, deepSearch, sortBy, pageSize, true);
         foreach (BindingStorage storage in bindings)
         {
             yield return((T)((object)storage));
         }
     }
     else if (typeof(T) == typeof(ExchangeRoleAssignment))
     {
         IEnumerable <ExchangeRoleAssignment> roleAssignments = this.FindExchangeRoleAssignments(filter, rootId, deepSearch, sortBy, pageSize, true);
         foreach (ExchangeRoleAssignment roleAssignment in roleAssignments)
         {
             yield return((T)((object)roleAssignment));
         }
     }
     else if (typeof(T) == typeof(ExchangeRole))
     {
         IEnumerable <ExchangeRole> exchangeRoles = base.FindAndHandleException <ExchangeRole>(filter, rootId, deepSearch, sortBy, pageSize);
         foreach (ExchangeRole exchangeRole in exchangeRoles)
         {
             FfoDirectorySession.FixDistinguishedName(exchangeRole, base.TenantId.DistinguishedName, base.TenantId.ObjectGuid, ((ADObjectId)exchangeRole.Identity).ObjectGuid, ExchangeRole.RdnContainer);
             this.UpdateImplictScope(exchangeRole);
             yield return((T)((object)exchangeRole));
         }
     }
     else
     {
         IEnumerable <T> configurables = null;
         try
         {
             configurables = base.FindAndHandleException <T>(filter, rootId, deepSearch, sortBy, pageSize);
         }
         catch (DataProviderMappingException ex)
         {
             FfoDirectorySession.LogNotSupportedInFFO(ex);
         }
         if (configurables == null || configurables.Count <T>() == 0)
         {
             configurables = base.GetDefaultArray <T>();
         }
         configurables = this.DoPostQueryFilter <T>(filter, configurables);
         foreach (T configurable in configurables)
         {
             ADObject adObject = configurable as ADObject;
             if (adObject != null)
             {
                 FfoDirectorySession.FixDistinguishedName(adObject, base.TenantId.DistinguishedName, base.TenantId.ObjectGuid, ((ADObjectId)adObject.Identity).ObjectGuid, null);
             }
             yield return(configurable);
         }
     }
     yield break;
 }