summaryrefslogtreecommitdiff
path: root/src/mailman/Utils.py
diff options
context:
space:
mode:
authorBarry Warsaw2011-01-04 19:10:13 -0500
committerBarry Warsaw2011-01-04 19:10:13 -0500
commitc7e794caecb8b12d250be92f698fed8fa1f8a101 (patch)
treecdace31b67927602d7c0a5dd85e63c3707765f00 /src/mailman/Utils.py
parentb68cb14669af59d1860d66534fbe3517bacdf6c7 (diff)
downloadmailman-c7e794caecb8b12d250be92f698fed8fa1f8a101.tar.gz
mailman-c7e794caecb8b12d250be92f698fed8fa1f8a101.tar.zst
mailman-c7e794caecb8b12d250be92f698fed8fa1f8a101.zip
Diffstat (limited to 'src/mailman/Utils.py')
-rw-r--r--src/mailman/Utils.py114
1 files changed, 0 insertions, 114 deletions
diff --git a/src/mailman/Utils.py b/src/mailman/Utils.py
index c07888fc5..384d25702 100644
--- a/src/mailman/Utils.py
+++ b/src/mailman/Utils.py
@@ -149,120 +149,6 @@ def wrap(text, column=70, honor_leading_ws=True):
-_vowels = ('a', 'e', 'i', 'o', 'u')
-_consonants = ('b', 'c', 'd', 'f', 'g', 'h', 'k', 'm', 'n',
- 'p', 'r', 's', 't', 'v', 'w', 'x', 'z')
-_syllables = []
-
-for v in _vowels:
- for c in _consonants:
- _syllables.append(c+v)
- _syllables.append(v+c)
-del c, v
-
-def UserFriendly_MakeRandomPassword(length):
- syls = []
- while len(syls) * 2 < length:
- syls.append(random.choice(_syllables))
- return EMPTYSTRING.join(syls)[:length]
-
-
-def Secure_MakeRandomPassword(length):
- bytesread = 0
- bytes = []
- fd = None
- try:
- while bytesread < length:
- try:
- # Python 2.4 has this on available systems.
- newbytes = os.urandom(length - bytesread)
- except (AttributeError, NotImplementedError):
- if fd is None:
- try:
- fd = os.open('/dev/urandom', os.O_RDONLY)
- except OSError, e:
- if e.errno != errno.ENOENT:
- raise
- # We have no available source of cryptographically
- # secure random characters. Log an error and fallback
- # to the user friendly passwords.
- log.error(
- 'urandom not available, passwords not secure')
- return UserFriendly_MakeRandomPassword(length)
- newbytes = os.read(fd, length - bytesread)
- bytes.append(newbytes)
- bytesread += len(newbytes)
- s = base64.encodestring(EMPTYSTRING.join(bytes))
- # base64 will expand the string by 4/3rds
- return s.replace('\n', '')[:length]
- finally:
- if fd is not None:
- os.close(fd)
-
-
-def MakeRandomPassword(length=None):
- if length is None:
- length = int(config.passwords.member_password_length)
- if as_boolean(config.passwords.user_friendly_passwords):
- password = UserFriendly_MakeRandomPassword(length)
- else:
- password = Secure_MakeRandomPassword(length)
- return password.decode('ascii')
-
-
-def GetRandomSeed():
- chr1 = int(random.random() * 52)
- chr2 = int(random.random() * 52)
- def mkletter(c):
- if 0 <= c < 26:
- c += 65
- if 26 <= c < 52:
- #c = c - 26 + 97
- c += 71
- return c
- return "%c%c" % tuple(map(mkletter, (chr1, chr2)))
-
-
-
-def set_global_password(pw, siteadmin=True, scheme=None):
- if scheme is None:
- scheme = passwords.Schemes.ssha
- if siteadmin:
- filename = config.SITE_PW_FILE
- else:
- filename = config.LISTCREATOR_PW_FILE
- try:
- fp = open(filename, 'w')
- print >> fp, passwords.make_secret(pw, scheme)
- finally:
- fp.close()
-
-
-def get_global_password(siteadmin=True):
- if siteadmin:
- filename = config.SITE_PW_FILE
- else:
- filename = config.LISTCREATOR_PW_FILE
- try:
- fp = open(filename)
- challenge = fp.read()[:-1] # strip off trailing nl
- fp.close()
- except IOError, e:
- if e.errno != errno.ENOENT:
- raise
- # It's okay not to have a site admin password
- return None
- return challenge
-
-
-def check_global_password(response, siteadmin=True):
- challenge = get_global_password(siteadmin)
- if challenge is None:
- return False
- return passwords.check_response(challenge, response)
-
-
-
def websafe(s):
return cgi.escape(s, quote=True)