/// <summary> /// Get the properties specific to the LDAP entry. /// </summary> protected override LdapSearchResult CreateSearchEntry(Hashtable ht) { LdapSearchResult ee = new LdapSearchResult(); #region User Information if( ht.ContainsKey("cn") ) ee.DisplayName = ht["cn"].ToString(); if( ht.ContainsKey("distinguishedname") ) ee.DistinguishName = ht["distinguishedname"].ToString(); if( ht.ContainsKey("givenname") ) ee.GivenName = ht["givenname"].ToString(); if( ht.ContainsKey("sn") ) ee.Surname = ht["sn"].ToString(); if( ht.ContainsKey("uid") ) ee.Alias = ht["uid"].ToString(); if( ht.ContainsKey("objectsid") ) if ( ht["objectsid"].GetType() == typeof(byte[]) ) ee.CreateAccountInfo((byte[])ht["objectsid"]); if( ht.ContainsKey("adspath") ) ee.AdsPath = ht["adspath"].ToString(); if( ht.ContainsKey("objectclass") ) { ee.ResultType = LdapSearchResultType.Object; string[] classTypes = ht["objectclass"].ToString().Split(','); foreach( string classType in classTypes ) { switch( classType.ToLower(System.Threading.Thread.CurrentThread.CurrentCulture) ) { case "organizationalperson": case "person": case "user": ee.ResultType = LdapSearchResultType.User; break; case "group": ee.ResultType = LdapSearchResultType.Group; break; } if ( ee.ResultType != LdapSearchResultType.Object ) break; } } #endregion #region Business Info if( ht.ContainsKey("company") ) ee.Company = ht["company"].ToString(); if( ht.ContainsKey("department") ) ee.Department = ht["department"].ToString(); if( ht.ContainsKey("title") ) ee.Title = ht["title"].ToString(); if( ht.ContainsKey("telephonenumber") ) ee.TelephoneNumber = ht["telephonenumber"].ToString(); #endregion #region Address Information StringBuilder addr = new StringBuilder(); if( ht.ContainsKey("postaladdress") ) addr.AppendFormat("{0}{1}", ht["postaladdress"].ToString(), (ht["postaladdress"].ToString().Length > 0 ? Environment.NewLine : "")); if( ht.ContainsKey("postalcode") ) addr.AppendFormat("{0}{1}", ht["postalcode"].ToString(), (ht["postalcode"].ToString().Length > 0 ? Environment.NewLine : "")); if( ht.ContainsKey("l") ) addr.AppendFormat("{0}{1}", ht["l"].ToString(), (ht["l"].ToString().Length > 0 ? Environment.NewLine : "")); if( ht.ContainsKey("st") ) addr.AppendFormat("{0}{1}", ht["st"].ToString(), (ht["st"].ToString().Length > 0 ? Environment.NewLine : "")); if( ht.ContainsKey("co") ) addr.AppendFormat("{0}{1}", ht["co"].ToString(), (ht["co"].ToString().Length > 0 ? Environment.NewLine : "")); ee.Address = addr.ToString().Trim(); #endregion #region Email Inforamation if( ht.ContainsKey("mail") ) { ee.EmailAddress = ht["mail"].ToString(); ee.SmtpAddress = ht["mail"].ToString(); } #endregion return ee; }
/// <summary> /// Get the properties specific to the LDAP entry. /// </summary> protected override LdapSearchResult CreateSearchEntry(Hashtable ht) { LdapSearchResult ee = new LdapSearchResult(); #region User Information object item = ht["cn"]; if (item != null) { ee.DisplayName = item.ToString(); } item = ht["distinguishedname"]; if (item != null) { ee.DistinguishName = item.ToString(); } item = ht["givenname"]; if (item != null) { ee.GivenName = item.ToString(); } item = ht["sn"]; if (item != null) { ee.Surname = item.ToString(); } item = ht["uid"]; if (item != null) { ee.Alias = item.ToString(); } item = ht["assoc-nt-account"]; if (item != null && item is byte[]) { ee.CreateAccountInfo(item as byte[]); } item = ht["adspath"]; if (item != null) { ee.AdsPath = item.ToString(); } item = ht["objectclass"]; if (item != null) { ee.ResultType = LdapSearchResultType.Object; string[] classTypes = item.ToString().Split(','); foreach (string classType in classTypes) { switch (classType.ToLower(System.Threading.Thread.CurrentThread.CurrentCulture)) { case "organizationalperson": case "person": ee.ResultType = LdapSearchResultType.User; break; case "groupofnames": ee.ResultType = LdapSearchResultType.Group; break; } if (ee.ResultType != LdapSearchResultType.Object) { break; } } } #endregion #region Business Info item = ht["company"]; if (item != null) { ee.Company = item.ToString(); } item = ht["department"]; if (item != null) { ee.Department = item.ToString(); } item = ht["title"]; if (item != null) { ee.Title = item.ToString(); } item = ht["telephonenumber"]; if (item != null) { ee.TelephoneNumber = item.ToString(); } #endregion #region Address Information StringBuilder addr = new StringBuilder(); string[] addressParts = { "postaladdress", "postalcode", "l", "st", "co" }; foreach (string part in addressParts) { item = ht[part]; if (item != null) { string value = item.ToString(); if (value.Length > 0) { addr.AppendLine(value); } } } ee.Address = addr.ToString().Trim(); #endregion #region Email Inforamation item = ht["mail"]; if (item != null) { ee.EmailAddress = item.ToString(); } item = ht["rfc822mailbox"]; if (item != null) { ee.SmtpAddress = item.ToString(); } #endregion return ee; }