Exemple #1
0
        /// <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;
                }
            }
        }