Patch by Thomas Viehmann: remove code copy of getpass
authorMartin Zobel-Helas <zobel@debian.org>
Sun, 14 Dec 2008 01:12:28 +0000 (02:12 +0100)
committerMartin Zobel-Helas <zobel@debian.org>
Sun, 14 Dec 2008 01:12:28 +0000 (02:12 +0100)
debian/changelog
ud-info
userdir_ldap.py

index 64fb068..3ab4ed0 100644 (file)
@@ -6,6 +6,9 @@ userdir-ldap (0.3.54) unstable; urgency=low
     only boolean values are acceptable
   * ud-generate: Add IPv6 addresses to debianhosts 
     (Patch by Thomas Viehmann)
+  * ud-info, userdir_ldap.py: remove function getpass and use the one 
+    from python standard library getpass
+    (Patch by Thomas Viehmann)
 
  --
 
diff --git a/ud-info b/ud-info
index 73e040d..c5a45ea 100755 (executable)
--- a/ud-info
+++ b/ud-info
 #          restricted variables.
 
 #   Copyright (c) 1999-2001  Jason Gunthorpe <jgg@debian.org>
-#   Copyright (c) 2004-2005,7  Joey Schulze <joey@infodrom.org>
+#   Copyright (c) 2004-2005,7,8  Joey Schulze <joey@infodrom.org>
 #   Copyright (c) 2001-2006  Ryan Murray <rmurray@debian.org>
 #   Copyright (c) 2008 Peter Palfrader <peter@palfrader.org>
 #   Copyright (c) 2008 Martin Zobel-Helas <zobel@debian.org>
 #   Copyright (c) 2008 Marc 'HE' Brockschmidt <he@debian.org>
 #   Copyright (c) 2008 Mark Hymers <mhy@debian.org>
-#   Copyright (c) 2008 Joey Schulze <joey@infodrom.org>
+#   Copyright (c) 2008 Thomas Viehmann <tv@beamnet.de>
 #
 #   This program is free software; you can redistribute it and/or modify
 #   it under the terms of the GNU General Public License as published by
@@ -40,7 +40,7 @@
 #   along with this program; if not, write to the Free Software
 #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-import time, os, pwd, sys, getopt, ldap, crypt, readline, copy;
+import time, os, pwd, sys, getopt, ldap, crypt, readline, copy, getpass
 from userdir_ldap import *;
 
 RootMode = 0;
@@ -346,17 +346,21 @@ if (BindUser != User):
       print "as '" + BindUser + "'";
 else:
    print;
-if (BindUser != ""):
-   Password = getpass(BindUser + "'s password: ");
 
 # Connect to the ldap server
 l = connectLDAP()
-UserDn = "uid=" + BindUser + "," + BaseDn;
 if (BindUser != ""):
-   l.simple_bind_s(UserDn,Password);
+   Password = getpass.getpass(BindUser + "'s password: ")
+   UserDn = "uid=" + BindUser + "," + BaseDn
 else:
-   l.simple_bind_s("","");
-UserDn = "uid=" + User + "," + BaseDn;
+   Password = ""
+   UserDn = ""
+try:
+   l.simple_bind_s(UserDn,Password)
+except ldap.LDAPError,e:
+   print >> sys.stderr, "LDAP error:", e.args[0]['desc']
+   print >> sys.stderr, "           ", e.args[0]['info']
+   sys.exit(1)
 
 # Enable changing of supplementary gid's
 if (RootMode == 1):
@@ -417,8 +421,8 @@ while(1):
       print "contain spaces and other special characters. No checking is done on the";
       print "strength of the passwords so pick good ones please!";
 
-      Pass1 = getpass(User + "'s new password: ");
-      Pass2 = getpass(User + "'s new password again: ");
+      Pass1 = getpass.getpass(User + "'s new password: ")
+      Pass2 = getpass.getpass(User + "'s new password again: ")
       if Pass1 != Pass2:
          print "Passwords did not match";
          raw_input("Press a key");
index babfce0..d1881f7 100644 (file)
@@ -2,6 +2,7 @@
 #   Copyright (c) 2001-2003  Ryan Murray <rmurray@debian.org>
 #   Copyright (c) 2004-2005  Joey Schulze <joey@infodrom.org>
 #   Copyright (c) 2008 Peter Palfrader <peter@palfrader.org>
+#   Copyright (c) 2008 Thomas Viehmann <tv@beamnet.de>
 #
 #   This program is free software; you can redistribute it and/or modify
 #   it under the terms of the GNU General Public License as published by
@@ -18,7 +19,7 @@
 #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 # Some routines and configuration that are used by the ldap progams
-import termios, re, imp, ldap, sys, crypt, rfc822, pwd, os;
+import termios, re, imp, ldap, sys, crypt, rfc822, pwd, os, getpass
 import userdir_gpg
 import hmac
 import sha as sha1_module
@@ -117,28 +118,6 @@ def connectLDAP(server = None):
       l.start_tls_s();
    return l;
 
-# Function to prompt for a password 
-def getpass(prompt = "Password: "):
-   import termios, sys;
-   fd = sys.stdin.fileno();
-   old = termios.tcgetattr(fd);
-   new = termios.tcgetattr(fd);
-   new[3] = new[3] & ~termios.ECHO;          # lflags
-   try:
-      termios.tcsetattr(fd, termios.TCSADRAIN, new);
-      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(BaseDn, AdminUser):
    """
    Ask for the AdminUser's password and connect to the LDAP server.
@@ -146,7 +125,7 @@ def passwdAccessLDAP(BaseDn, AdminUser):
    """
    print "Accessing LDAP directory as '" + AdminUser + "'";
    while (1):
-      Password = getpass(AdminUser + "'s password: ");
+      Password = getpass.getpass(AdminUser + "'s password: ")
 
       if len(Password) == 0:
          sys.exit(0)