public void AddDn(LdapObj ldapObj) { List <DirectoryAttribute> dirAttribs = new List <DirectoryAttribute>(); foreach (KeyValuePair <String, LdapAttribut> ldapAttribut in ldapObj.ldapAttributs) { if (ldapAttribut.Value.values.Count > 0) { foreach (Byte[] tb in ldapAttribut.Value.values) { Console.WriteLine(ldapAttribut.Key + " <=> " + Encoding.UTF8.GetString(tb)); } dirAttribs.Add(new DirectoryAttribute(ldapAttribut.Key, ldapAttribut.Value.values.ToArray())); } } // create an addrequest object AddRequest addRequest = new AddRequest(ldapObj.dn, dirAttribs.ToArray()); Connect2(); try { AddResponse addreponse = ldapConnexion.SendRequest(addRequest) as AddResponse; } catch (DirectoryOperationException e) { Console.WriteLine(e.Message); throw e; } }
public void DeleteDn(string dn) { try { Connect2(); LdapObj ldapObj = ReadDn(dn, "cn"); if (ldapObj != null) { DeleteRequest deleteRequest = new DeleteRequest(dn); DeleteResponse deleteResponse = (DeleteResponse)ldapConnexion.SendRequest(deleteRequest); } } catch (DirectoryOperationException e) { Console.WriteLine(e.Message); // throw e; } }
public void AddAttribut(String dn, String name, byte[][] value) { Connect2(); try { LdapObj ldapObj = ReadDn(dn, new String[] { name }); if (!ldapObj.HasAttribut(name)) { ModifyRequest modRequest = new ModifyRequest(dn, DirectoryAttributeOperation.Add, name, value); // example of modifyrequest not using the response object... ModifyResponse modifyResponse = (ModifyResponse)ldapConnexion.SendRequest(modRequest); Console.WriteLine(String.Format("{0} of {1} added successfully.", ldapConnexion, value)); } else { DirectoryAttributeModification directoryAttributeModification = new DirectoryAttributeModification(); directoryAttributeModification.Operation = DirectoryAttributeOperation.Replace; directoryAttributeModification.Name = name; ldapObj.ldapAttributs[name].AddRange(value); foreach (byte[] tbb in ldapObj.ldapAttributs[name].values) { directoryAttributeModification.Add(tbb); } ModifyRequest modRequest = new ModifyRequest(dn, new DirectoryAttributeModification[] { directoryAttributeModification }); ModifyResponse modifyResponse = (ModifyResponse)ldapConnexion.SendRequest(modRequest); Console.WriteLine(String.Format("{0} of {1} added successfully.", ldapConnexion, value)); } } catch (DirectoryOperationException e) { Console.WriteLine(e.Message); throw e; } catch (Exception e) { Console.WriteLine(e.Message); throw e; } }
private List <LdapObj> SearchDn(String baseDn, String ldapFilter, System.DirectoryServices.Protocols.SearchScope scope, String[] attribs) { List <LdapObj> lstLdapObj = null; try { if (!bindingSuccess) { Connect(); } if (attribs != null) { for (int i = 0; i < attribs.Length; i++) { attribs[i] = attribs[i].Trim(); } } SearchRequest request; if (attribs == null) { request = new SearchRequest(baseDn, ldapFilter, scope); } else { request = new SearchRequest(baseDn, ldapFilter, scope, attribs); } SearchResponse result = (SearchResponse)ldapConnexion.SendRequest(request); if ((result != null) && result.Entries.Count > 0) { lstLdapObj = new List <LdapObj>(); foreach (SearchResultEntry sResult in result.Entries) { String dn = sResult.DistinguishedName; LdapObj ldapObj = new LdapObj(dn); if (attribs != null) { foreach (String attr in attribs) { ldapObj.AddLdapAttribut(new LdapAttribut(attr)); } } foreach (DirectoryAttribute attribute in sResult.Attributes.Values) { /*Console.WriteLine(attribute.Name + " ==> " + attribute.Count); * if (attribute.Name.Equals("objectClass")) * Console.WriteLine(attribute.Name + " ==> " + attribute.Count); */ LdapAttribut ldapAttribut = new LdapAttribut(attribute.Name); ldapAttribut.AddRange((byte[][])attribute.GetValues(typeof(byte[]))); ldapObj.AddLdapAttribut(ldapAttribut); } lstLdapObj.Add(ldapObj); } } return(lstLdapObj); } catch (LdapException ex) { Console.WriteLine(String.Format("Error LdapException FindPeDateMajCert {0}...", ex.Message)); Console.WriteLine(ex.StackTrace); throw ex; } catch (DirectoryOperationException ex) { Console.WriteLine(String.Format("Error DirectoryOperationException FindPeDateMajCert {0}...", ex.Message)); Console.WriteLine(ex.StackTrace); throw ex; } catch (Exception ex) { Console.WriteLine(String.Format("Error Exception FindPeDateMajCert {0}...", ex.Message)); Console.WriteLine(ex.StackTrace); throw ex; } }