X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=userdir_ldap.py;h=f60b715b858476d8d5642dec55f00dd1c8d392a8;hb=9e1e7b0639b1265bf39acd330122f40123451c56;hp=d3a5628f69c2ede685769cf1e90605476ae942db;hpb=6cbc7fa975621561fa281bdc552843192b142d59;p=mirror%2Fuserdir-ldap.git diff --git a/userdir_ldap.py b/userdir_ldap.py index d3a5628..f60b715 100644 --- a/userdir_ldap.py +++ b/userdir_ldap.py @@ -98,12 +98,42 @@ def getpass(prompt = "Password: "): new[3] = new[3] & ~termios.ECHO; # lflags try: termios.tcsetattr(fd, termios.TCSADRAIN, new); - passwd = raw_input(prompt); + try: + passwd = raw_input(prompt); + except KeyboardInterrupt: + termios.tcsetattr(fd, termios.TCSADRAIN, old); + print + sys.exit(0) + except EOFError: + passwd = "" finally: termios.tcsetattr(fd, termios.TCSADRAIN, old); print; return passwd; +def passwdAccessLDAP(LDAPServer, BaseDn, AdminUser): + """ + Ask for the AdminUser's password and connect to the LDAP server. + Returns the connection handle. + """ + print "Accessing LDAP directory as '" + AdminUser + "'"; + while (1): + Password = getpass(AdminUser + "'s password: "); + + if len(Password) == 0: + sys.exit(0) + + l = ldap.open(LDAPServer); + UserDn = "uid=" + AdminUser + "," + BaseDn; + + # Connect to the ldap server + try: + l.simple_bind_s(UserDn,Password); + except ldap.INVALID_CREDENTIALS: + continue + break + return l + # Split up a name into multiple components. This tries to best guess how # to split up a name def NameSplit(Name):