Commit 29d13fec authored by Rafael Monnerat's avatar Rafael Monnerat

slapos_erp5: Custom script from erp5_base in order to generate 'harder' password

This is required to comply with erp5_authentication_policy
parent fe39eebe
"""
This script generates a human readable random
password in the form 'word'+digits+'word'.
from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/410076
parameters: number of 'characters' , number of 'digits'
Pradeep Kishore Gowda <pradeep at btbytes.com >
License : GPL
Date : 2005.April.15
Revision 1.2
ChangeLog:
1.1 - fixed typos
1.2 - renamed functions _apart & _npart to a_part & n_part as zope does not allow functions to
start with _
"""
import string, random
vowel_list = ['a','e','i','o','u']
consonant_list = [a for a in string.ascii_lowercase if a not in vowel_list]
digit_list = string.digits
symbol_list = ["$", "-", "_", "&"]
def a_part(slen):
ret = ''
for i in range(slen):
if i%2 ==0:
randid = random.randint(0,20) #number of consonants
ret += consonant_list[randid]
else:
randid = random.randint(0,4) #number of vowels
ret += vowel_list[randid]
return ret
def n_part(slen):
ret = ''
for _ in range(slen):
randid = random.randint(0,9) #number of digits
ret += digit_list[randid]
return ret
def s_part(slen):
ret = ''
for _ in range(slen):
randid = random.randint(0,3) #number of digits
ret += symbol_list[randid]
return ret
fpl = alpha/2
if alpha % 2 :
fpl = int(alpha/2) + 1
lpl = alpha - fpl
begin = string.upper(a_part(fpl))
mid = n_part(numeric)
third = a_part(lpl)
end = s_part(symbol)
newpass = "%s%s%s%s" % (begin, mid, third, end)
return newpass
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>alpha=6, numeric=2, symbol=1</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Person_generatePassword</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Generate human readable random password</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment