37 lines
1022 B
Python
37 lines
1022 B
Python
from ldap3 import ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES
|
|
|
|
from phi.logging import get_logger
|
|
|
|
log = get_logger(__name__)
|
|
|
|
|
|
def get_entry_by_uid(client, uid):
|
|
log.info("Searching entry with identifier: {}".format(uid))
|
|
|
|
filter_ = "({}={})".format(client.attribute_id, uid)
|
|
log.debug("Search filter: {}".format(filter_))
|
|
|
|
response_id = client.connection.search(
|
|
client.base_dn, filter_,
|
|
search_scope='SUBTREE',
|
|
attributes=[ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES]
|
|
)
|
|
|
|
response, result, request = client.connection.get_response(
|
|
response_id, get_request=True
|
|
)
|
|
|
|
log.debug("Request: {}".format(request))
|
|
log.debug("Response: {}".format(response))
|
|
log.debug("Result: {}".format(result))
|
|
|
|
if not response:
|
|
return None
|
|
|
|
if response[1:]:
|
|
log.erorr("Looking for exactly one result but server gave {}. "
|
|
"Taking the first and ignoring the rest."
|
|
.format(len(response)))
|
|
|
|
return response[0]
|