I'm trying to use SimplePagedResultsControl so I can pull some data out of 
Active Directory that has a Server-Limit set. I got most of my code from this 
guide http://www.novell.com/coolsolutions/tip/18274.html

When I try and run it I get this dump:

"""
SimplePagedResultsControl(1.2.840.113556.1.4.319,True,(10, ''))
Traceback (most recent call last):
  File "./test_ldap_brakeit.py", line 29, in ?
    msgid = l.search_ext(base, ldap.SCOPE_SUBTREE, 'objectclass=user', 
serverctrls=[lc])
  File "/usr/lib64/python2.4/site-packages/ldap/ldapobject.py", line 468, in 
search_ext
    EncodeControlTuples(serverctrls),
  File "/usr/lib64/python2.4/site-packages/ldap/controls.py", line 93, in 
EncodeControlTuples
    result = [
  File "/usr/lib64/python2.4/site-packages/ldap/controls.py", line 45, in 
getEncodedTuple
    return 
(self.controlType,self.criticality,self.encodeControlValue(self.controlValue))
  File "/usr/lib64/python2.4/site-packages/ldap/controls.py", line 78, in 
encodeControlValue
    return _ldap.encode_page_control(size,cookie)
ldap.ENCODING_ERROR
"""

Server is RHEL5.2 , not too sure about the Active Directory I think it is 
running on Windows Server 2003.

Here is the code:

#!/usr/bin/python
#

import ldap,ldap.async,pprint
from ldap.controls import SimplePagedResultsControl

server       = 'xxxx.com'
ldap_version = 3
base         = 'dc=example,dc=com'
binddn       = ''
bindpw       = ''
userbase     = ''
port         = 3268
page_size    = 10

l = ldap.open(server,port)
l.protocol_version = ldap_version
l.simple_bind_s(binddn, bindpw)
ldap.set_option(ldap.OPT_REFERRALS, 0)

lc = SimplePagedResultsControl(
        ldap.LDAP_CONTROL_PAGE_OID, True, (page_size,'') )

print lc

msgid = l.search_ext(base, ldap.SCOPE_SUBTREE, 'objectclass=user', 
serverctrls=[lc])

pages = 0
while True:
        pages += 1
        print "Getting page %d" % (pages,)
        rtype,rdata,rmsgid,serverctrls = l.result3(msgid)
        print "%d results" % len(rdata)
        pctrls = [ c for c in serverctrls if c.controlType == 
ldap.LDAP_CONTROL_PAGE_OID ]
        if pctrls:
                est, cookie = pctrls[0].controlValue
                if cookie:
                        lc.controlValue = (page_size,cookie)
                        msgid = l.search_ext(base, ldap.SCOPE_SUBTREE, 
'objectclass=user', serverctrls=[lc])
                else:
                        break
        else:
                print "Warning: Server ignores RFC 2696 control"

Joel Heenan


________________________________
Information contained in this communication (including any attachments) is 
confidential and may be privileged or subject to copyright. If you have 
received this communication in error you are not authorised to use the 
information in any way and Optiver requests that you notify the sender by 
return email, destroy all copies and delete the information from your system. 
Optiver does not represent, warrant or guarantee that this communication is 
free from computer viruses or other defects or that the integrity of this 
communication has been maintained. Any views expressed in this communication 
are those of the individual sender. Optiver does not accept liability for any 
loss or damage caused directly or indirectly by this communication or its use.

Please consider the environment before printing this email.
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Python-LDAP-dev mailing list
Python-LDAP-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/python-ldap-dev

Reply via email to