Hi,
the attached patch allows you to use default values for the
functions/arguments below. This is helpful in an environment where
/etc/openldap/ldap.conf is kept up to date with correct information.
ldap.initialize(uri)
LDAPObject.search_*(base, scope)
The semantics are identical to the command-line "ldapsearch" tool. This
means:
- uri <- "HOST" from /etc/openldap.conf
- base <- "BASE" from /etc/openldap.conf
- scope <- SCOPE_SUBTREE
The patch is against the latest CVS and has been tested.
Regards, Geert
? python-ldap-CVS-defaults.patch
? python-ldap-default-uri.patch
Index: Lib/ldap/functions.py
===================================================================
RCS file: /cvsroot/python-ldap/python-ldap/Lib/ldap/functions.py,v
retrieving revision 1.20
diff -u -r1.20 functions.py
--- Lib/ldap/functions.py 22 Mar 2007 23:12:36 -0000 1.20
+++ Lib/ldap/functions.py 21 Aug 2007 20:39:04 -0000
@@ -69,7 +69,7 @@
return result
-def initialize(uri,trace_level=0,trace_file=sys.stdout,trace_stack_limit=None):
+def initialize(uri=None,trace_level=0,trace_file=sys.stdout,trace_stack_limit=None):
"""
Return LDAPObject instance by opening LDAP connection to
LDAP host specified by LDAP URL
Index: Lib/ldap/ldapobject.py
===================================================================
RCS file: /cvsroot/python-ldap/python-ldap/Lib/ldap/ldapobject.py,v
retrieving revision 1.98
diff -u -r1.98 ldapobject.py
--- Lib/ldap/ldapobject.py 5 Jun 2007 09:56:15 -0000 1.98
+++ Lib/ldap/ldapobject.py 21 Aug 2007 20:39:05 -0000
@@ -59,7 +59,7 @@
}
def __init__(
- self,uri,
+ self,uri=None,
trace_level=0,trace_file=None,trace_stack_limit=5
):
self._trace_level = trace_level
@@ -439,13 +439,13 @@
decoded_serverctrls = DecodeControlTuples(serverctrls)
return rtype, rdata, rmsgid, decoded_serverctrls
- def search_ext(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
+ def search_ext(self,base=None,scope=ldap.SCOPE_SUBTREE,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
"""
- search(base, scope [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0]]]) -> int
- search_s(base, scope [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0]]])
- search_st(base, scope [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0 [,timeout=-1]]]])
- search_ext(base,scope,[,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0 [,serverctrls=None [,clientctrls=None [,timeout=-1 [,sizelimit=0]]]]]]])
- search_ext_s(base,scope,[,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0 [,serverctrls=None [,clientctrls=None [,timeout=-1 [,sizelimit=0]]]]]]])
+ search([base=None [,scope=ldap.SCOPE_SUBTREE [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0]]]]]) -> int
+ search_s([base=None [,scope=ldap.SCOPE_SUBTREE [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0]]]]])
+ search_st([base=None [,scope=ldap.SCOPE_SUBTREE [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0 [,timeout=-1]]]]]])
+ search_ext([base=None [,scope=ldap.SCOPE_SUBTREE [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0 [,serverctrls=None [,clientctrls=None [,timeout=-1 [,sizelimit=0]]]]]]]]])
+ search_ext_s([base=None [,scope=ldap.SCOPE_SUBTREE [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0 [,serverctrls=None [,clientctrls=None [,timeout=-1 [,sizelimit=0]]]]]]]]])
Perform an LDAP search operation, with base as the DN of
the entry at which to start the search, scope being one of
@@ -493,17 +493,17 @@
timeout,sizelimit,
)
- def search_ext_s(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
+ def search_ext_s(self,base=None,scope=ldap.SCOPE_SUBTREE,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
msgid = self.search_ext(base,scope,filterstr,attrlist,attrsonly,serverctrls,clientctrls,timeout,sizelimit)
return self.result(msgid,all=1,timeout=timeout)[1]
- def search(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0):
+ def search(self,base=None,scope=ldap.SCOPE_SUBTREE,filterstr='(objectClass=*)',attrlist=None,attrsonly=0):
return self.search_ext(base,scope,filterstr,attrlist,attrsonly,None,None)
- def search_s(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0):
+ def search_s(self,base=None,scope=ldap.SCOPE_SUBTREE,filterstr='(objectClass=*)',attrlist=None,attrsonly=0):
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout=self.timeout)
- def search_st(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,timeout=-1):
+ def search_st(self,base=None,scope=ldap.SCOPE_SUBTREE,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,timeout=-1):
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout)
def set_cache_options(self,*args,**kwargs):
@@ -623,7 +623,7 @@
class NonblockingLDAPObject(SimpleLDAPObject):
- def __init__(self,uri,trace_level=0,trace_file=None,result_timeout=-1):
+ def __init__(self,uri=None,trace_level=0,trace_file=None,result_timeout=-1):
self._result_timeout = result_timeout
SimpleLDAPObject.__init__(self,uri,trace_level,trace_file)
@@ -650,7 +650,7 @@
ldap_result = None,None
return all_results
- def search_st(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,timeout=-1):
+ def search_st(self,base=None,scope=ldap.SCOPE_SUBTREE,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,timeout=-1):
msgid = self.search(base,scope,filterstr,attrlist,attrsonly)
return self.result(msgid,all=1,timeout=timeout)
@@ -675,7 +675,7 @@
}
def __init__(
- self,uri,
+ self,uri=None,
trace_level=0,trace_file=None,trace_stack_limit=5,
retry_max=1,retry_delay=60.0
):
@@ -722,7 +722,7 @@
for k,v in self._options.items():
SimpleLDAPObject.set_option(self,k,v)
- def reconnect(self,uri):
+ def reconnect(self,uri=None):
# Drop and clean up old connection completely
# Reconnect
reconnect_counter = self._retry_max
@@ -827,7 +827,7 @@
"""
def __init__(
- self,uri,
+ self,uri=None,
trace_level=0,trace_file=None,trace_stack_limit=5,
retry_max=1,retry_delay=60.0,
who='',cred='',
Index: Modules/LDAPObject.c
===================================================================
RCS file: /cvsroot/python-ldap/python-ldap/Modules/LDAPObject.c,v
retrieving revision 1.78
diff -u -r1.78 LDAPObject.c
--- Modules/LDAPObject.c 6 Dec 2006 07:36:00 -0000 1.78
+++ Modules/LDAPObject.c 21 Aug 2007 20:39:06 -0000
@@ -1065,7 +1065,7 @@
int msgid;
int ldaperror;
- if (!PyArg_ParseTuple( args, "sis|OiOOdi",
+ if (!PyArg_ParseTuple( args, "zis|OiOOdi",
&base, &scope, &filter, &attrlist, &attrsonly,
&serverctrls, &clientctrls, &timeout, &sizelimit )) return NULL;
if (not_valid(self)) return NULL;
Index: Modules/functions.c
===================================================================
RCS file: /cvsroot/python-ldap/python-ldap/Modules/functions.c,v
retrieving revision 1.20
diff -u -r1.20 functions.c
--- Modules/functions.c 26 Mar 2007 18:37:24 -0000 1.20
+++ Modules/functions.c 21 Aug 2007 20:39:06 -0000
@@ -20,7 +20,7 @@
LDAP *ld = NULL;
int ret;
- if (!PyArg_ParseTuple(args, "s", &uri))
+ if (!PyArg_ParseTuple(args, "z", &uri))
return NULL;
Py_BEGIN_ALLOW_THREADS
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Python-LDAP-dev mailing list
Python-LDAP-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/python-ldap-dev