This method attempts to bind with the LDAP server using either simple authentication, or Kerberos (if available). The first and most general method, bind(), takes a third parameter, method, which can currently solely be AUTH_SIMPLE.
Note that the asynchronous technique yields the answer by raising the exception objects COMPARE_TRUE or COMPARE_FALSE.
Note A design fault in the LDAP API prevents value from containing nul characters.
Each element in the list modlist should be a tuple of the form
(mod_op,mod_type,mod_vals)
,
where mod_op indicates the operation (one of MOD_ADD,
MOD_DELETE, or MOD_REPLACE),
mod_type is a string indicating the attribute type name, and
mod_vals is either a string value or a list of string values to add,
delete or replace respectively. For the delete operation, mod_vals
may be None indicating that all attributes are to be deleted.
The asynchronous method modify() returns the message ID of the initiated request.
The msgid parameter is the integer identifier returned by that method. The identifier is guaranteed to be unique across an LDAP session, and tells the result() method to request the result of that specific operation. If a result is desired from any one of the in-progress operations, msgid should be specified as the constant RES_ANY.
The all parameter has meaning only for search() responses, and is used to select whether a single entry of the search response should be returned, or whether the result() method should wait until all the results of the search are available before returning.
The timeout parameter is a limit on the number of seconds that the method will wait for a response from the server. If timeout is negative (which is the default), the method will wait indefinitely for a response. The timeout can be expressed as a floating-point value, and a value of 0 effects a poll. If a timeout does occur, a TIMEOUT exception is raised, unless polling, in which case (None, None) is returned.
The result() method returns a tuple of the form
(result-type, result-data)
.
The first element, result-type is a string, being one of:
'RES_BIND', 'RES_SEARCH_ENTRY',
'RES_SEARCH_RESULT',
'RES_MODIFY', 'RES_ADD', 'RES_DELETE',
'RES_MODRDN', or 'RES_COMPARE'.
(The module constants RES_* are set to these strings,
for your convenience.)
If all is 0, one response at a time is returned on each call to result(), with termination indicated by result-data being an empty list.
See search() for a description of the search result's result-data, otherwise the result-data is normally meaningless.
The
filter argument is a string representation of the filter to apply in
the search. Simple filters can be specified as
"attribute_type=attribute_value"
.
When using the asynchronous form and result(), the all parameter affects how results come in. For all set to 0, result tuples trickle in (with the same message id), and with the result type RES_SEARCH_ENTRY, until the final result which has a result type of RES_SEARCH_RESULT and a (usually) empty data field. When all is set to 1, only one result is returned, with a result type of RES_SEARCH_RESULT, and all the result tuples listed in the data field.
Each result tuple is of the form (dn,attrs)
,
where dn is a string containing
the DN (distinguished name) of the entry, and
attrs is a dictionary
containing the attributes associated with the entry.
The keys of attrs are strings,
and the associated values are lists of strings.
The DN in dn is extracted using the underlying ldap_get_dn() function, which may raise an exception if the DN is malformed.
If attrsonly is non-zero, the values of attrs will be meaningless (they are not transmitted in the result).
The retrieved attributes can be limited with the attrlist parameter. If attrlist is None, all the attributes of each entry are returned.
The synchronous form with timeout, search_st(), will block for at most timeout seconds (or indefinitely if timeout is negative). A TIMEOUT exception is raised if no result is received within the specified time.
(who, cred, method)
.
Passing a value of None for func will disable this facility.
Because of restrictions in the implementation, only one rebinding function is supported at any one time. In addition, this method is only available if support is available in the underlying library (LDAP_REFERRALS).
The unbind() and unbind_s() methods are both synchronous in nature
LDAP URLs are fully described in RFC 2255.