Ejemplo n.º 1
0
        internal static IADOPathNode BuildSearchFilter(IADOPathNode filter, MappingTable <AttributeConverterEntry> attrMapBaseObj, MappingTable <AttributeConverterEntry> attrMapChildObj, CmdletSessionInfo sessionInfo)
        {
            BinaryADOPathNode binaryADOPathNode = filter as BinaryADOPathNode;

            if (binaryADOPathNode == null)
            {
                return(null);
            }
            else
            {
                string ldapFilterString = binaryADOPathNode.LeftNode.GetLdapFilterString();
                AttributeConverterEntry attributeConverterEntry = null;
                if (!attrMapBaseObj.TryGetValue(ldapFilterString, out attributeConverterEntry))
                {
                    if (!attrMapChildObj.TryGetValue(ldapFilterString, out attributeConverterEntry))
                    {
                        string[] strArrays = new string[1];
                        strArrays[0] = ldapFilterString;
                        return(SearchConverters.ToSearchObjectClientSideFilter(ldapFilterString, strArrays, filter, sessionInfo));
                    }
                    else
                    {
                        return(attributeConverterEntry.InvokeToSearcherConverter(filter, sessionInfo));
                    }
                }
                else
                {
                    return(attributeConverterEntry.InvokeToSearcherConverter(filter, sessionInfo));
                }
            }
        }
Ejemplo n.º 2
0
        internal static ICollection <string> GetChildAttributes(MappingTable <AttributeConverterEntry> attrMapBaseObj, MappingTable <AttributeConverterEntry> attrMapChildObj, ICollection <string> propertiesToFetch)
        {
            AttributeConverterEntry attributeConverterEntry = null;
            HashSet <string>        strs = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

            if (propertiesToFetch != null)
            {
                if (!propertiesToFetch.Contains("*"))
                {
                    foreach (string str in propertiesToFetch)
                    {
                        if (!attrMapChildObj.TryGetValue(str, out attributeConverterEntry) || attrMapBaseObj.TryGetValue(str, out attributeConverterEntry))
                        {
                            continue;
                        }
                        strs.Add(str);
                    }
                }
                else
                {
                    foreach (AttributeConverterEntry value in attrMapChildObj.Values)
                    {
                        strs.Add(value.ExtendedAttribute);
                    }
                }
            }
            return(strs);
        }
Ejemplo n.º 3
0
 internal virtual IADOPathNode BuildSearchFilter(IADOPathNode filter)
 {
     if (this.CmdletSessionInfo != null)
     {
         MappingTable <AttributeConverterEntry> item = ADFactoryBase <T> .AttributeTable[this.ConnectedStore];
         BinaryADOPathNode binaryADOPathNode         = filter as BinaryADOPathNode;
         if (binaryADOPathNode == null)
         {
             return(null);
         }
         else
         {
             string ldapFilterString = binaryADOPathNode.LeftNode.GetLdapFilterString();
             AttributeConverterEntry attributeConverterEntry = null;
             if (!item.TryGetValue(ldapFilterString, out attributeConverterEntry))
             {
                 string[] strArrays = new string[1];
                 strArrays[0] = ldapFilterString;
                 return(SearchConverters.ToSearchUsingSchemaInfo(ldapFilterString, strArrays, filter, this.CmdletSessionInfo));
             }
             else
             {
                 return(attributeConverterEntry.InvokeToSearcherConverter(filter, this.CmdletSessionInfo));
             }
         }
     }
     else
     {
         throw new ArgumentNullException(StringResources.SessionRequired);
     }
 }
Ejemplo n.º 4
0
        internal override void UpdateFromObject(T modifiedObject, ADObject directoryObj)
        {
            AttributeConverterEntry attributeConverterEntry = null;

            if (modifiedObject.Contains("SuggestedValues"))
            {
                MappingTable <AttributeConverterEntry> item = ADClaimTypeBaseFactory <T> .AttributeTable[base.ConnectedStore];
                if (item.TryGetValue("SuggestedValues", out attributeConverterEntry))
                {
                    attributeConverterEntry.InvokeToDirectoryConverter(modifiedObject["SuggestedValues"], directoryObj, base.CmdletSessionInfo);
                }
            }
            base.UpdateFromObject(modifiedObject, directoryObj);
        }
