[Py3] Update Demo to use print() (the function)
This commit is contained in:
		| @@ -1,3 +1,5 @@ | |||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import ldap,ldap.async | import ldap,ldap.async | ||||||
|  |  | ||||||
| class DeleteLeafs(ldap.async.AsyncSearchHandler): | class DeleteLeafs(ldap.async.AsyncSearchHandler): | ||||||
| @@ -62,7 +64,7 @@ def DelTree(l,dn,scope=ldap.SCOPE_ONELEVEL): | |||||||
|   non_leaf_entries = leafs_deleter.nonLeafEntries[:] |   non_leaf_entries = leafs_deleter.nonLeafEntries[:] | ||||||
|   while non_leaf_entries: |   while non_leaf_entries: | ||||||
|     dn = non_leaf_entries.pop() |     dn = non_leaf_entries.pop() | ||||||
|     print deleted_entries,len(non_leaf_entries),dn |     print(deleted_entries,len(non_leaf_entries),dn) | ||||||
|     leafs_deleter.startSearch(dn,ldap.SCOPE_SUBTREE) |     leafs_deleter.startSearch(dn,ldap.SCOPE_SUBTREE) | ||||||
|     leafs_deleter.processResults() |     leafs_deleter.processResults() | ||||||
|     deleted_entries = deleted_entries+leafs_deleter.deletedEntries |     deleted_entries = deleted_entries+leafs_deleter.deletedEntries | ||||||
|   | |||||||
| @@ -3,30 +3,30 @@ Do a search with the LDAP URL specified at command-line. | |||||||
|  |  | ||||||
| No output of LDAP data is produced except trace output. | No output of LDAP data is produced except trace output. | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
| import sys,getpass,ldap,ldapurl | import sys,getpass,ldap,ldapurl | ||||||
|  |  | ||||||
| try: | try: | ||||||
|   ldapUrl = ldapurl.LDAPUrl(ldapUrl=sys.argv[1]) |   ldapUrl = ldapurl.LDAPUrl(ldapUrl=sys.argv[1]) | ||||||
| except IndexError: | except IndexError: | ||||||
|   print 'Usage: %s [LDAP URL]' % (sys.argv[0]) |   print('Usage: %s [LDAP URL]' % (sys.argv[0])) | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| for a in [ | for a in [ | ||||||
|   'urlscheme','hostport','dn','attrs','scope', |   'urlscheme','hostport','dn','attrs','scope', | ||||||
|   'filterstr','extensions','who','cred' |   'filterstr','extensions','who','cred' | ||||||
| ]: | ]: | ||||||
|   print a,repr(getattr(ldapUrl,a)) |   print(a,repr(getattr(ldapUrl,a))) | ||||||
|  |  | ||||||
| l = ldap.initialize(ldapUrl.initializeUrl(),trace_level=1) | l = ldap.initialize(ldapUrl.initializeUrl(),trace_level=1) | ||||||
| if ldapUrl.who!=None: | if ldapUrl.who!=None: | ||||||
|   if ldapUrl.cred!=None: |   if ldapUrl.cred!=None: | ||||||
|     cred=ldapUrl.cred |     cred=ldapUrl.cred | ||||||
|   else: |   else: | ||||||
|     print 'Enter password for simple bind with',repr(ldapUrl.who) |     print('Enter password for simple bind with',repr(ldapUrl.who)) | ||||||
|     cred=getpass.getpass() |     cred=getpass.getpass() | ||||||
|   l.simple_bind_s(ldapUrl.who,cred) |   l.simple_bind_s(ldapUrl.who,cred) | ||||||
|  |  | ||||||
| res = l.search_s(ldapUrl.dn,ldapUrl.scope,ldapUrl.filterstr,ldapUrl.attrs) | res = l.search_s(ldapUrl.dn,ldapUrl.scope,ldapUrl.filterstr,ldapUrl.attrs) | ||||||
|  |  | ||||||
| print len(res),'search results' | print(len(res),'search results') | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ ldap://localhost:1390 (LDAP with StartTLS) | |||||||
| ldaps://localhost:1391 (LDAP over SSL) | ldaps://localhost:1391 (LDAP over SSL) | ||||||
| ldapi://%2ftmp%2fopenldap2 (domain socket /tmp/openldap2) | ldapi://%2ftmp%2fopenldap2 (domain socket /tmp/openldap2) | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import sys,os,ldap | import sys,os,ldap | ||||||
|  |  | ||||||
| @@ -23,10 +24,10 @@ ldap._trace_level = ldapmodule_trace_level | |||||||
| # Complete path name of the file containing all trusted CA certs | # Complete path name of the file containing all trusted CA certs | ||||||
| CACERTFILE='/etc/ssl/ca-bundle.pem' | CACERTFILE='/etc/ssl/ca-bundle.pem' | ||||||
|  |  | ||||||
| print """################################################################## | print("""################################################################## | ||||||
| # LDAPv3 connection with StartTLS ext. op. | # LDAPv3 connection with StartTLS ext. op. | ||||||
| ################################################################## | ################################################################## | ||||||
| """ | """) | ||||||
|  |  | ||||||
| # Create LDAPObject instance | # Create LDAPObject instance | ||||||
| l = ldap.initialize('ldap://localhost:1390',trace_level=ldapmodule_trace_level,trace_file=ldapmodule_trace_file) | l = ldap.initialize('ldap://localhost:1390',trace_level=ldapmodule_trace_level,trace_file=ldapmodule_trace_file) | ||||||
| @@ -44,8 +45,8 @@ l.set_option(ldap.OPT_X_TLS_NEWCTX,0) | |||||||
| # Now try StartTLS extended operation | # Now try StartTLS extended operation | ||||||
| l.start_tls_s() | l.start_tls_s() | ||||||
|  |  | ||||||
| print '***ldap.OPT_X_TLS_VERSION',l.get_option(ldap.OPT_X_TLS_VERSION) | print('***ldap.OPT_X_TLS_VERSION',l.get_option(ldap.OPT_X_TLS_VERSION)) | ||||||
| print '***ldap.OPT_X_TLS_CIPHER',l.get_option(ldap.OPT_X_TLS_CIPHER) | print('***ldap.OPT_X_TLS_CIPHER',l.get_option(ldap.OPT_X_TLS_CIPHER)) | ||||||
|  |  | ||||||
| # Try an explicit anon bind to provoke failure | # Try an explicit anon bind to provoke failure | ||||||
| l.simple_bind_s('','') | l.simple_bind_s('','') | ||||||
| @@ -53,10 +54,10 @@ l.simple_bind_s('','') | |||||||
| # Close connection | # Close connection | ||||||
| l.unbind_s() | l.unbind_s() | ||||||
|  |  | ||||||
| print """################################################################## | print("""################################################################## | ||||||
| # LDAPv3 connection over SSL | # LDAPv3 connection over SSL | ||||||
| ################################################################## | ################################################################## | ||||||
| """ | """) | ||||||
|  |  | ||||||
| # Create LDAPObject instance | # Create LDAPObject instance | ||||||
| l = ldap.initialize('ldaps://localhost:1391',trace_level=ldapmodule_trace_level,trace_file=ldapmodule_trace_file) | l = ldap.initialize('ldaps://localhost:1391',trace_level=ldapmodule_trace_level,trace_file=ldapmodule_trace_file) | ||||||
| @@ -74,16 +75,16 @@ l.set_option(ldap.OPT_X_TLS_NEWCTX,0) | |||||||
| # Try an explicit anon bind to provoke failure | # Try an explicit anon bind to provoke failure | ||||||
| l.simple_bind_s('','') | l.simple_bind_s('','') | ||||||
|  |  | ||||||
| print '***ldap.OPT_X_TLS_VERSION',l.get_option(ldap.OPT_X_TLS_VERSION) | print('***ldap.OPT_X_TLS_VERSION',l.get_option(ldap.OPT_X_TLS_VERSION)) | ||||||
| print '***ldap.OPT_X_TLS_CIPHER',l.get_option(ldap.OPT_X_TLS_CIPHER) | print('***ldap.OPT_X_TLS_CIPHER',l.get_option(ldap.OPT_X_TLS_CIPHER)) | ||||||
|  |  | ||||||
| # Close connection | # Close connection | ||||||
| l.unbind_s() | l.unbind_s() | ||||||
|  |  | ||||||
| print """################################################################## | print("""################################################################## | ||||||
| # LDAPv3 connection over Unix domain socket | # LDAPv3 connection over Unix domain socket | ||||||
| ################################################################## | ################################################################## | ||||||
| """ | """) | ||||||
|  |  | ||||||
| # Create LDAPObject instance | # Create LDAPObject instance | ||||||
| l = ldap.initialize('ldapi://%2ftmp%2fopenldap-socket',trace_level=ldapmodule_trace_level,trace_file=ldapmodule_trace_file) | l = ldap.initialize('ldapi://%2ftmp%2fopenldap-socket',trace_level=ldapmodule_trace_level,trace_file=ldapmodule_trace_file) | ||||||
|   | |||||||
| @@ -1,15 +1,16 @@ | |||||||
|  | from __future__ import print_function | ||||||
| import ldap,ldapurl,pprint | import ldap,ldapurl,pprint | ||||||
|  |  | ||||||
| from ldap.controls import LDAPControl,BooleanControl | from ldap.controls import LDAPControl,BooleanControl | ||||||
|  |  | ||||||
| l = ldap.initialize('ldap://localhost:1390',trace_level=2) | l = ldap.initialize('ldap://localhost:1390',trace_level=2) | ||||||
|  |  | ||||||
| print 60*'#' | print(60*'#') | ||||||
|  |  | ||||||
| pprint.pprint(l.get_option(ldap.OPT_SERVER_CONTROLS)) | pprint.pprint(l.get_option(ldap.OPT_SERVER_CONTROLS)) | ||||||
| l.manage_dsa_it(1,1) | l.manage_dsa_it(1,1) | ||||||
| pprint.pprint(l.get_option(ldap.OPT_SERVER_CONTROLS)) | pprint.pprint(l.get_option(ldap.OPT_SERVER_CONTROLS)) | ||||||
| print 60*'#' | print(60*'#') | ||||||
|  |  | ||||||
| # Search with ManageDsaIT control (which has no value) | # Search with ManageDsaIT control (which has no value) | ||||||
| pprint.pprint(l.search_ext_s( | pprint.pprint(l.search_ext_s( | ||||||
| @@ -19,7 +20,7 @@ pprint.pprint(l.search_ext_s( | |||||||
|   ['*','+'], |   ['*','+'], | ||||||
|   serverctrls = [ LDAPControl('2.16.840.1.113730.3.4.2',1,None) ], |   serverctrls = [ LDAPControl('2.16.840.1.113730.3.4.2',1,None) ], | ||||||
| )) | )) | ||||||
| print 60*'#' | print(60*'#') | ||||||
|  |  | ||||||
| # Search with Subentries control (which has boolean value) | # Search with Subentries control (which has boolean value) | ||||||
| pprint.pprint(l.search_ext_s( | pprint.pprint(l.search_ext_s( | ||||||
| @@ -30,4 +31,4 @@ pprint.pprint(l.search_ext_s( | |||||||
|   serverctrls = [ BooleanControl('1.3.6.1.4.1.4203.1.10.1',1,1) ], |   serverctrls = [ BooleanControl('1.3.6.1.4.1.4203.1.10.1',1,1) ], | ||||||
| )) | )) | ||||||
|  |  | ||||||
| print 60*'#' | print(60*'#') | ||||||
|   | |||||||
| @@ -27,16 +27,17 @@ | |||||||
| # Matched values control: (mail=*@example.org) | # Matched values control: (mail=*@example.org) | ||||||
| # dn: uid=jsmith,ou=People,dc=example,dc=com | # dn: uid=jsmith,ou=People,dc=example,dc=com | ||||||
| # mail: jsmith@example.org | # mail: jsmith@example.org | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import ldap | import ldap | ||||||
| from ldap.controls import MatchedValuesControl | from ldap.controls import MatchedValuesControl | ||||||
|  |  | ||||||
| def print_result(search_result): | def print_result(search_result): | ||||||
|     for n in range(len(search_result)): |     for n in range(len(search_result)): | ||||||
|         print "dn: %s" % search_result[n][0] |         print("dn: %s" % search_result[n][0]) | ||||||
|         for attr in search_result[n][1].keys(): |         for attr in search_result[n][1].keys(): | ||||||
|             for i in range(len(search_result[n][1][attr])): |             for i in range(len(search_result[n][1][attr])): | ||||||
|                 print "%s: %s" % (attr, search_result[n][1][attr][i]) |                 print("%s: %s" % (attr, search_result[n][1][attr][i])) | ||||||
|         print |         print | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -51,13 +52,13 @@ ld = ldap.initialize(uri) | |||||||
| mv = MatchedValuesControl(criticality=True, controlValue=control_filter) | mv = MatchedValuesControl(criticality=True, controlValue=control_filter) | ||||||
|  |  | ||||||
| res = ld.search_ext_s(base, scope, filter, attrlist = ['mail']) | res = ld.search_ext_s(base, scope, filter, attrlist = ['mail']) | ||||||
| print "LDAP filter used: %s" % filter | print("LDAP filter used: %s" % filter) | ||||||
| print "Requesting 'mail' attribute back" | print("Requesting 'mail' attribute back") | ||||||
| print | print | ||||||
| print "No matched values control:" | print("No matched values control:") | ||||||
| print_result(res) | print_result(res) | ||||||
|  |  | ||||||
| res = ld.search_ext_s(base, scope, filter, attrlist = ['mail'], serverctrls = [mv]) | res = ld.search_ext_s(base, scope, filter, attrlist = ['mail'], serverctrls = [mv]) | ||||||
| print "Matched values control: %s" % control_filter | print("Matched values control: %s" % control_filter) | ||||||
| print_result(res) | print_result(res) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,27 +1,28 @@ | |||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import ldap | import ldap | ||||||
|  |  | ||||||
| host="localhost:1390" | host="localhost:1390" | ||||||
|  |  | ||||||
| print "API info:",ldap.get_option(ldap.OPT_API_INFO) | print("API info:",ldap.get_option(ldap.OPT_API_INFO)) | ||||||
| print "debug level:",ldap.get_option(ldap.OPT_DEBUG_LEVEL) | print("debug level:",ldap.get_option(ldap.OPT_DEBUG_LEVEL)) | ||||||
| #print "Setting debug level to 255..." | #print("Setting debug level to 255...") | ||||||
| #ldap.set_option(ldap.OPT_DEBUG_LEVEL,255) | #ldap.set_option(ldap.OPT_DEBUG_LEVEL,255) | ||||||
| #print "debug level:",ldap.get_option(ldap.OPT_DEBUG_LEVEL) | #print("debug level:",ldap.get_option(ldap.OPT_DEBUG_LEVEL)) | ||||||
| print "default size limit:",ldap.get_option(ldap.OPT_SIZELIMIT) | print("default size limit:",ldap.get_option(ldap.OPT_SIZELIMIT)) | ||||||
| print "Setting default size limit to 10..." | print("Setting default size limit to 10...") | ||||||
| ldap.set_option(ldap.OPT_SIZELIMIT,10) | ldap.set_option(ldap.OPT_SIZELIMIT,10) | ||||||
| print "default size limit:",ldap.get_option(ldap.OPT_SIZELIMIT) | print("default size limit:",ldap.get_option(ldap.OPT_SIZELIMIT)) | ||||||
| print "Creating connection to",host,"..." | print("Creating connection to",host,"...") | ||||||
| l=ldap.init(host) | l=ldap.init(host) | ||||||
| print "size limit:",l.get_option(ldap.OPT_SIZELIMIT) | print("size limit:",l.get_option(ldap.OPT_SIZELIMIT)) | ||||||
| print "Setting connection size limit to 20..." | print("Setting connection size limit to 20...") | ||||||
| l.set_option(ldap.OPT_SIZELIMIT,20) | l.set_option(ldap.OPT_SIZELIMIT,20) | ||||||
| print "size limit:",l.get_option(ldap.OPT_SIZELIMIT) | print("size limit:",l.get_option(ldap.OPT_SIZELIMIT)) | ||||||
| #print "Setting time limit to 60 secs..." | #print("Setting time limit to 60 secs...") | ||||||
| l.set_option(ldap.OPT_TIMELIMIT,60) | l.set_option(ldap.OPT_TIMELIMIT,60) | ||||||
| #print "time limit:",l.get_option(ldap.OPT_TIMELIMIT) | #print("time limit:",l.get_option(ldap.OPT_TIMELIMIT)) | ||||||
| print "Binding..." | print("Binding...") | ||||||
| l.simple_bind_s("","") | l.simple_bind_s("","") | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| url = "ldap://localhost:1390" | url = "ldap://localhost:1390" | ||||||
| base = "dc=stroeder,dc=de" | base = "dc=stroeder,dc=de" | ||||||
| @@ -41,20 +42,20 @@ msgid = l.search_ext( | |||||||
| pages = 0 | pages = 0 | ||||||
| while True: | while True: | ||||||
|     pages += 1 |     pages += 1 | ||||||
|     print '-'*60 |     print('-'*60) | ||||||
|     print "Getting page %d" % (pages) |     print("Getting page %d" % (pages)) | ||||||
|     rtype, rdata, rmsgid, serverctrls = l.result3(msgid,resp_ctrl_classes=known_ldap_resp_ctrls) |     rtype, rdata, rmsgid, serverctrls = l.result3(msgid,resp_ctrl_classes=known_ldap_resp_ctrls) | ||||||
|     print '%d results' % len(rdata) |     print('%d results' % len(rdata)) | ||||||
|     print 'serverctrls=',pprint.pprint(serverctrls) |     print('serverctrls=',pprint.pprint(serverctrls)) | ||||||
|     print 'rdata=',pprint.pprint(rdata) |     print('rdata=',pprint.pprint(rdata)) | ||||||
|     pctrls = [ |     pctrls = [ | ||||||
|       c |       c | ||||||
|       for c in serverctrls |       for c in serverctrls | ||||||
|       if c.controlType == SimplePagedResultsControl.controlType |       if c.controlType == SimplePagedResultsControl.controlType | ||||||
|     ] |     ] | ||||||
|     if pctrls: |     if pctrls: | ||||||
|         print 'pctrls[0].size',repr(pctrls[0].size) |         print('pctrls[0].size',repr(pctrls[0].size)) | ||||||
|         print 'pctrls[0].cookie',repr(pctrls[0].cookie) |         print('pctrls[0].cookie',repr(pctrls[0].cookie)) | ||||||
|         if pctrls[0].cookie: |         if pctrls[0].cookie: | ||||||
|             # Copy cookie from response control to request control |             # Copy cookie from response control to request control | ||||||
|             req_ctrl.cookie = pctrls[0].cookie |             req_ctrl.cookie = pctrls[0].cookie | ||||||
| @@ -68,7 +69,7 @@ while True: | |||||||
|         else: |         else: | ||||||
|             break |             break | ||||||
|     else: |     else: | ||||||
|         print "Warning:  Server ignores RFC 2696 control." |         print("Warning:  Server ignores RFC 2696 control.") | ||||||
|         break |         break | ||||||
|  |  | ||||||
| l.unbind_s() | l.unbind_s() | ||||||
|   | |||||||
| @@ -1,3 +1,4 @@ | |||||||
|  | from __future__ import print_function | ||||||
| url = "ldap://localhost:1390/" | url = "ldap://localhost:1390/" | ||||||
| base = "dc=stroeder,dc=de" | base = "dc=stroeder,dc=de" | ||||||
| search_flt = r'(objectClass=*)' | search_flt = r'(objectClass=*)' | ||||||
| @@ -104,4 +105,4 @@ result_pages,all_results = l.paged_search_ext_s( | |||||||
|  |  | ||||||
| l.unbind_s() | l.unbind_s() | ||||||
|  |  | ||||||
| print 'Received %d results in %d pages.' % (len(all_results),result_pages) | print('Received %d results in %d pages.' % (len(all_results),result_pages)) | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| """ | """ | ||||||
| Example showing the use of the password extended operation. | Example showing the use of the password extended operation. | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import sys,ldap,ldapurl,getpass | import sys,ldap,ldapurl,getpass | ||||||
|  |  | ||||||
| @@ -11,9 +12,9 @@ ldapmodule_trace_file = sys.stderr | |||||||
|  |  | ||||||
| lu = ldapurl.LDAPUrl(sys.argv[1]) | lu = ldapurl.LDAPUrl(sys.argv[1]) | ||||||
|  |  | ||||||
| print 'Old password' | print('Old password') | ||||||
| oldpw = getpass.getpass() | oldpw = getpass.getpass() | ||||||
| print 'New password' | print('New password') | ||||||
| newpw = getpass.getpass() | newpw = getpass.getpass() | ||||||
|  |  | ||||||
| # Set path name of file containing all CA certificates | # Set path name of file containing all CA certificates | ||||||
|   | |||||||
| @@ -8,6 +8,7 @@ pyasn1 | |||||||
| pyasn1-modules | pyasn1-modules | ||||||
| python-ldap 2.4+ | python-ldap 2.4+ | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| from ldap.extop.dds import RefreshRequest,RefreshResponse | from ldap.extop.dds import RefreshRequest,RefreshResponse | ||||||
|  |  | ||||||
| @@ -17,7 +18,7 @@ try: | |||||||
|   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) |   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) | ||||||
|   request_ttl = int(sys.argv[2]) |   request_ttl = int(sys.argv[2]) | ||||||
| except (IndexError, ValueError): | except (IndexError, ValueError): | ||||||
|   print 'Usage: dds.py <LDAP URL> <TTL>' |   print('Usage: dds.py <LDAP URL> <TTL>') | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| # Set debugging level | # Set debugging level | ||||||
| @@ -32,14 +33,14 @@ ldap_conn = ldap.ldapobject.LDAPObject( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| if ldap_url.cred is None: | if ldap_url.cred is None: | ||||||
|   print 'Password for %s:' % (repr(ldap_url.who)) |   print('Password for %s:' % (repr(ldap_url.who))) | ||||||
|   ldap_url.cred = getpass.getpass() |   ldap_url.cred = getpass.getpass() | ||||||
|  |  | ||||||
| try: | try: | ||||||
|   ldap_conn.simple_bind_s(ldap_url.who or '',ldap_url.cred or '') |   ldap_conn.simple_bind_s(ldap_url.who or '',ldap_url.cred or '') | ||||||
|  |  | ||||||
| except ldap.INVALID_CREDENTIALS as e: | except ldap.INVALID_CREDENTIALS as e: | ||||||
|   print 'Simple bind failed:',str(e) |   print('Simple bind failed:',str(e)) | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| else: | else: | ||||||
| @@ -47,9 +48,9 @@ else: | |||||||
|   try: |   try: | ||||||
|     extop_resp_obj = ldap_conn.extop_s(extreq,extop_resp_class=RefreshResponse) |     extop_resp_obj = ldap_conn.extop_s(extreq,extop_resp_class=RefreshResponse) | ||||||
|   except ldap.LDAPError as e: |   except ldap.LDAPError as e: | ||||||
|     print str(e) |     print(str(e)) | ||||||
|   else: |   else: | ||||||
|     if extop_resp_obj.responseTtl!=request_ttl: |     if extop_resp_obj.responseTtl!=request_ttl: | ||||||
|       print 'Different response TTL:',extop_resp_obj.responseTtl |       print('Different response TTL:',extop_resp_obj.responseTtl) | ||||||
|     else: |     else: | ||||||
|       print 'Response TTL:',extop_resp_obj.responseTtl |       print('Response TTL:',extop_resp_obj.responseTtl) | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ pyasn1 | |||||||
| pyasn1-modules | pyasn1-modules | ||||||
| python-ldap 2.4+ | python-ldap 2.4+ | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import sys,ldap,ldapurl,getpass | import sys,ldap,ldapurl,getpass | ||||||
|  |  | ||||||
| @@ -21,7 +22,7 @@ SEARCH_TIMEOUT=30.0 | |||||||
| try: | try: | ||||||
|   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) |   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) | ||||||
| except IndexError: | except IndexError: | ||||||
|   print 'Usage: noopsearch.py <LDAP URL>' |   print('Usage: noopsearch.py <LDAP URL>') | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| # Set debugging level | # Set debugging level | ||||||
| @@ -36,14 +37,14 @@ ldap_conn = ldap.ldapobject.LDAPObject( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| if ldap_url.who and ldap_url.cred is None: | if ldap_url.who and ldap_url.cred is None: | ||||||
|   print 'Password for %s:' % (repr(ldap_url.who)) |   print('Password for %s:' % (repr(ldap_url.who))) | ||||||
|   ldap_url.cred = getpass.getpass() |   ldap_url.cred = getpass.getpass() | ||||||
|  |  | ||||||
| try: | try: | ||||||
|   ldap_conn.simple_bind_s(ldap_url.who or '',ldap_url.cred or '') |   ldap_conn.simple_bind_s(ldap_url.who or '',ldap_url.cred or '') | ||||||
|  |  | ||||||
| except ldap.INVALID_CREDENTIALS as e: | except ldap.INVALID_CREDENTIALS as e: | ||||||
|   print 'Simple bind failed:',str(e) |   print('Simple bind failed:',str(e)) | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| try: | try: | ||||||
| @@ -67,5 +68,5 @@ noop_srch_ctrl = [ | |||||||
|   if c.controlType==SearchNoOpControl.controlType |   if c.controlType==SearchNoOpControl.controlType | ||||||
| ][0] | ][0] | ||||||
|  |  | ||||||
| print 'Number of search results: %d' % noop_srch_ctrl.numSearchResults | print('Number of search results: %d' % noop_srch_ctrl.numSearchResults) | ||||||
| print 'Number of search continuations: %d' % noop_srch_ctrl.numSearchContinuations | print('Number of search continuations: %d' % noop_srch_ctrl.numSearchContinuations) | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ pyasn1 | |||||||
| pyasn1-modules | pyasn1-modules | ||||||
| python-ldap 2.4+ | python-ldap 2.4+ | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import sys,ldap,ldapurl,getpass | import sys,ldap,ldapurl,getpass | ||||||
|  |  | ||||||
| @@ -17,7 +18,7 @@ from ldap.controls.ppolicy import PasswordPolicyError,PasswordPolicyControl | |||||||
| try: | try: | ||||||
|   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) |   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) | ||||||
| except (IndexError,ValueError): | except (IndexError,ValueError): | ||||||
|   print 'Usage: ppolicy.py <LDAP URL>' |   print('Usage: ppolicy.py <LDAP URL>') | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| # Set debugging level | # Set debugging level | ||||||
| @@ -32,19 +33,19 @@ ldap_conn = ldap.ldapobject.LDAPObject( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| if ldap_url.cred is None: | if ldap_url.cred is None: | ||||||
|   print 'Password for %s:' % (repr(ldap_url.who)) |   print('Password for %s:' % (repr(ldap_url.who))) | ||||||
|   ldap_url.cred = getpass.getpass() |   ldap_url.cred = getpass.getpass() | ||||||
|  |  | ||||||
| try: | try: | ||||||
|   msgid = ldap_conn.simple_bind(ldap_url.who,ldap_url.cred,serverctrls=[PasswordPolicyControl()]) |   msgid = ldap_conn.simple_bind(ldap_url.who,ldap_url.cred,serverctrls=[PasswordPolicyControl()]) | ||||||
|   res_type,res_data,res_msgid,res_ctrls = ldap_conn.result3(msgid) |   res_type,res_data,res_msgid,res_ctrls = ldap_conn.result3(msgid) | ||||||
| except ldap.INVALID_CREDENTIALS as e: | except ldap.INVALID_CREDENTIALS as e: | ||||||
|   print 'Simple bind failed:',str(e) |   print('Simple bind failed:',str(e)) | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
| else: | else: | ||||||
|   if res_ctrls[0].controlType==PasswordPolicyControl.controlType: |   if res_ctrls[0].controlType==PasswordPolicyControl.controlType: | ||||||
|     ppolicy_ctrl = res_ctrls[0] |     ppolicy_ctrl = res_ctrls[0] | ||||||
|     print 'PasswordPolicyControl' |     print('PasswordPolicyControl') | ||||||
|     print 'error',repr(ppolicy_ctrl.error),(ppolicy_ctrl.error!=None)*repr(PasswordPolicyError(ppolicy_ctrl.error)) |     print('error',repr(ppolicy_ctrl.error),(ppolicy_ctrl.error!=None)*repr(PasswordPolicyError(ppolicy_ctrl.error))) | ||||||
|     print 'timeBeforeExpiration',repr(ppolicy_ctrl.timeBeforeExpiration) |     print('timeBeforeExpiration',repr(ppolicy_ctrl.timeBeforeExpiration)) | ||||||
|     print 'graceAuthNsRemaining',repr(ppolicy_ctrl.graceAuthNsRemaining) |     print('graceAuthNsRemaining',repr(ppolicy_ctrl.graceAuthNsRemaining)) | ||||||
|   | |||||||
| @@ -10,6 +10,7 @@ pyasn1 | |||||||
| pyasn1-modules | pyasn1-modules | ||||||
| python-ldap 2.4+ | python-ldap 2.4+ | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import sys,ldap,ldapurl,getpass | import sys,ldap,ldapurl,getpass | ||||||
|  |  | ||||||
| @@ -18,7 +19,7 @@ from ldap.controls.psearch import PersistentSearchControl,EntryChangeNotificatio | |||||||
| try: | try: | ||||||
|   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) |   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) | ||||||
| except IndexError: | except IndexError: | ||||||
|   print 'Usage: psearch.py <LDAP URL>' |   print('Usage: psearch.py <LDAP URL>') | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| # Set debugging level | # Set debugging level | ||||||
| @@ -33,14 +34,14 @@ ldap_conn = ldap.ldapobject.LDAPObject( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| if ldap_url.cred is None: | if ldap_url.cred is None: | ||||||
|   print 'Password for %s:' % (repr(ldap_url.who)) |   print('Password for %s:' % (repr(ldap_url.who))) | ||||||
|   ldap_url.cred = getpass.getpass() |   ldap_url.cred = getpass.getpass() | ||||||
|  |  | ||||||
| try: | try: | ||||||
|   ldap_conn.simple_bind_s(ldap_url.who,ldap_url.cred) |   ldap_conn.simple_bind_s(ldap_url.who,ldap_url.cred) | ||||||
|  |  | ||||||
| except ldap.INVALID_CREDENTIALS as e: | except ldap.INVALID_CREDENTIALS as e: | ||||||
|   print 'Simple bind failed:',str(e) |   print('Simple bind failed:',str(e)) | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| psc = PersistentSearchControl() | psc = PersistentSearchControl() | ||||||
| @@ -64,7 +65,7 @@ while True: | |||||||
|       resp_ctrl_classes={EntryChangeNotificationControl.controlType:EntryChangeNotificationControl}, |       resp_ctrl_classes={EntryChangeNotificationControl.controlType:EntryChangeNotificationControl}, | ||||||
|     ) |     ) | ||||||
|   except ldap.TIMEOUT: |   except ldap.TIMEOUT: | ||||||
|     print 'Timeout waiting for results...' |     print('Timeout waiting for results...') | ||||||
|   else: |   else: | ||||||
|     for dn,entry,srv_ctrls in res_data: |     for dn,entry,srv_ctrls in res_data: | ||||||
|       ecn_ctrls = [ |       ecn_ctrls = [ | ||||||
| @@ -76,4 +77,4 @@ while True: | |||||||
|       if ecn_ctrls: |       if ecn_ctrls: | ||||||
|         changeType,previousDN,changeNumber = ecn_ctrls[0].changeType,ecn_ctrls[0].previousDN,ecn_ctrls[0].changeNumber |         changeType,previousDN,changeNumber = ecn_ctrls[0].changeType,ecn_ctrls[0].previousDN,ecn_ctrls[0].changeNumber | ||||||
|         change_type_desc = CHANGE_TYPES_STR[changeType] |         change_type_desc = CHANGE_TYPES_STR[changeType] | ||||||
|         print 'changeType: %s (%d), changeNumber: %s, previousDN: %s' % (change_type_desc,changeType,changeNumber,repr(previousDN)) |         print('changeType: %s (%d), changeNumber: %s, previousDN: %s' % (change_type_desc,changeType,changeNumber,repr(previousDN))) | ||||||
|   | |||||||
| @@ -6,6 +6,7 @@ Originally contributed by Andreas Hasenack <ahasenack@terra.com.br> | |||||||
|  |  | ||||||
| Requires module pyasn1 (see http://pyasn1.sourceforge.net/) | Requires module pyasn1 (see http://pyasn1.sourceforge.net/) | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import pprint,ldap,ldap.modlist | import pprint,ldap,ldap.modlist | ||||||
|  |  | ||||||
| @@ -16,10 +17,10 @@ uri = "ldap://localhost:2071/" | |||||||
| l = ldap.initialize(uri,trace_level=2) | l = ldap.initialize(uri,trace_level=2) | ||||||
| l.simple_bind_s('uid=diradm,ou=schulung,dc=stroeder,dc=local','testsecret') | l.simple_bind_s('uid=diradm,ou=schulung,dc=stroeder,dc=local','testsecret') | ||||||
|  |  | ||||||
| print """#--------------------------------------------------------------------------- | print("""#--------------------------------------------------------------------------- | ||||||
| # Add new entry | # Add new entry | ||||||
| #--------------------------------------------------------------------------- | #--------------------------------------------------------------------------- | ||||||
| """ | """) | ||||||
|  |  | ||||||
| new_test_dn = "uid=ablume,ou=Users,ou=schulung,dc=stroeder,dc=local" | new_test_dn = "uid=ablume,ou=Users,ou=schulung,dc=stroeder,dc=local" | ||||||
| new_test_dn2 = "uid=ablume2,ou=Users,ou=schulung,dc=stroeder,dc=local" | new_test_dn2 = "uid=ablume2,ou=Users,ou=schulung,dc=stroeder,dc=local" | ||||||
| @@ -40,13 +41,13 @@ msg_id = l.add_ext( | |||||||
|   serverctrls = [pr] |   serverctrls = [pr] | ||||||
| ) | ) | ||||||
| _,_,_,resp_ctrls = l.result3(msg_id) | _,_,_,resp_ctrls = l.result3(msg_id) | ||||||
| print "resp_ctrls[0].dn:",resp_ctrls[0].dn | print("resp_ctrls[0].dn:",resp_ctrls[0].dn) | ||||||
| print "resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry) | print("resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry)) | ||||||
|  |  | ||||||
| print """#--------------------------------------------------------------------------- | print("""#--------------------------------------------------------------------------- | ||||||
| # Modify entry | # Modify entry | ||||||
| #--------------------------------------------------------------------------- | #--------------------------------------------------------------------------- | ||||||
| """ | """) | ||||||
|  |  | ||||||
| pr = PreReadControl(criticality=True,attrList=['uidNumber','gidNumber','entryCSN']) | pr = PreReadControl(criticality=True,attrList=['uidNumber','gidNumber','entryCSN']) | ||||||
|  |  | ||||||
| @@ -56,8 +57,8 @@ msg_id = l.modify_ext( | |||||||
|   serverctrls = [pr] |   serverctrls = [pr] | ||||||
| ) | ) | ||||||
| _,_,_,resp_ctrls = l.result3(msg_id) | _,_,_,resp_ctrls = l.result3(msg_id) | ||||||
| print "resp_ctrls[0].dn:",resp_ctrls[0].dn | print("resp_ctrls[0].dn:",resp_ctrls[0].dn) | ||||||
| print "resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry) | print("resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry)) | ||||||
|  |  | ||||||
| pr = PostReadControl(criticality=True,attrList=['uidNumber','gidNumber','entryCSN']) | pr = PostReadControl(criticality=True,attrList=['uidNumber','gidNumber','entryCSN']) | ||||||
|  |  | ||||||
| @@ -67,13 +68,13 @@ msg_id = l.modify_ext( | |||||||
|   serverctrls = [pr] |   serverctrls = [pr] | ||||||
| ) | ) | ||||||
| _,_,_,resp_ctrls = l.result3(msg_id) | _,_,_,resp_ctrls = l.result3(msg_id) | ||||||
| print "resp_ctrls[0].dn:",resp_ctrls[0].dn | print("resp_ctrls[0].dn:",resp_ctrls[0].dn) | ||||||
| print "resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry) | print("resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry)) | ||||||
|  |  | ||||||
| print """#--------------------------------------------------------------------------- | print("""#--------------------------------------------------------------------------- | ||||||
| # Rename entry | # Rename entry | ||||||
| #--------------------------------------------------------------------------- | #--------------------------------------------------------------------------- | ||||||
| """ | """) | ||||||
|  |  | ||||||
| pr = PostReadControl(criticality=True,attrList=['uid']) | pr = PostReadControl(criticality=True,attrList=['uid']) | ||||||
| msg_id = l.rename( | msg_id = l.rename( | ||||||
| @@ -83,8 +84,8 @@ msg_id = l.rename( | |||||||
|   serverctrls = [pr] |   serverctrls = [pr] | ||||||
| ) | ) | ||||||
| _,_,_,resp_ctrls = l.result3(msg_id) | _,_,_,resp_ctrls = l.result3(msg_id) | ||||||
| print "resp_ctrls[0].dn:",resp_ctrls[0].dn | print("resp_ctrls[0].dn:",resp_ctrls[0].dn) | ||||||
| print "resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry) | print("resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry)) | ||||||
|  |  | ||||||
| pr = PreReadControl(criticality=True,attrList=['uid']) | pr = PreReadControl(criticality=True,attrList=['uid']) | ||||||
| msg_id = l.rename( | msg_id = l.rename( | ||||||
| @@ -94,13 +95,13 @@ msg_id = l.rename( | |||||||
|   serverctrls = [pr] |   serverctrls = [pr] | ||||||
| ) | ) | ||||||
| _,_,_,resp_ctrls = l.result3(msg_id) | _,_,_,resp_ctrls = l.result3(msg_id) | ||||||
| print "resp_ctrls[0].dn:",resp_ctrls[0].dn | print("resp_ctrls[0].dn:",resp_ctrls[0].dn) | ||||||
| print "resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry) | print("resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry)) | ||||||
|  |  | ||||||
| print """#--------------------------------------------------------------------------- | print("""#--------------------------------------------------------------------------- | ||||||
| # Delete entry | # Delete entry | ||||||
| #--------------------------------------------------------------------------- | #--------------------------------------------------------------------------- | ||||||
| """ | """) | ||||||
|  |  | ||||||
| pr = PreReadControl(criticality=True,attrList=['*','+']) | pr = PreReadControl(criticality=True,attrList=['*','+']) | ||||||
| msg_id = l.delete_ext( | msg_id = l.delete_ext( | ||||||
| @@ -108,5 +109,5 @@ msg_id = l.delete_ext( | |||||||
|   serverctrls = [pr] |   serverctrls = [pr] | ||||||
| ) | ) | ||||||
| _,_,_,resp_ctrls = l.result3(msg_id) | _,_,_,resp_ctrls = l.result3(msg_id) | ||||||
| print "resp_ctrls[0].dn:",resp_ctrls[0].dn | print("resp_ctrls[0].dn:",resp_ctrls[0].dn) | ||||||
| print "resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry) | print("resp_ctrls[0].entry:";pprint.pprint(resp_ctrls[0].entry)) | ||||||
|   | |||||||
| @@ -8,6 +8,8 @@ Client-seitige Demo-Implementierung von Session Tracking Control | |||||||
| http://tools.ietf.org/html/draft-wahl-ldap-session-03 | http://tools.ietf.org/html/draft-wahl-ldap-session-03 | ||||||
| """ | """ | ||||||
|  |  | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| __version__ = '0.1' | __version__ = '0.1' | ||||||
|  |  | ||||||
| import sys,getpass,ldap,ldapurl | import sys,getpass,ldap,ldapurl | ||||||
| @@ -17,7 +19,7 @@ from ldap.controls.sessiontrack import SessionTrackingControl,SESSION_TRACKING_F | |||||||
| try: | try: | ||||||
|   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) |   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) | ||||||
| except (IndexError, ValueError): | except (IndexError, ValueError): | ||||||
|   print 'Usage: %s <LDAP URL>' % (sys.argv[0]) |   print('Usage: %s <LDAP URL>' % (sys.argv[0])) | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| # Set debugging level | # Set debugging level | ||||||
| @@ -32,14 +34,14 @@ ldap_conn = ldap.ldapobject.LDAPObject( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| if ldap_url.who and ldap_url.cred is None: | if ldap_url.who and ldap_url.cred is None: | ||||||
|   print 'Password for %s:' % (repr(ldap_url.who)) |   print('Password for %s:' % (repr(ldap_url.who))) | ||||||
|   ldap_url.cred = getpass.getpass() |   ldap_url.cred = getpass.getpass() | ||||||
|  |  | ||||||
| try: | try: | ||||||
|   ldap_conn.simple_bind_s(ldap_url.who or '',ldap_url.cred or '') |   ldap_conn.simple_bind_s(ldap_url.who or '',ldap_url.cred or '') | ||||||
|  |  | ||||||
| except ldap.INVALID_CREDENTIALS as e: | except ldap.INVALID_CREDENTIALS as e: | ||||||
|   print 'Simple bind failed:',str(e) |   print('Simple bind failed:',str(e)) | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| st_ctrl = SessionTrackingControl( | st_ctrl = SessionTrackingControl( | ||||||
|   | |||||||
| @@ -14,6 +14,7 @@ pyasn1 0.1.4+ | |||||||
| pyasn1-modules | pyasn1-modules | ||||||
| python-ldap 2.4.10+ | python-ldap 2.4.10+ | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| # Import the python-ldap modules | # Import the python-ldap modules | ||||||
| import ldap,ldapurl | import ldap,ldapurl | ||||||
| @@ -66,7 +67,7 @@ class SyncReplConsumer(ReconnectLDAPObject,SyncreplConsumer): | |||||||
|         attributes['dn'] = dn |         attributes['dn'] = dn | ||||||
|         self.__data[uuid] = attributes |         self.__data[uuid] = attributes | ||||||
|         # Debugging |         # Debugging | ||||||
|         print 'Detected', change_type, 'of entry:', dn |         print('Detected', change_type, 'of entry:', dn) | ||||||
|         # If we have a cookie then this is not our first time being run, so it must be a change |         # If we have a cookie then this is not our first time being run, so it must be a change | ||||||
|         if 'ldap_cookie' in self.__data: |         if 'ldap_cookie' in self.__data: | ||||||
|                 self.perform_application_sync(dn, attributes, previous_attributes) |                 self.perform_application_sync(dn, attributes, previous_attributes) | ||||||
| @@ -76,7 +77,7 @@ class SyncReplConsumer(ReconnectLDAPObject,SyncreplConsumer): | |||||||
|         uuids = [uuid for uuid in uuids if uuid in self.__data] |         uuids = [uuid for uuid in uuids if uuid in self.__data] | ||||||
|         # Delete all the UUID values we know of |         # Delete all the UUID values we know of | ||||||
|         for uuid in uuids: |         for uuid in uuids: | ||||||
|             print 'Detected deletion of entry:', self.__data[uuid]['dn'] |             print('Detected deletion of entry:', self.__data[uuid]['dn']) | ||||||
|             del self.__data[uuid] |             del self.__data[uuid] | ||||||
|  |  | ||||||
|     def syncrepl_present(self,uuids,refreshDeletes=False): |     def syncrepl_present(self,uuids,refreshDeletes=False): | ||||||
| @@ -94,10 +95,10 @@ class SyncReplConsumer(ReconnectLDAPObject,SyncreplConsumer): | |||||||
|                     self.__presentUUIDs[uuid] = True |                     self.__presentUUIDs[uuid] = True | ||||||
|  |  | ||||||
|     def syncrepl_refreshdone(self): |     def syncrepl_refreshdone(self): | ||||||
|         print 'Initial synchronization is now done, persist phase begins' |         print('Initial synchronization is now done, persist phase begins') | ||||||
|  |  | ||||||
|     def perform_application_sync(self,dn,attributes,previous_attributes): |     def perform_application_sync(self,dn,attributes,previous_attributes): | ||||||
|         print 'Performing application sync for:', dn |         print('Performing application sync for:', dn) | ||||||
|         return True |         return True | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -105,7 +106,7 @@ class SyncReplConsumer(ReconnectLDAPObject,SyncreplConsumer): | |||||||
| def commenceShutdown(signum, stack): | def commenceShutdown(signum, stack): | ||||||
|     # Declare the needed global variables |     # Declare the needed global variables | ||||||
|     global watcher_running, ldap_connection |     global watcher_running, ldap_connection | ||||||
|     print 'Shutting down!' |     print('Shutting down!') | ||||||
|  |  | ||||||
|     # We are no longer running |     # We are no longer running | ||||||
|     watcher_running = False |     watcher_running = False | ||||||
| @@ -127,22 +128,22 @@ signal.signal(signal.SIGINT,commenceShutdown) | |||||||
| try: | try: | ||||||
|   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) |   ldap_url = ldapurl.LDAPUrl(sys.argv[1]) | ||||||
|   database_path = sys.argv[2] |   database_path = sys.argv[2] | ||||||
| except IndexError,e: | except IndexError as e: | ||||||
|     print 'Usage:' |     print('Usage:') | ||||||
|     print sys.argv[0], '<LDAP URL> <pathname of database>' |     print(sys.argv[0], '<LDAP URL> <pathname of database>') | ||||||
|     print sys.argv[0], '\'ldap://127.0.0.1/cn=users,dc=test'\ |     print(sys.argv[0], '\'ldap://127.0.0.1/cn=users,dc=test'\) | ||||||
|                        '?*'\ |                        '?*'\ | ||||||
|                        '?sub'\ |                        '?sub'\ | ||||||
|                        '?(objectClass=*)'\ |                        '?(objectClass=*)'\ | ||||||
|                        '?bindname=uid=admin%2ccn=users%2cdc=test,'\ |                        '?bindname=uid=admin%2ccn=users%2cdc=test,'\ | ||||||
|                        'X-BINDPW=password\' db.shelve' |                        'X-BINDPW=password\' db.shelve' | ||||||
|     sys.exit(1) |     sys.exit(1) | ||||||
| except ValueError,e: | except ValueError as e: | ||||||
|   print 'Error parsing command-line arguments:',str(e) |   print('Error parsing command-line arguments:',str(e)) | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| while watcher_running: | while watcher_running: | ||||||
|     print 'Connecting to LDAP server now...' |     print('Connecting to LDAP server now...') | ||||||
|     # Prepare the LDAP server connection (triggers the connection as well) |     # Prepare the LDAP server connection (triggers the connection as well) | ||||||
|     ldap_connection = SyncReplConsumer(database_path,ldap_url.initializeUrl()) |     ldap_connection = SyncReplConsumer(database_path,ldap_url.initializeUrl()) | ||||||
|  |  | ||||||
| @@ -150,15 +151,15 @@ while watcher_running: | |||||||
|     try: |     try: | ||||||
|         ldap_connection.simple_bind_s(ldap_url.who,ldap_url.cred) |         ldap_connection.simple_bind_s(ldap_url.who,ldap_url.cred) | ||||||
|     except ldap.INVALID_CREDENTIALS as e: |     except ldap.INVALID_CREDENTIALS as e: | ||||||
|         print 'Login to LDAP server failed: ', str(e) |         print('Login to LDAP server failed: ', str(e)) | ||||||
|         sys.exit(1) |         sys.exit(1) | ||||||
|     except ldap.SERVER_DOWN: |     except ldap.SERVER_DOWN: | ||||||
|         print 'LDAP server is down, going to retry.' |         print('LDAP server is down, going to retry.') | ||||||
|         time.sleep(5) |         time.sleep(5) | ||||||
|         continue |         continue | ||||||
|  |  | ||||||
|     # Commence the syncing |     # Commence the syncing | ||||||
|     print 'Commencing sync process' |     print('Commencing sync process') | ||||||
|     ldap_search = ldap_connection.syncrepl_search( |     ldap_search = ldap_connection.syncrepl_search( | ||||||
|       ldap_url.dn or '', |       ldap_url.dn or '', | ||||||
|       ldap_url.scope or ldap.SCOPE_SUBTREE, |       ldap_url.scope or ldap.SCOPE_SUBTREE, | ||||||
| @@ -177,6 +178,6 @@ while watcher_running: | |||||||
|     except Exception as e: |     except Exception as e: | ||||||
|         # Handle any exception |         # Handle any exception | ||||||
|         if watcher_running: |         if watcher_running: | ||||||
|             print 'Encountered a problem, going to retry. Error:', str(e) |             print('Encountered a problem, going to retry. Error:', str(e)) | ||||||
|             time.sleep(5) |             time.sleep(5) | ||||||
|         pass |         pass | ||||||
|   | |||||||
| @@ -1,10 +1,11 @@ | |||||||
|  | from __future__ import print_function | ||||||
| import ldap | import ldap | ||||||
| from getpass import getpass | from getpass import getpass | ||||||
|  |  | ||||||
| # Create LDAPObject instance | # Create LDAPObject instance | ||||||
| l = ldap.initialize('ldap://localhost:1389',trace_level=1) | l = ldap.initialize('ldap://localhost:1389',trace_level=1) | ||||||
|  |  | ||||||
| print 'Password:' | print('Password:') | ||||||
| cred = getpass() | cred = getpass() | ||||||
|  |  | ||||||
| try: | try: | ||||||
| @@ -15,7 +16,7 @@ try: | |||||||
|   # Try a bind to provoke failure if protocol version is not supported |   # Try a bind to provoke failure if protocol version is not supported | ||||||
|   l.bind_s('cn=root,dc=stroeder,dc=com',cred,ldap.AUTH_SIMPLE) |   l.bind_s('cn=root,dc=stroeder,dc=com',cred,ldap.AUTH_SIMPLE) | ||||||
|  |  | ||||||
|   print 'Using rename_s():' |   print('Using rename_s():') | ||||||
|  |  | ||||||
|   l.rename_s( |   l.rename_s( | ||||||
|     'uid=fred,ou=Unstructured testing tree,dc=stroeder,dc=com', |     'uid=fred,ou=Unstructured testing tree,dc=stroeder,dc=com', | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ See http://www.python-ldap.org for details. | |||||||
| Python compability note: | Python compability note: | ||||||
| Requires Python 2.3+ | Requires Python 2.3+ | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import ldap,ldap.resiter | import ldap,ldap.resiter | ||||||
|  |  | ||||||
| @@ -21,6 +22,6 @@ msgid = l.search('dc=stroeder,dc=de',ldap.SCOPE_SUBTREE,'(cn=m*)') | |||||||
|  |  | ||||||
| result_iter = l.allresults(msgid) | result_iter = l.allresults(msgid) | ||||||
| for result_type,result_list,result_msgid,result_serverctrls in result_iter: | for result_type,result_list,result_msgid,result_serverctrls in result_iter: | ||||||
|   print result_type,result_list,result_msgid,result_serverctrls |   print(result_type,result_list,result_msgid,result_serverctrls) | ||||||
|  |  | ||||||
| l.unbind_s() | l.unbind_s() | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| # For documentation, see comments in Module/LDAPObject.c and the | # For documentation, see comments in Module/LDAPObject.c and the | ||||||
| # ldap.sasl module documentation. | # ldap.sasl module documentation. | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import ldap,ldap.sasl | import ldap,ldap.sasl | ||||||
|  |  | ||||||
| @@ -60,7 +61,7 @@ for ldap_uri,sasl_mech,sasl_cb_value_dict in [ | |||||||
|   ), |   ), | ||||||
| ]: | ]: | ||||||
|   sasl_auth = ldap.sasl.sasl(sasl_cb_value_dict,sasl_mech) |   sasl_auth = ldap.sasl.sasl(sasl_cb_value_dict,sasl_mech) | ||||||
|   print 20*'*',sasl_auth.mech,20*'*' |   print(20*'*',sasl_auth.mech,20*'*') | ||||||
|   # Open the LDAP connection |   # Open the LDAP connection | ||||||
|   l = ldap.initialize(ldap_uri,trace_level=0) |   l = ldap.initialize(ldap_uri,trace_level=0) | ||||||
|   # Set protocol version to LDAPv3 to enable SASL bind! |   # Set protocol version to LDAPv3 to enable SASL bind! | ||||||
| @@ -68,15 +69,15 @@ for ldap_uri,sasl_mech,sasl_cb_value_dict in [ | |||||||
|   try: |   try: | ||||||
|     l.sasl_interactive_bind_s("", sasl_auth) |     l.sasl_interactive_bind_s("", sasl_auth) | ||||||
|   except ldap.LDAPError as e: |   except ldap.LDAPError as e: | ||||||
|     print 'Error using SASL mechanism',sasl_auth.mech,str(e) |     print('Error using SASL mechanism',sasl_auth.mech,str(e)) | ||||||
|   else: |   else: | ||||||
|     print 'Sucessfully bound using SASL mechanism:',sasl_auth.mech |     print('Sucessfully bound using SASL mechanism:',sasl_auth.mech) | ||||||
|     try: |     try: | ||||||
|       print 'Result of Who Am I? ext. op:',repr(l.whoami_s()) |       print('Result of Who Am I? ext. op:',repr(l.whoami_s())) | ||||||
|     except ldap.LDAPError as e: |     except ldap.LDAPError as e: | ||||||
|       print 'Error using SASL mechanism',sasl_auth.mech,str(e) |       print('Error using SASL mechanism',sasl_auth.mech,str(e)) | ||||||
|     try: |     try: | ||||||
|       print 'OPT_X_SASL_USERNAME',repr(l.get_option(ldap.OPT_X_SASL_USERNAME)) |       print('OPT_X_SASL_USERNAME',repr(l.get_option(ldap.OPT_X_SASL_USERNAME))) | ||||||
|     except AttributeError: |     except AttributeError: | ||||||
|       pass |       pass | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,3 +1,4 @@ | |||||||
|  | from __future__ import print_function | ||||||
| import sys,ldap,ldap.schema | import sys,ldap,ldap.schema | ||||||
|  |  | ||||||
| schema_attrs = ldap.schema.SCHEMA_ATTRS | schema_attrs = ldap.schema.SCHEMA_ATTRS | ||||||
| @@ -9,39 +10,39 @@ ldap._trace_level = 0 | |||||||
| subschemasubentry_dn,schema = ldap.schema.urlfetch(sys.argv[-1]) | subschemasubentry_dn,schema = ldap.schema.urlfetch(sys.argv[-1]) | ||||||
|  |  | ||||||
| if subschemasubentry_dn is None: | if subschemasubentry_dn is None: | ||||||
|   print 'No sub schema sub entry found!' |   print('No sub schema sub entry found!') | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| if schema.non_unique_oids: | if schema.non_unique_oids: | ||||||
|   print '*** Schema errors ***' |   print('*** Schema errors ***') | ||||||
|   print 'non-unique OIDs:\n','\r\n'.join(schema.non_unique_oids) |   print('non-unique OIDs:\n','\r\n'.join(schema.non_unique_oids)) | ||||||
|  |  | ||||||
| print '*** Schema from',repr(subschemasubentry_dn) | print('*** Schema from',repr(subschemasubentry_dn)) | ||||||
|  |  | ||||||
| # Display schema | # Display schema | ||||||
| for attr_type,schema_class in ldap.schema.SCHEMA_CLASS_MAPPING.items(): | for attr_type,schema_class in ldap.schema.SCHEMA_CLASS_MAPPING.items(): | ||||||
|   print '*'*20,attr_type,'*'*20 |   print('*'*20,attr_type,'*'*20) | ||||||
|   for element_id in schema.listall(schema_class): |   for element_id in schema.listall(schema_class): | ||||||
|     se_orig = schema.get_obj(schema_class,element_id) |     se_orig = schema.get_obj(schema_class,element_id) | ||||||
|     print attr_type,str(se_orig) |     print(attr_type,str(se_orig)) | ||||||
| print '*** Testing object class inetOrgPerson ***' | print('*** Testing object class inetOrgPerson ***') | ||||||
|  |  | ||||||
| drink = schema.get_obj(ldap.schema.AttributeType,'favouriteDrink') | drink = schema.get_obj(ldap.schema.AttributeType,'favouriteDrink') | ||||||
| if not drink is None: | if not drink is None: | ||||||
|   print '*** drink ***' |   print('*** drink ***') | ||||||
|   print 'drink.names',repr(drink.names) |   print('drink.names',repr(drink.names)) | ||||||
|   print 'drink.collective',repr(drink.collective) |   print('drink.collective',repr(drink.collective)) | ||||||
|  |  | ||||||
| inetOrgPerson = schema.get_obj(ldap.schema.ObjectClass,'inetOrgPerson') | inetOrgPerson = schema.get_obj(ldap.schema.ObjectClass,'inetOrgPerson') | ||||||
| if not inetOrgPerson is None: | if not inetOrgPerson is None: | ||||||
|   print inetOrgPerson.must,inetOrgPerson.may |   print(inetOrgPerson.must,inetOrgPerson.may) | ||||||
|  |  | ||||||
| print '*** person,organizationalPerson,inetOrgPerson ***' | print('*** person,organizationalPerson,inetOrgPerson ***') | ||||||
| try: | try: | ||||||
|   print schema.attribute_types( |   print(schema.attribute_types() | ||||||
|     ['person','organizationalPerson','inetOrgPerson'] |     ['person','organizationalPerson','inetOrgPerson'] | ||||||
|   ) |   ) | ||||||
|   print schema.attribute_types( |   print(schema.attribute_types() | ||||||
|     ['person','organizationalPerson','inetOrgPerson'], |     ['person','organizationalPerson','inetOrgPerson'], | ||||||
|     attr_type_filter = [ |     attr_type_filter = [ | ||||||
|       ('no_user_mod',[0]), |       ('no_user_mod',[0]), | ||||||
| @@ -49,15 +50,15 @@ try: | |||||||
|     ]   |     ]   | ||||||
|   ) |   ) | ||||||
| except KeyError as e: | except KeyError as e: | ||||||
|   print '***KeyError',str(e) |   print('***KeyError',str(e)) | ||||||
|  |  | ||||||
|  |  | ||||||
| schema.ldap_entry() | schema.ldap_entry() | ||||||
|  |  | ||||||
| print str(schema.get_obj(ldap.schema.MatchingRule,'2.5.13.0')) | print(str(schema.get_obj(ldap.schema.MatchingRule,'2.5.13.0'))) | ||||||
| print str(schema.get_obj(ldap.schema.MatchingRuleUse,'2.5.13.0')) | print(str(schema.get_obj(ldap.schema.MatchingRuleUse,'2.5.13.0'))) | ||||||
|  |  | ||||||
| print str(schema.get_obj(ldap.schema.AttributeType,'name')) | print(str(schema.get_obj(ldap.schema.AttributeType,'name'))) | ||||||
| print str(schema.get_inheritedobj(ldap.schema.AttributeType,'cn',['syntax','equality','substr','ordering'])) | print(str(schema.get_inheritedobj(ldap.schema.AttributeType,'cn',['syntax','equality','substr','ordering']))) | ||||||
|  |  | ||||||
| must_attr,may_attr = schema.attribute_types(['person','organizationalPerson','inetOrgPerson'],raise_keyerror=0) | must_attr,may_attr = schema.attribute_types(['person','organizationalPerson','inetOrgPerson'],raise_keyerror=0) | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ of a given server | |||||||
|  |  | ||||||
| Usage: schema_oc_tree.py [--html] [LDAP URL] | Usage: schema_oc_tree.py [--html] [LDAP URL] | ||||||
| """ | """ | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import sys,getopt,ldap,ldap.schema | import sys,getopt,ldap,ldap.schema | ||||||
|  |  | ||||||
| @@ -14,11 +15,11 @@ def PrintSchemaTree(schema,se_class,se_tree,se_oid,level): | |||||||
|   """ASCII text output for console""" |   """ASCII text output for console""" | ||||||
|   se_obj = schema.get_obj(se_class,se_oid) |   se_obj = schema.get_obj(se_class,se_oid) | ||||||
|   if se_obj!=None: |   if se_obj!=None: | ||||||
|     print '|    '*(level-1)+'+---'*(level>0), \ |     print('|    '*(level-1)+'+---'*(level>0), \) | ||||||
|           ', '.join(se_obj.names), \ |           ', '.join(se_obj.names), \ | ||||||
|           '(%s)' % se_obj.oid |           '(%s)' % se_obj.oid | ||||||
|   for sub_se_oid in se_tree[se_oid]: |   for sub_se_oid in se_tree[se_oid]: | ||||||
|     print '|    '*(level+1) |     print('|    '*(level+1)) | ||||||
|     PrintSchemaTree(schema,se_class,se_tree,sub_se_oid,level+1) |     PrintSchemaTree(schema,se_class,se_tree,sub_se_oid,level+1) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -26,17 +27,17 @@ def HTMLSchemaTree(schema,se_class,se_tree,se_oid,level): | |||||||
|   """HTML output for browser""" |   """HTML output for browser""" | ||||||
|   se_obj = schema.get_obj(se_class,se_oid) |   se_obj = schema.get_obj(se_class,se_oid) | ||||||
|   if se_obj!=None: |   if se_obj!=None: | ||||||
|     print """ |     print(""" | ||||||
|     <dt><strong>%s (%s)</strong></dt> |     <dt><strong>%s (%s)</strong></dt> | ||||||
|     <dd> |     <dd> | ||||||
|       %s |       %s | ||||||
|     """ % (', '.join(se_obj.names),se_obj.oid,se_obj.desc) |     """ % (', '.join(se_obj.names),se_obj.oid,se_obj.desc)) | ||||||
|   if se_tree[se_oid]: |   if se_tree[se_oid]: | ||||||
|     print '<dl>' |     print('<dl>') | ||||||
|     for sub_se_oid in se_tree[se_oid]: |     for sub_se_oid in se_tree[se_oid]: | ||||||
|       HTMLSchemaTree(schema,se_class,se_tree,sub_se_oid,level+1) |       HTMLSchemaTree(schema,se_class,se_tree,sub_se_oid,level+1) | ||||||
|     print '</dl>' |     print('</dl>') | ||||||
|   print '</dd>' |   print('</dd>') | ||||||
|  |  | ||||||
|  |  | ||||||
| ldap.set_option(ldap.OPT_DEBUG_LEVEL,0) | ldap.set_option(ldap.OPT_DEBUG_LEVEL,0) | ||||||
| @@ -46,13 +47,13 @@ ldap._trace_level = 0 | |||||||
| subschemasubentry_dn,schema = ldap.schema.urlfetch(sys.argv[-1],ldap.trace_level) | subschemasubentry_dn,schema = ldap.schema.urlfetch(sys.argv[-1],ldap.trace_level) | ||||||
|  |  | ||||||
| if subschemasubentry_dn is None: | if subschemasubentry_dn is None: | ||||||
|   print 'No sub schema sub entry found!' |   print('No sub schema sub entry found!') | ||||||
|   sys.exit(1) |   sys.exit(1) | ||||||
|  |  | ||||||
| try: | try: | ||||||
|   options,args=getopt.getopt(sys.argv[1:],'',['html']) |   options,args=getopt.getopt(sys.argv[1:],'',['html']) | ||||||
| except getopt.error: | except getopt.error: | ||||||
|   print 'Error: %s\nUsage: schema_oc_tree.py [--html] [LDAP URL]' |   print('Error: %s\nUsage: schema_oc_tree.py [--html] [LDAP URL]') | ||||||
|  |  | ||||||
| html_output = options and options[0][0]=='--html' | html_output = options and options[0][0]=='--html' | ||||||
|  |  | ||||||
| @@ -60,41 +61,41 @@ oc_tree = schema.tree(ldap.schema.ObjectClass) | |||||||
| at_tree = schema.tree(ldap.schema.AttributeType) | at_tree = schema.tree(ldap.schema.AttributeType) | ||||||
|  |  | ||||||
| #for k,v in oc_tree.items(): | #for k,v in oc_tree.items(): | ||||||
| #  print k,'->',v | #  print(k,'->',v) | ||||||
| #for k,v in at_tree.items(): | #for k,v in at_tree.items(): | ||||||
| #  print k,'->',v | #  print(k,'->',v) | ||||||
|  |  | ||||||
| if html_output: | if html_output: | ||||||
|  |  | ||||||
|   print """<html> |   print("""<html> | ||||||
| <head> | <head> | ||||||
|   <title>Object class tree</title> |   <title>Object class tree</title> | ||||||
| </head> | </head> | ||||||
| <body bgcolor="#ffffff"> | <body bgcolor="#ffffff"> | ||||||
| <h1>Object class tree</h1> | <h1>Object class tree</h1> | ||||||
| <dl> | <dl> | ||||||
| """ | """) | ||||||
|   HTMLSchemaTree(schema,ldap.schema.ObjectClass,oc_tree,'2.5.6.0',0) |   HTMLSchemaTree(schema,ldap.schema.ObjectClass,oc_tree,'2.5.6.0',0) | ||||||
|   print """</dl> |   print("""</dl> | ||||||
| <h1>Attribute type tree</h1> | <h1>Attribute type tree</h1> | ||||||
| <dl> | <dl> | ||||||
| """ | """) | ||||||
|   for a in schema.listall(ldap.schema.AttributeType): |   for a in schema.listall(ldap.schema.AttributeType): | ||||||
|     if at_tree[a]: |     if at_tree[a]: | ||||||
|       HTMLSchemaTree(schema,ldap.schema.AttributeType,at_tree,a,0) |       HTMLSchemaTree(schema,ldap.schema.AttributeType,at_tree,a,0) | ||||||
|       print |       print | ||||||
|  |  | ||||||
|   print """</dl> |   print("""</dl> | ||||||
| </body> | </body> | ||||||
| </html> | </html> | ||||||
| """ | """) | ||||||
|  |  | ||||||
| else: | else: | ||||||
|  |  | ||||||
|   print '*** Object class tree ***\n' |   print('*** Object class tree ***\n') | ||||||
|   print |   print | ||||||
|   PrintSchemaTree(schema,ldap.schema.ObjectClass,oc_tree,'2.5.6.0',0) |   PrintSchemaTree(schema,ldap.schema.ObjectClass,oc_tree,'2.5.6.0',0) | ||||||
|  |  | ||||||
|   print '\n*** Attribute types tree ***\n' |   print('\n*** Attribute types tree ***\n') | ||||||
|   PrintSchemaTree(schema,ldap.schema.AttributeType,at_tree,'_',0) |   PrintSchemaTree(schema,ldap.schema.AttributeType,at_tree,'_',0) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,3 +1,4 @@ | |||||||
|  | from __future__ import print_function | ||||||
| import sys,getpass | import sys,getpass | ||||||
| import ldap | import ldap | ||||||
|  |  | ||||||
| @@ -14,7 +15,7 @@ l.simple_bind_s(login_dn, login_pw) | |||||||
|  |  | ||||||
| try: | try: | ||||||
|     dn = "ou=CSEE,o=UQ,c=AU" |     dn = "ou=CSEE,o=UQ,c=AU" | ||||||
|     print "Adding", repr(dn) |     print("Adding", repr(dn)) | ||||||
|     l.add_s(dn, |     l.add_s(dn, | ||||||
| 	 [ | 	 [ | ||||||
| 	    ("objectclass",["organizationalUnit"]), | 	    ("objectclass",["organizationalUnit"]), | ||||||
| @@ -32,7 +33,7 @@ except _ldap.LDAPError: | |||||||
| # | # | ||||||
|  |  | ||||||
| dn = "cn=David Leonard,ou=CSEE,o=UQ,c=AU" | dn = "cn=David Leonard,ou=CSEE,o=UQ,c=AU" | ||||||
| print "Updating", repr(dn) | print("Updating", repr(dn)) | ||||||
|  |  | ||||||
| try: | try: | ||||||
| 	l.delete_s(dn) | 	l.delete_s(dn) | ||||||
| @@ -100,7 +101,7 @@ res = l.search_s( | |||||||
| 	_ldap.SCOPE_SUBTREE,  | 	_ldap.SCOPE_SUBTREE,  | ||||||
| 	"objectclass=*", | 	"objectclass=*", | ||||||
|       ) |       ) | ||||||
| print res | print(res) | ||||||
|  |  | ||||||
| l.unbind() | l.unbind() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ | |||||||
| # | # | ||||||
| # simple LDAP server browsing example | # simple LDAP server browsing example | ||||||
| # | # | ||||||
|  | from __future__ import print_function | ||||||
|  |  | ||||||
| import ldap | import ldap | ||||||
| import string | import string | ||||||
| @@ -11,7 +12,7 @@ from traceback import print_exc | |||||||
| url = "ldap://ldap.openldap.org/" | url = "ldap://ldap.openldap.org/" | ||||||
| dn = "dc=openldap,dc=org" | dn = "dc=openldap,dc=org" | ||||||
|  |  | ||||||
| print "Connecting to", url | print("Connecting to", url) | ||||||
|  |  | ||||||
| l = ldap.initialize(url) | l = ldap.initialize(url) | ||||||
| l.bind_s("", "", ldap.AUTH_SIMPLE); | l.bind_s("", "", ldap.AUTH_SIMPLE); | ||||||
| @@ -31,18 +32,18 @@ while 1: | |||||||
|     try: |     try: | ||||||
|  |  | ||||||
| 	if cmd == "?": | 	if cmd == "?": | ||||||
| 		print  "cd <dn>	- change DN to <dn>" | 		print( "cd <dn>	- change DN to <dn>") | ||||||
| 		print  "cd <n>	- change DN to number <n> of last 'ls'" | 		print( "cd <n>	- change DN to number <n> of last 'ls'") | ||||||
| 		print  "cd -	- change to previous DN" | 		print( "cd -	- change to previous DN") | ||||||
| 		print  "cd ..	- change to one-level higher DN" | 		print( "cd ..	- change to one-level higher DN") | ||||||
| 		print  "cd 	- change to root DN" | 		print( "cd 	- change to root DN") | ||||||
| 		print  "ls	- list children of crrent DN" | 		print( "ls	- list children of crrent DN") | ||||||
| 		print  ".	- show attributes of current DN" | 		print( ".	- show attributes of current DN") | ||||||
| 		print  "/<expr>	- list descendents matching filter <expr>" | 		print( "/<expr>	- list descendents matching filter <expr>") | ||||||
| 		print  "?	- show this help" | 		print( "?	- show this help") | ||||||
|  |  | ||||||
| 	elif cmd == "ls": | 	elif cmd == "ls": | ||||||
| 		print "Children of", `dn`, ":" | 		print("Children of", `dn`, ":") | ||||||
| 		dnlist = [] | 		dnlist = [] | ||||||
| 		# | 		# | ||||||
| 		# List the children at one level down from the current dn | 		# List the children at one level down from the current dn | ||||||
| @@ -59,7 +60,7 @@ while 1: | |||||||
| 				shortname = name[:-len(dn)-2]+" +" | 				shortname = name[:-len(dn)-2]+" +" | ||||||
| 			else: | 			else: | ||||||
| 				shortname = name | 				shortname = name | ||||||
| 			print " %3d. %s" % (len(dnlist), shortname) | 			print(" %3d. %s" % (len(dnlist), shortname)) | ||||||
| 			dnlist.append(name) | 			dnlist.append(name) | ||||||
|  |  | ||||||
| 	elif cmd == "cd": | 	elif cmd == "cd": | ||||||
| @@ -80,7 +81,7 @@ while 1: | |||||||
| 			        godn = arg | 			        godn = arg | ||||||
|                         else: |                         else: | ||||||
| 			        if dnlist is None: | 			        if dnlist is None: | ||||||
| 				        print "do an ls first" | 				        print("do an ls first") | ||||||
|                                 else: |                                 else: | ||||||
| 			                godn = dnlist[i] | 			                godn = dnlist[i] | ||||||
| 		                lastdn = dn | 		                lastdn = dn | ||||||
| @@ -94,10 +95,10 @@ while 1: | |||||||
| 		# No attributes are listed, so the default is for | 		# No attributes are listed, so the default is for | ||||||
| 		# the client to receive all attributes on the DN. | 		# the client to receive all attributes on the DN. | ||||||
| 		# | 		# | ||||||
| 		print "Attributes of", `dn`, ":" | 		print("Attributes of", `dn`, ":") | ||||||
| 		for name,attrs in l.search_s(dn, ldap.SCOPE_BASE, | 		for name,attrs in l.search_s(dn, ldap.SCOPE_BASE, | ||||||
| 		    "objectclass=*"): | 		    "objectclass=*"): | ||||||
| 			print "  %-24s" % name | 			print("  %-24s" % name) | ||||||
| 			for k,vals in attrs.items(): | 			for k,vals in attrs.items(): | ||||||
| 			    for v in vals: | 			    for v in vals: | ||||||
| 				if len(v) > 200:  | 				if len(v) > 200:  | ||||||
| @@ -105,7 +106,7 @@ while 1: | |||||||
| 						("... (%d bytes)" % len(v)) | 						("... (%d bytes)" % len(v)) | ||||||
| 				else: | 				else: | ||||||
| 					v = `v` | 					v = `v` | ||||||
| 				print "      %-12s: %s" % (k, v) | 				print("      %-12s: %s" % (k, v)) | ||||||
|  |  | ||||||
| 	elif cmd.startswith("/"): | 	elif cmd.startswith("/"): | ||||||
| 		# | 		# | ||||||
| @@ -115,13 +116,13 @@ while 1: | |||||||
| 		# that we're not interested in them. | 		# that we're not interested in them. | ||||||
| 		# | 		# | ||||||
| 		expr = cmd[1:] | 		expr = cmd[1:] | ||||||
| 		print "Descendents matching filter", `expr`, ":" | 		print("Descendents matching filter", `expr`, ":") | ||||||
| 		for name,attrs in l.search_s(dn, ldap.SCOPE_SUBTREE, | 		for name,attrs in l.search_s(dn, ldap.SCOPE_SUBTREE, | ||||||
| 		    expr, []): | 		    expr, []): | ||||||
| 			print "  %24s", name | 			print("  %24s", name) | ||||||
|  |  | ||||||
| 	else: | 	else: | ||||||
| 		print "unknown command - try '?' for help" | 		print("unknown command - try '?' for help") | ||||||
|  |  | ||||||
|     except: |     except: | ||||||
| 	print_exc() | 	print_exc() | ||||||
|   | |||||||
| @@ -49,4 +49,4 @@ processing them in a for-loop. | |||||||
|   for res_type,res_data,res_msgid,res_controls in l.allresults(msg_id): |   for res_type,res_data,res_msgid,res_controls in l.allresults(msg_id): | ||||||
|     for dn,entry in res_data: |     for dn,entry in res_data: | ||||||
|       # process dn and entry |       # process dn and entry | ||||||
|       print dn,entry['objectClass'] |       print(dn,entry['objectClass']) | ||||||
|   | |||||||
| @@ -1120,6 +1120,6 @@ subtree search. | |||||||
| [('cn=Fred Feuerstein,ou=Testing,dc=stroeder,dc=de', {'cn': ['Fred Feuerstein']})] | [('cn=Fred Feuerstein,ou=Testing,dc=stroeder,dc=de', {'cn': ['Fred Feuerstein']})] | ||||||
| >>> r = l.search_s('ou=Testing,dc=stroeder,dc=de',ldap.SCOPE_SUBTREE,'(objectClass=*)',['cn','mail']) | >>> r = l.search_s('ou=Testing,dc=stroeder,dc=de',ldap.SCOPE_SUBTREE,'(objectClass=*)',['cn','mail']) | ||||||
| >>> for dn,entry in r: | >>> for dn,entry in r: | ||||||
| >>>   print 'Processing',repr(dn) | >>>   print('Processing',repr(dn)) | ||||||
| >>>   handle_ldap_entry(entry) | >>>   handle_ldap_entry(entry) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -128,7 +128,7 @@ parse_ldap_url_tests = [ | |||||||
| ] | ] | ||||||
|  |  | ||||||
| for ldap_url_str,test_ldap_url_obj in parse_ldap_url_tests: | for ldap_url_str,test_ldap_url_obj in parse_ldap_url_tests: | ||||||
| #  print '\nTesting LDAP URL:',repr(ldap_url) | #  print('\nTesting LDAP URL:',repr(ldap_url)) | ||||||
|   ldap_url_obj = LDAPUrl(ldapUrl=ldap_url_str) |   ldap_url_obj = LDAPUrl(ldapUrl=ldap_url_str) | ||||||
|   print('#'*72) |   print('#'*72) | ||||||
|   print(test_ldap_url_obj.unparse()) |   print(test_ldap_url_obj.unparse()) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Raphaël Barrois
					Raphaël Barrois