diff options
author | Jan Cholasta <jcholast@redhat.com> | 2011-06-08 14:39:50 +0200 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2011-06-13 12:59:22 +0200 |
commit | d2b483cbb3ca15a68115cf32cfaf89572259914e (patch) | |
tree | 1661f3021e3b0b3cc54f75af68f044171f363d3e | |
parent | 645e55651e866f74b76108fe298526daaffb18ce (diff) | |
download | freeipa-d2b483cbb3ca15a68115cf32cfaf89572259914e.tar.gz freeipa-d2b483cbb3ca15a68115cf32cfaf89572259914e.tar.xz freeipa-d2b483cbb3ca15a68115cf32cfaf89572259914e.zip |
Fix directory manager password validation in ipa-nis-manage.
ticket 1283, 1284
-rwxr-xr-x | install/tools/ipa-nis-manage | 10 | ||||
-rw-r--r-- | ipaserver/install/installutils.py | 6 |
2 files changed, 13 insertions, 3 deletions
diff --git a/install/tools/ipa-nis-manage b/install/tools/ipa-nis-manage index 69db06ab8..2c0936b49 100755 --- a/install/tools/ipa-nis-manage +++ b/install/tools/ipa-nis-manage @@ -62,7 +62,7 @@ def get_dirman_password(): """Prompt the user for the Directory Manager password and verify its correctness. """ - password = installutils.read_password("Directory Manager", confirm=False, validate=False) + password = installutils.read_password("Directory Manager", confirm=False, validate=False, retry=False) return password @@ -101,11 +101,17 @@ def main(): dirman_password = "" if options.password: - pw = ipautil.template_file(options.password, []) + try: + pw = ipautil.template_file(options.password, []) + except IOError: + sys.exit("File \"%s\" not found or not readable" % options.password) dirman_password = pw.strip() else: dirman_password = get_dirman_password() + if not dirman_password: + sys.exit("No password supplied") + api.bootstrap(context='cli', debug=options.debug) api.finalize() diff --git a/ipaserver/install/installutils.py b/ipaserver/install/installutils.py index 8d93a60b3..f5a862599 100644 --- a/ipaserver/install/installutils.py +++ b/ipaserver/install/installutils.py @@ -288,15 +288,18 @@ def get_password(prompt): else: return sys.stdin.readline().rstrip() -def read_password(user, confirm=True, validate=True): +def read_password(user, confirm=True, validate=True, retry=True): correct = False pwd = "" while not correct: + if not retry: + correct = True pwd = get_password(user + " password: ") if not pwd: continue if validate and len(pwd) < 8: print "Password must be at least 8 characters long" + pwd = "" continue if not confirm: correct = True @@ -305,6 +308,7 @@ def read_password(user, confirm=True, validate=True): if pwd != pwd_confirm: print "Password mismatch!" print "" + pwd = "" else: correct = True print "" |