internal XmlElement ToXmlNode(XmlDocument doc) { XmlElement xmlElement = doc.CreateElement("modification", "urn:oasis:names:tc:DSML:2:0:core"); base.ToXmlNodeCommon(xmlElement); XmlAttribute xmlAttribute = doc.CreateAttribute("operation", null); DirectoryAttributeOperation operation = this.Operation; if (operation == DirectoryAttributeOperation.Add) { xmlAttribute.InnerText = "add"; } else if (operation == DirectoryAttributeOperation.Delete) { xmlAttribute.InnerText = "delete"; } else if (operation == DirectoryAttributeOperation.Replace) { xmlAttribute.InnerText = "replace"; } else { throw new InvalidEnumArgumentException("Operation", (int)this.Operation, typeof(DirectoryAttributeOperation)); } xmlElement.Attributes.Append(xmlAttribute); return(xmlElement); }
public ModifyRequest(string distinguishedName, DirectoryAttributeOperation operation, string attributeName, params object[] values) : this() { // Store off the distinguished name _dn = distinguishedName; // validate the attributeName if (attributeName == null) { throw new ArgumentNullException("attributeName"); } DirectoryAttributeModification mod = new DirectoryAttributeModification(); mod.Operation = operation; mod.Name = attributeName; if (values != null) { for (int i = 0; i < values.Length; i++) { mod.Add(values[i]); } } _attributeModificationList.Add(mod); }
public static void Serialize(XmlDictionaryWriter writer, DirectoryAttributeModification attribute) { ChangeOperation changeOperation = ChangeOperation.None; DirectoryAttributeOperation operation = attribute.Operation; switch (operation) { case DirectoryAttributeOperation.Add: { changeOperation = ChangeOperation.Add; break; } case DirectoryAttributeOperation.Delete: { changeOperation = ChangeOperation.Delete; break; } case DirectoryAttributeOperation.Replace: { changeOperation = ChangeOperation.Replace; break; } } AttributeTypeAndValueSerializer.InternalSerialize(writer, changeOperation, AttributeNs.LookupNs(attribute.Name, SyntheticAttributeOperation.Write), attribute.Name, attribute); }
static DirectoryAttributeModification ToAttr (DirectoryAttributeOperation operation, string attributeName, params object [] values) { var a = new DirectoryAttributeModification (); a.Name = attributeName; a.Operation = operation; a.AddRange (values); return a; }
private DirectoryAttributeModification GetDirectoryAttributeModification(DirectoryAttributeOperation operation) { return(new DirectoryAttributeModification { Name = ExchangeConfigurationUnitHandler.supportedSharedConfigurationsAttributeName, Operation = operation }); }
static DirectoryAttributeModification ToAttr(DirectoryAttributeOperation operation, string attributeName, params object [] values) { var a = new DirectoryAttributeModification(); a.Name = attributeName; a.Operation = operation; a.AddRange(values); return(a); }
public ModifyResponse MakeModifyRequest( string distinguishedName, DirectoryAttributeOperation operation, string attributeName, params object[] attributeValues) { using (var connection = _connectionService.OpenConnection()) { var request = new ModifyRequest(distinguishedName, operation, attributeName, attributeValues); return((ModifyResponse)connection.SendRequest(request)); } }
private void PopulateModifyRequest(ModifyRequest request, string name, DirectoryAttributeOperation operation, IEnumerable <ADUser> members) { if (members != null) { DirectoryAttributeModification directoryAttributeModification = new DirectoryAttributeModification { Name = name, Operation = operation }; foreach (ADUser aduser in members) { directoryAttributeModification.Add(aduser.Id.ToGuidOrDNString()); } if (directoryAttributeModification.Count > 0) { request.Modifications.Add(directoryAttributeModification); } } }
public ModifyRequest(string distinguishedName, DirectoryAttributeOperation operation, string attributeName, params object[] values) : this() { this.dn = distinguishedName; if (attributeName == null) { throw new ArgumentNullException("attributeName"); } DirectoryAttributeModification attribute = new DirectoryAttributeModification { Operation = operation, Name = attributeName }; if (values != null) { for (int i = 0; i < values.Length; i++) { attribute.Add(values[i]); } } this.attributeModificationList.Add(attribute); }
//Not tested because i don't know how to test an ACTION public Action GetUserOperation(DirectoryAttributeOperation operationType, string attributeName, string attributeValue) { switch (operationType) { case DirectoryAttributeOperation.Add: return(() => InsertUserAttribute(attributeName, attributeValue)); case DirectoryAttributeOperation.Delete: return(() => DeleteUserAttribute(attributeName, attributeValue)); case DirectoryAttributeOperation.Replace: return(() => OverwriteUserAttribute(attributeName, attributeValue)); default: throw new Exception( "LdapUser GetUserOperation Method: Not valid DirectoryAttributeOperation specified - " + operationType); } }
/// <summary> /// Modify an LDAPUser Attribute /// </summary> /// <param name="operationType">Operation to execute on the attribute</param> /// <param name="user">LDAPUser's Attribute</param> /// <param name="attributeName">Attribute name</param> /// <param name="attributeValue">Attribute Value</param> /// <returns>Success or Failed</returns> public LdapState ModifyUserAttribute(DirectoryAttributeOperation operationType, ILdapUser user, string attributeName, string attributeValue) { try { _ldapConnection.SendRequest(LdapRequestBuilder.GetModifyRequest(user, operationType, attributeName, attributeValue)); } catch (Exception e) { _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapModifyUserAttributeError)); return LdapState.LdapModifyUserAttributeError; } user.GetUserOperation(operationType, attributeName, attributeValue)(); _logger.Write(_logger.BuildLogMessage("Modify User Attribute Operation Success", LdapState.LdapUserManipulatorSuccess)); return LdapState.LdapUserManipulatorSuccess; }
/// <summary> /// Modify an LDAPUser Attribute /// </summary> /// <param name="operationType">Operation to execute on the attribute</param> /// <param name="user">LDAPUser's Attribute</param> /// <param name="attributeName">Attribute name</param> /// <param name="attributeValue">Attribute Value</param> /// <returns>Success or Failed</returns> public LdapState ModifyUserAttribute(DirectoryAttributeOperation operationType, ILdapUser user, string attributeName, string attributeValue) { try { _ldapConnection.SendRequest(LdapRequestBuilder.GetModifyRequest(user, operationType, attributeName, attributeValue)); } catch (Exception e) { _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapModifyUserAttributeError)); return(LdapState.LdapModifyUserAttributeError); } user.GetUserOperation(operationType, attributeName, attributeValue)(); _logger.Write(_logger.BuildLogMessage("Modify User Attribute Operation Success", LdapState.LdapUserManipulatorSuccess)); return(LdapState.LdapUserManipulatorSuccess); }
public ModifyRequest(string distinguishedName, DirectoryAttributeOperation operation, string attributeName, object[] values) : this() { this.dn = distinguishedName; if (attributeName != null) { DirectoryAttributeModification directoryAttributeModification = new DirectoryAttributeModification(); directoryAttributeModification.Operation = operation; directoryAttributeModification.Name = attributeName; if (values != null) { for (int i = 0; i < (int)values.Length; i++) { directoryAttributeModification.Add(values[i]); } } this.attributeModificationList.Add(directoryAttributeModification); return; } else { throw new ArgumentNullException("attributeName"); } }
//Not tested because i don't know how to test an ACTION public Action GetUserOperation(DirectoryAttributeOperation operationType, string attributeName, string attributeValue) { switch (operationType) { case DirectoryAttributeOperation.Add: return (() => InsertUserAttribute(attributeName, attributeValue)); case DirectoryAttributeOperation.Delete: return (() => DeleteUserAttribute(attributeName, attributeValue)); case DirectoryAttributeOperation.Replace: return (() => OverwriteUserAttribute(attributeName, attributeValue)); default: throw new Exception( "LdapUser GetUserOperation Method: Not valid DirectoryAttributeOperation specified - " + operationType); } }
public bool ModifyUserAttribute(DirectoryAttributeOperation operationType, ILdapUser user, string attributeName, string attributeValue) { _ldapCurrentState = _manageLdapUser.ModifyUserAttribute(operationType, user, attributeName, attributeValue); return(LdapStateUtils.ToBoolean(_ldapCurrentState)); }
/// <summary> /// Attempts to convert the object from a .Net type to an LDAP string or byte[]. /// If <paramref name="obj"/> is null or <see cref="String.Empty"/> then no value is added to the <see cref="DirectoryAttributeModification"/>. /// </summary> /// <param name="obj">The value to convert.</param> /// <param name="attributeName">The name of the attribute.</param> /// <param name="operation">The type of <see cref="DirectoryAttributeOperation"/>.</param> /// <returns></returns> public static DirectoryAttributeModification ToDirectoryModification(this object obj, string attributeName, DirectoryAttributeOperation operation) { var modification = new DirectoryAttributeModification { Name = attributeName, Operation = operation }; if (obj == null || string.Empty.Equals(obj)) { return(modification); } if (obj is string) { modification.Add(obj as string); return(modification); } if (obj is IEnumerable <string> ) { foreach (var s in obj as IEnumerable <string> ) { modification.Add(s); } return(modification); } if (obj is byte[]) { modification.Add(obj as byte[]); return(modification); } if (obj is X509Certificate) { modification.Add((obj as X509Certificate).GetRawCertData()); return(modification); } if (obj is IEnumerable <byte> ) { modification.Add((obj as IEnumerable <byte>).ToArray()); return(modification); } if (obj is SecurityIdentifier) { var sid = obj as SecurityIdentifier; var bytes = new byte[sid.BinaryLength]; sid.GetBinaryForm(bytes, 0); modification.Add(bytes); return(modification); } if (obj is IEnumerable <byte[]> ) { foreach (var b in (obj as IEnumerable <byte[]>).Where(b => b != null)) { modification.Add(b); } return(modification); } if (obj is IEnumerable <X509Certificate> ) { foreach (var b in (obj as IEnumerable <X509Certificate>).Where(c => c != null)) { modification.Add(b.GetRawCertData()); } return(modification); } if (obj is IEnumerable) { foreach (var s in (from object item in (obj as IEnumerable) select item.ToString())) { modification.Add(s); } return(modification); } if (obj is Guid) { modification.Add(((Guid)obj).ToByteArray()); return(modification); } if (obj is bool boolean) { modification.Add(boolean ? "TRUE" : "FALSE"); return(modification); } modification.Add(obj.ToString()); return(modification); }
public ModifyRequest (string distinguishedName, DirectoryAttributeOperation operation, string attributeName, params object [] values) : this (distinguishedName, new DirectoryAttributeModification [] {ToAttr (operation, attributeName, values)}) { }
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); } }
public void Operation_SetInvalid_InvalidEnumArgumentException(DirectoryAttributeOperation operation) { var modification = new DirectoryAttributeModification(); AssertExtensions.Throws <InvalidEnumArgumentException>("value", () => modification.Operation = operation); }
public ADModifyRequest(string distinguishedName, DirectoryAttributeOperation operation, string attributeName, object[] values) : base(distinguishedName, operation, attributeName, values) { }
public DirectoryAttributeModification() { this.attributeOperation = DirectoryAttributeOperation.Replace; }
public ModifyRequest(string distinguishedName, DirectoryAttributeOperation operation, string attributeName, params object [] values) : this(distinguishedName, new DirectoryAttributeModification [] { ToAttr(operation, attributeName, values) }) { }
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); }
private DirectoryAttributeModification CreateMod(AttributeInfo attribute, object value, DirectoryAttributeOperation operation) { var attributeMod = new DirectoryAttributeModification(); attributeMod.Name = attribute.Name; attributeMod.Operation = operation; if (value == null) { return(attributeMod); } value = new AttributeValueConverter().TryConvert(attribute, value); //NormalizeAttributeValue(attributeName, value); var isEnumerable = !(value is byte[]) && value.GetType().IsEnumerableType(); if (isEnumerable) { var en = value as IEnumerable; foreach (var o in en) { if (o is string strValue1) { attributeMod.Add(strValue1); } else if (o is byte[] strByte1) { attributeMod.Add(strByte1); } } } else { if (value is string strValue) { attributeMod.Add(strValue); } else if (value is byte[] strByte) { attributeMod.Add(strByte); } } return(attributeMod); }
public Action GetUserOperation(DirectoryAttributeOperation operationType, string attributeName, string attributeValue) { return () => { }; }
public static ModifyRequest GetModifyRequest(ILdapUser user, DirectoryAttributeOperation attributeOperation,string attributeName, string attributeValue) { return new ModifyRequest(user.GetUserDn(), attributeOperation, attributeName, attributeValue); }
private ResultCode ModifyUserInGroup(string userName, string groupName, DirectoryAttributeOperation operation) { if (!this.UserExist(userName)) return ResultCode.NoSuchObject; AdamUser user = this.GetUser(userName); if ((user.Groups.Contains(groupName) && operation == DirectoryAttributeOperation.Add)) return ResultCode.EntryAlreadyExists; else if ((!user.Groups.Contains(groupName) && operation == DirectoryAttributeOperation.Delete)) return ResultCode.NoSuchAttribute; string filter = string.Format("(&(objectClass=Group)(distinguishedName=CN={0},{1}))", groupName, this.GroupsDistinguishedName); this.OpenConnection(); SearchRequest srchRequestGroup = new SearchRequest(this.GroupsDistinguishedName, filter, SearchScope.Subtree); SearchResponse srchResponseGroup = (SearchResponse)this._adamConnection.SendRequest(srchRequestGroup); this.CloseConnection(); SearchResultEntry srchEntryGrp = srchResponseGroup.Entries[0]; string groupDN = srchEntryGrp.DistinguishedName; DirectoryAttributeModification addMod = new DirectoryAttributeModification(); addMod.Name = "member"; addMod.Add(user.DistinguishedName); addMod.Operation = operation; ModifyRequest modRequestAddUser = new ModifyRequest(groupDN, addMod); this.OpenConnection(); DirectoryResponse modResponseAdduser = this._adamConnection.SendRequest(modRequestAddUser); this.CloseConnection(); return modResponseAdduser.ResultCode; }
public Action GetUserOperation(DirectoryAttributeOperation operationType, string attributeName, string attributeValue) { return(() => { }); }
public bool ModifyUserAttribute(DirectoryAttributeOperation operationType, ILdapUser user, string attributeName, string attributeValue) { _ldapCurrentState = _manageLdapUser.ModifyUserAttribute(operationType, user, attributeName, attributeValue); return LdapStateUtils.ToBoolean(_ldapCurrentState); }
public void Ctor_DistinguishedName_Operation_AttributeName_Values(string distinguishedName, DirectoryAttributeOperation operation, string attributeName, object[] values) { var request = new ModifyRequest(distinguishedName, operation, attributeName, values); Assert.Empty(request.Controls); DirectoryAttributeModification modification = (DirectoryAttributeModification)Assert.Single(request.Modifications); Assert.Equal(attributeName, modification.Name); Assert.Equal(operation, modification.Operation); Assert.Equal(values ?? Enumerable.Empty <object>(), modification.Cast <object>()); Assert.Equal(distinguishedName, request.DistinguishedName); Assert.Null(request.RequestId); }
public static ModifyRequest GetModifyRequest(ILdapUser user, DirectoryAttributeOperation attributeOperation, string attributeName, string attributeValue) { return(new ModifyRequest(user.GetUserDn(), attributeOperation, attributeName, attributeValue)); }