From 1eacad68e7b324be37f4775b6a721861b2ed6f7e Mon Sep 17 00:00:00 2001 From: Joe Presbrey Date: Tue, 24 Apr 2007 22:35:46 +0000 Subject: [PATCH] use nicepass for batch signup passwords git-svn-id: svn://presbrey.mit.edu/sql/web/dev@130 a142d4bd-2cfb-0310-9673-cb33a7e74f58 --- batch/signup.php | 7 ++++--- bin/nicepass.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) create mode 100755 bin/nicepass.py diff --git a/batch/signup.php b/batch/signup.php index 5004129..9978522 100755 --- a/batch/signup.php +++ b/batch/signup.php @@ -8,6 +8,8 @@ require_once('batch.inc.php'); $myUsername = $argv[1]; $myUID = $argv[3]; +if ($myUID<100) exit('bad UID'); + $hescmd = "hesinfo $myUsername passwd"; $hesinfo = explode(':', trim(exec($hescmd))); if (count($hesinfo)>=4) { @@ -17,9 +19,8 @@ if (count($hesinfo)>=4) { $myName = $myUsername; } $myEmail = $myUsername.'@mit.edu'; -$myPassword = substr(md5(uniqid()),0,8); - -if ($myUID<100) exit('bad UID'); +$myPassword = trim(exec(dirname(__FILE__).'/../bin/nicepass.py')); +if (empty($myPassword)) exit('bad Password'); $Login = new Login($myUsername); if (!$Login->exists() && !empty($myUsername)) { diff --git a/bin/nicepass.py b/bin/nicepass.py new file mode 100755 index 0000000..18219b5 --- /dev/null +++ b/bin/nicepass.py @@ -0,0 +1,44 @@ +#!/usr/bin/python + +def nicepass(alpha=6,numeric=2): + """ + returns a human-readble password (say rol86din instead of + a difficult to remember K8Yn9muL ) + """ + import string + import random + vowels = ['a','e','i','o','u'] + consonants = [a for a in string.ascii_lowercase if a not in vowels] + digits = string.digits + + def a_part(slen): + ret = '' + for i in range(slen): + if i%2 ==0: + randid = random.randint(0,20) #number of consonants + ret += consonants[randid] + else: + randid = random.randint(0,4) #number of vowels + ret += vowels[randid] + return ret + + def n_part(slen): + ret = '' + for i in range(slen): + randid = random.randint(0,9) #number of digits + ret += digits[randid] + return ret + + fpl = alpha/2 + if alpha % 2 : + fpl = int(alpha/2) + 1 + lpl = alpha - fpl + + start = a_part(fpl) + mid = n_part(numeric) + end = a_part(lpl) + + return "%s%s%s" % (start,mid,end) + +if __name__ == "__main__": + print nicepass() -- 2.45.0