X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=password-qualify-check;h=8853f4618a3d2a4ae8071df6b0f882832b823be2;hb=c1839b2570ddc88322ba942b039b8700bcfde4d5;hp=45fd18da1f0bdca17d3cfce54d660cc80a269310;hpb=ea0b51c7e8f8943cbdd16fb44bf2cda9c555d464;p=mirror%2Fuserdir-ldap-cgi.git diff --git a/password-qualify-check b/password-qualify-check index 45fd18d..8853f46 100755 --- a/password-qualify-check +++ b/password-qualify-check @@ -6,7 +6,11 @@ # Copyright (c) 2008 Peter Palfrader -import crack, sys, tempfile, os +import sys, tempfile, os +try: + import crack as cracklib +except ImportError: + import cracklib def cleanup(dir): if not dir.startswith('/tmp/pwcheck-'): @@ -20,6 +24,21 @@ def cleanup(dir): +crack_mkdict = None +crack_packer = None +for b in "/usr/sbin/crack_mkdict /usr/sbin/cracklib-format".split(' '): + if os.path.exists(b): + crack_mkdict = b + break +for b in "/usr/sbin/crack_packer /usr/sbin/cracklib-packer".split(' '): + if os.path.exists(b): + crack_packer = b + break +if crack_mkdict is None or crack_packer is None: + print "Could not find crack formater or packer" + sys.exit(1) + + newpass = sys.stdin.readline().strip() oldpass = sys.stdin.readline().strip() ldapwords = map( lambda x: x.strip(), sys.stdin.readlines()) @@ -28,11 +47,11 @@ if oldpass == "": oldpass = None -crack.min_length = 11 +cracklib.min_length = 11 # check against the default dictionary try: - crack.VeryFascistCheck(newpass, oldpass) + cracklib.VeryFascistCheck(newpass, oldpass, '/var/cache/cracklib/cracklib_dict') except ValueError, e: print e sys.exit(1) @@ -49,19 +68,19 @@ if len(ldapwords) > 0: F.write(w1[0]+w2+"\n"); F.close() - r = os.system("/usr/sbin/crack_mkdict "+tmpdir+"/wordlist > "+tmpdir+"/wordlist-cleaned") + r = os.system(crack_mkdict+" "+tmpdir+"/wordlist > "+tmpdir+"/wordlist-cleaned") if r != 0: print "crack_mkdict returned non-zero exit status %d."%(r) cleanup(tmpdir) sys.exit(1) - r = os.system("/usr/sbin/crack_packer "+tmpdir+"/dict < "+tmpdir+"/wordlist-cleaned > /dev/null") + r = os.system(crack_packer+" "+tmpdir+"/dict < "+tmpdir+"/wordlist-cleaned > /dev/null") if r != 0: print "crack_packer returned non-zero exit status %d."%(r) cleanup(tmpdir) sys.exit(1) try: - crack.VeryFascistCheck(newpass, None, tmpdir+"/dict") + cracklib.VeryFascistCheck(newpass, None, tmpdir+"/dict") except ValueError, e: print "ldap data based check: "+str(e) cleanup(tmpdir)