示例#1
0
        /// <summary>
        /// Stub for now
        /// </summary>
        /// <param name="dn"></param>
        /// <param name="scope"></param>
        /// <param name="aliasing"></param>
        /// <param name="filter"></param>
        /// <param name="attributes"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public async Task <LDAPResult> TrySearch(string dn, LDAPScope scope, LDAPAliasDereferencing aliasing, LDAPFilter filter, string[] attributes, CancellationToken token)
        {
            _log.LogInformation("Searching for {0}", dn);
            var op = new SearchRequest {
                DistinguishedName = dn, Scope = scope, Aliasing = aliasing, Filter = filter, Attributes = attributes
            };
            var objList = new List <LDAPObject>();
            var result  = new LDAPResult
            {
                Objects     = objList,
                IsStreaming = false,
            };

            foreach (var msg in await _connection.TryQueueOperation(op, token))
            {
                _log.LogInformation("Received {0}", msg.Operation);
                switch (msg.Operation)
                {
                case ProtocolOp.SEARCH_RESPONSE:
                    var sResponse = msg as SearchResponse;
                    _log.LogInformation("Found {0}", sResponse.DistinguishedName);
                    if (!string.IsNullOrWhiteSpace(sResponse.DistinguishedName))
                    {
                        objList.Add(new LDAPObject {
                            DistinguishedName = sResponse.DistinguishedName, Attributes = new List <LDAPAttribute>(sResponse.Attributes)
                        });
                    }
                    break;

                case ProtocolOp.SEARCH_RESULT:
                    var sResult = msg as SearchResult;
                    result.ResultCode    = (LDAPResultCode)sResult.ResultCode;
                    result.WasSuccessful = sResult.ResultCode == 0;
                    break;
                }
            }

            return(result);
        }
示例#2
0
 internal static extern int ldap_search_s([In] ConnectionHandle ldapHandle, string dn, LDAPScope scope, string filter, string[] attributes, bool attributeOnly, out IntPtr result);
示例#3
0
 /// <summary>
 /// Stub for now
 /// </summary>
 /// <param name="dn"></param>
 /// <param name="scope"></param>
 /// <param name="aliasing"></param>
 /// <param name="filter"></param>
 /// <param name="token"></param>
 /// <returns></returns>
 public async Task <LDAPResult> TrySearch(string dn, LDAPScope scope, LDAPAliasDereferencing aliasing, LDAPFilter filter, CancellationToken token) =>
 await TrySearch(dn, scope, aliasing, filter, null, token);