Ejemplo n.º 1
0
        public void UpdateListAttribute(string key, string attributeName, string value, DirectoryAttributeOperation operation)
        {
            using (LdapConnection conn = GetConnection())
            {
                SearchResultEntry entry = Load(key, conn);

                if (entry == null)
                {
                    return;
                }

                DirectoryAttributeModification mod = new DirectoryAttributeModification();
                mod.Name      = attributeName;
                mod.Operation = DirectoryAttributeOperation.Replace;
                mod.AddRange(entry.Attributes[attributeName].GetValues(typeof(string)));
                if (operation == DirectoryAttributeOperation.Add)
                {
                    mod.Add(value);
                }
                else
                {
                    for (int i = 0; i < mod.Count; i++)
                    {
                        if (mod[i].ToString().Equals(value, StringComparison.InvariantCultureIgnoreCase))
                        {
                            mod.RemoveAt(i);
                            break;
                        }
                    }
                }

                ModifyRequest mr = new ModifyRequest(key, mod);
                conn.SendRequest(mr);
            }
        }
Ejemplo n.º 2
0
        public static DirectoryAttributeModification CreateModification(this DirectoryAttribute item, DirectoryAttributeOperation operation, bool forceValue = false)
        {
            var result = new DirectoryAttributeModification
            {
                Name      = item.Name,
                Operation = operation
            };

            // Delete needs a value here!?
            if (operation != DirectoryAttributeOperation.Delete || forceValue)
            {
                result.AddRange(item.GetValues(typeof(byte[])));
            }

            return(result);
        }