Ejemplo n.º 5
0
        internal static ICollection <string> GetParentAttributes(MappingTable <AttributeConverterEntry> attrMapBaseObj, MappingTable <AttributeConverterEntry> attrMapChildObj, ICollection <string> propertiesToFetch)
        {
            AttributeConverterEntry attributeConverterEntry = null;
            HashSet <string>        strs = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

            if (propertiesToFetch != null)
            {
                foreach (string str in propertiesToFetch)
                {
                    if (!attrMapBaseObj.TryGetValue(str, out attributeConverterEntry) && attrMapChildObj.TryGetValue(str, out attributeConverterEntry))
                    {
                        continue;
                    }
                    strs.Add(str);
                }
            }
            return(strs);
        }
Ejemplo n.º 6
0
        private void CreateSiteChildObjects(ADFactory <T> .DirectoryOperation operation, T instance, ADParameterSet parameters, ADObject directoryObj)
        {
            AttributeConverterEntry attributeConverterEntry = null;
            bool flag = ADFactory <T> .DirectoryOperation.Create == operation;
            MappingTable <AttributeConverterEntry>          item         = ADNtdsSiteSettingFactory <ADNtdsSiteSetting> .AttributeTable[base.ConnectedStore];
            MappingTable <AttributeConverterEntry>          mappingTable = ADReplicationSiteFactory <T> .AttributeTable[base.ConnectedStore];
            IDictionary <string, ADPropertyValueCollection> strs         = new Dictionary <string, ADPropertyValueCollection>();

            if (instance != null)
            {
                foreach (string propertyName in instance.PropertyNames)
                {
                    if (flag && instance[propertyName].Value == null || mappingTable.TryGetValue(propertyName, out attributeConverterEntry) || !item.TryGetValue(propertyName, out attributeConverterEntry))
                    {
                        continue;
                    }
                    strs.Add(propertyName, instance[propertyName]);
                }
            }
            IDictionary <string, ADPropertyValueCollection> aDPVCDictionary = parameters.GetADPVCDictionary();

            foreach (string key in aDPVCDictionary.Keys)
            {
                if (mappingTable.TryGetValue(key, out attributeConverterEntry) || !item.TryGetValue(key, out attributeConverterEntry))
                {
                    continue;
                }
                if (!strs.ContainsKey(key))
                {
                    strs.Add(key, aDPVCDictionary[key]);
                }
                else
                {
                    strs[key] = aDPVCDictionary[key];
                }
            }
            string str = ADPathModule.MakePath(directoryObj.DistinguishedName, "CN=NTDS Site Settings,", ADPathFormat.X500);
            ADNtdsSiteSettingFactory <ADNtdsSiteSetting> aDNtdsSiteSettingFactory = new ADNtdsSiteSettingFactory <ADNtdsSiteSetting>();

            aDNtdsSiteSettingFactory.SetCmdletSessionInfo(base.CmdletSessionInfo);
            ADObject directoryObjectFromIdentity = null;

            if (!flag)
            {
                try
                {
                    ADNtdsSiteSetting aDNtdsSiteSetting = new ADNtdsSiteSetting(str);
                    directoryObjectFromIdentity = aDNtdsSiteSettingFactory.GetDirectoryObjectFromIdentity(aDNtdsSiteSetting, directoryObj.DistinguishedName);
                }
                catch (ADIdentityNotFoundException aDIdentityNotFoundException)
                {
                    DebugLogger.LogInfo(this._debugCategory, string.Format("ADReplicationSiteFactory: Ntds-Site-Setting object not found for the site {0}, while updating the properties of the ntds-site-settings", directoryObj.DistinguishedName));
                }
            }
            if (directoryObjectFromIdentity == null)
            {
                flag = true;
                directoryObjectFromIdentity = new ADObject(str, aDNtdsSiteSettingFactory.StructuralObjectClass);
            }
            foreach (string key1 in strs.Keys)
            {
                if (!item.TryGetValue(key1, out attributeConverterEntry) || !attributeConverterEntry.IsDirectoryConverterDefined)
                {
                    continue;
                }
                attributeConverterEntry.InvokeToDirectoryConverter(strs[key1], directoryObjectFromIdentity, base.CmdletSessionInfo);
            }
            using (ADActiveObject aDActiveObject = new ADActiveObject(base.CmdletSessionInfo.ADSessionInfo, directoryObjectFromIdentity))
            {
                if (!flag)
                {
                    aDActiveObject.Update();
                }
                else
                {
                    aDActiveObject.Create();
                }
            }
            if (operation == ADFactory <T> .DirectoryOperation.Create)
            {
                this.CreateServerContainer(directoryObj.DistinguishedName);
            }
        }