/// <summary> /// Process the users, groups and container through this ldap connection /// </summary> /// <param name="conn">ldap connection</param> /// <param name="settings">ldapsettings</param> private void ProcessSearchObjects(LdapConnection conn, LdapSettings settings) { foreach (string searchContext in settings.SearchContexts) { string[] searchAttributes = { "objectClass" }; log.Debug("SearchObject: " + searchContext); try { LdapEntry ldapEntry = conn.Read(searchContext, searchAttributes); LdapAttribute attrObjectClass = ldapEntry.getAttribute("objectClass"); String[] values = attrObjectClass.StringValueArray; if (IsUser(values) == true) { // Process SearchDN as log.Debug("Processing User Object..."); ProcessSearchUser(conn, searchContext); } else if (IsGroup(values) == true) { // Process SearchDN as log.Debug("Processing Group Object..."); ProcessSearchGroup(conn, searchContext); } else if (IsContainer(values) == true) { // Process SearchDN as Container log.Debug("Processing Container Object..."); ProcessSearchContainer(conn, searchContext); } else { log.Debug("Invalid objectClass: " + values[0]); log.Debug(attrObjectClass.ToString()); } } catch (SimiasShutdownException s) { log.Error("ProcessSearchObjects SimiasShutdownException"); log.Error(s.Message); throw s; } catch (LdapException e) { log.Error("ProcessSearchObjects LdapException"); log.Error(e.LdapErrorMessage); log.Error(e.StackTrace); throw e; } catch (Exception e) { log.Error("ProcessSearchObjects Exception"); log.Error(e.Message); log.Error(e.StackTrace); throw e; } } }