ldap.LdapServer: make parameters accepted by search and paged_search methods identical
This commit is contained in:
parent
6adcc1eeed
commit
86eae5dae5
1 changed files with 17 additions and 2 deletions
|
@ -116,7 +116,7 @@ class LdapServer:
|
||||||
return ldap.SCOPE_SUBTREE # pylint: disable=no-member
|
return ldap.SCOPE_SUBTREE # pylint: disable=no-member
|
||||||
raise Exception(f'Unknown LDAP scope "{scope}"')
|
raise Exception(f'Unknown LDAP scope "{scope}"')
|
||||||
|
|
||||||
def search(self, basedn, filterstr=None, attrs=None, sizelimit=0, scope=None):
|
def search(self, basedn, filterstr=None, attrs=None, sizelimit=None, scope=None):
|
||||||
""" Run a search on LDAP server """
|
""" Run a search on LDAP server """
|
||||||
assert self.con or self.connect()
|
assert self.con or self.connect()
|
||||||
res_id = self.con.search(
|
res_id = self.con.search(
|
||||||
|
@ -141,10 +141,18 @@ class LdapServer:
|
||||||
result = self.search(dn, filterstr=filterstr, scope='base', attrs=attrs)
|
result = self.search(dn, filterstr=filterstr, scope='base', attrs=attrs)
|
||||||
return result[dn] if dn in result else None
|
return result[dn] if dn in result else None
|
||||||
|
|
||||||
def paged_search(self, basedn, filterstr, attrs, scope='sub', pagesize=500):
|
def paged_search(self, basedn, filterstr=None, attrs=None, scope=None, pagesize=None,
|
||||||
|
sizelimit=None):
|
||||||
""" Run a paged search on LDAP server """
|
""" Run a paged search on LDAP server """
|
||||||
assert not self.v2, "Paged search is not available on LDAP version 2"
|
assert not self.v2, "Paged search is not available on LDAP version 2"
|
||||||
assert self.con or self.connect()
|
assert self.con or self.connect()
|
||||||
|
|
||||||
|
# Set parameters default values (if not defined)
|
||||||
|
filterstr = filterstr if filterstr else '(objectClass=*)'
|
||||||
|
attrs = attrs if attrs else []
|
||||||
|
scope = scope if scope else 'sub'
|
||||||
|
pagesize = pagesize if pagesize else 500
|
||||||
|
|
||||||
# Initialize SimplePagedResultsControl object
|
# Initialize SimplePagedResultsControl object
|
||||||
page_control = SimplePagedResultsControl(
|
page_control = SimplePagedResultsControl(
|
||||||
True,
|
True,
|
||||||
|
@ -208,6 +216,13 @@ class LdapServer:
|
||||||
# Store results of this page
|
# Store results of this page
|
||||||
for obj_dn, obj_attrs in rdata:
|
for obj_dn, obj_attrs in rdata:
|
||||||
ret[obj_dn] = obj_attrs
|
ret[obj_dn] = obj_attrs
|
||||||
|
# If sizelimit reached, stop
|
||||||
|
if sizelimit and len(ret) >= sizelimit:
|
||||||
|
break
|
||||||
|
|
||||||
|
# If sizelimit reached, stop
|
||||||
|
if sizelimit and len(ret) >= sizelimit:
|
||||||
|
break
|
||||||
|
|
||||||
# If no cookie returned, we are done
|
# If no cookie returned, we are done
|
||||||
if not result_page_control.cookie:
|
if not result_page_control.cookie:
|
||||||
|
|
Loading…
Reference in a new issue