LdapServer: add get_object() method
This commit is contained in:
parent
d336ab3a8d
commit
1f72a85b71
1 changed files with 16 additions and 7 deletions
|
@ -64,20 +64,29 @@ class LdapServer(object):
|
||||||
return ldap.SCOPE_SUBTREE
|
return ldap.SCOPE_SUBTREE
|
||||||
raise Exception("Unknown LDAP scope '%s'" % scope)
|
raise Exception("Unknown LDAP scope '%s'" % scope)
|
||||||
|
|
||||||
def search(self, basedn, filterstr='(objectClass=*)', attrs=[], sizelimit=0, scope='sub'):
|
def search(self, basedn, filterstr=None, attrs=None, sizelimit=0, scope=None):
|
||||||
res_id = self.con.search(basedn, self.get_scope(scope), filterstr, attrs)
|
res_id = self.con.search(
|
||||||
|
basedn,
|
||||||
|
self.get_scope(scope if scope else 'sub'),
|
||||||
|
filterstr if filterstr else '(objectClass=*)',
|
||||||
|
attrs if attrs else []
|
||||||
|
)
|
||||||
ret = {}
|
ret = {}
|
||||||
c = 0
|
c = 0
|
||||||
while 1:
|
while True:
|
||||||
res_type, res_data = self.con.result(res_id,0)
|
res_type, res_data = self.con.result(res_id,0)
|
||||||
if res_data == [] or sizelimit!=0 and c>sizelimit:
|
if res_data == [] or (sizelimit and c > sizelimit):
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
if res_type == ldap.RES_SEARCH_ENTRY:
|
if res_type == ldap.RES_SEARCH_ENTRY:
|
||||||
ret[res_data[0][0]] = res_data[0][1]
|
ret[res_data[0][0]] = res_data[0][1]
|
||||||
c=c+1
|
c += 1
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def get_object(self, dn, filterstr=None, attrs=None):
|
||||||
|
result = self.search(dn, filterstr=filterstr, scope='base', attrs=attrs)
|
||||||
|
return result[dn] if dn in result else None
|
||||||
|
|
||||||
def add_object(self,dn,attrs):
|
def add_object(self,dn,attrs):
|
||||||
ldif = modlist.addModlist(attrs)
|
ldif = modlist.addModlist(attrs)
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in a new issue