/// <summary>Searches the directory
/// </summary>
/// <param name="searchBase">Where to start the search</param>
/// <param name="searchScope">Scope of search</param>
/// <param name="searchFilter">Filter to search for</param>
/// <param name="searchAttrs">Attributes to search for</param>
/// <returns>List of entries matching filter</returns>
public LdapEntry[] Search(string searchBase, int searchScope, string searchFilter, string[] searchAttrs)
{
if (!conn.Connected)
return null;
try {
List<LdapEntry> retVal = new List<LdapEntry> ();
RfcFilter rfcFilter = new RfcFilter (searchFilter);
LdapSearchConstraints cons = new LdapSearchConstraints ();
cons.MaxResults = 0;
LdapSearchQueue queue = conn.Search (searchBase,
searchScope,
rfcFilter.filterToString(),
searchAttrs,
false,
(LdapSearchQueue) null,
cons);
LdapMessage msg;
while ((msg = queue.getResponse ()) != null) {
if (msg is LdapSearchResult) {
LdapEntry entry = ((LdapSearchResult) msg).Entry;
retVal.Add (entry);
}
}
return retVal.ToArray ();
} catch (Exception e) {
Log.Debug (e);
return null;
}
}