[Mailman-Developers] Little password tweak...

The Dragon De Monsyne dragondm@delta.integral.org
Mon, 3 Aug 1998 07:39:36 -0500 (CDT)


	I've been poking 'round 1.0b5.. I've got stuff that I'll be
working on, but first I'd thought I'd submit this. It's just a really
simple little mnemnonic password generator. Ive been using it fer months
on my much-hacked up 1.0b1 install (which should be retiering soon), and
it's just a little niceity.   Basically, what ye do, is, if ye install the
following module, and apply this patch, afterward, instead of your
list subscribers getting passwords like 'lPg_' when mailman assigns a
password (like during a mass subscribe, or email sub w/ no password
supplied), they get passwords like 'cold-blue-tiger', or similar. 


----Begin PassGen.py -----
import string, whrandom
# this generates (hopefully) easy to remember  random passwords -ddm

passphrase = [
    [ "hot", "cold" , "warm" , "tall", "short", "wide" , "thin", "heavy", 
      "light", "fast" ,"slow", "wet", "dry", "furry", "scaled", "smart", 
      "dumb", "happy", "sad", "sly", "bouncy", "sleepy", "early" ,"late", 
      "wise" ],
    [ "red", "orange", "yellow", "green", "blue", "violet" , "white", "black", 
      "grey" , "brown", "tan", "silver", "gold", "aqua", "pink" , "navy", 
      "azure","plaid", "paisley", "beige", "clear", "copper" ],
    [ "dragon", "gryphon", "centaur", "faun", "wolf", "fox" ,"bear", "eagle", 
      "lizard", "newt", "fish", "snake", "horse", "unicorn", "deer",
      "dog", "cat", "lion", "puma", "rat",  "mouse", "racoon",
      "badger","gopher", "seal", "whale", "mule", "walrus",
      "otter","turtle", "zebra", "tiger", "dingo" ,"koala", "kangaroo",
      "dinosaur", "pegasus", "bigfoot", "beaver", "possum", "skunk",
      "hawk", "orca", "panda", "raven" ] ]

rgen= whrandom.whrandom()

def RandomPhrase():
    """Generates random, AOL-style passphrases. """
    p=[]
    for each in passphrase:
        p.append(rgen.choice(each))
    return string.join(p,"-")


----End PassGen.py -----

----Begin patch --------
diff -c -r /tmp/mailman-1.0b5/Mailman/Cgi/admin.py Mailman/Cgi/admin.py
*** Mailman/Cgi/admin.py	Mon Jul 27 17:48:31 1998
--- Mailman/Cgi/admin.py	Mon Aug  3 06:31:12 1998
***************
*** 27,32 ****
--- 27,34 ----
  import paths                                      # path hacking
  from Mailman import Utils, MailList, Errors, MailCommandHandler
  from Mailman import Cookie
+ from Mailman import PassGen
+ 
  from Mailman.htmlformat import *
  from Mailman.Crypt import crypt
  from Mailman import mm_cfg
***************
*** 711,718 ****
              if not lst.nondigestable:
                  digest = 1
  	    try:
! 		lst.ApprovedAddMember(new_name, (Utils.GetRandomSeed() +
!                                                   Utils.GetRandomSeed()), digest)
                  subscribe_success.append(new_name)
  	    except Errors.MMAlreadyAMember:
                  subscribe_errors.append((new_name, 'Already a member'))
--- 713,719 ----
              if not lst.nondigestable:
                  digest = 1
  	    try:
! 		lst.ApprovedAddMember(new_name, PassGen.RandomPhrase(), digest)
                  subscribe_success.append(new_name)
  	    except Errors.MMAlreadyAMember:
                  subscribe_errors.append((new_name, 'Already a member'))

diff -c -r /tmp/mailman-1.0b5/Mailman/MailCommandHandler.py Mailman/MailCommandHandler.py
*** Mailman/MailCommandHandler.py	Mon Jul 27 17:48:31 1998
--- Mailman/MailCommandHandler.py	Mon Aug  3 06:51:54 1998
***************
*** 29,35 ****
  import mm_cfg
  import Utils
  import Pending
! 
  
  option_descs = { 'digest' :
  		     'receive mail from the list bundled together instead of '
--- 29,35 ----
  import mm_cfg
  import Utils
  import Pending
! import PassGen
  
  option_descs = { 'digest' :
  		     'receive mail from the list bundled together instead of '
***************
*** 413,420 ****
          address = ""
          done_digest = 0
  	if not len(args):
! 	    password = "%s%s" % (Utils.GetRandomSeed(), 
! 				 Utils.GetRandomSeed())
          elif len(args) > 3:
              self.AddError("Usage: subscribe [password] "
                            "[digest|nodigest] [address=<email-address>]")
--- 413,419 ----
          address = ""
          done_digest = 0
  	if not len(args):
! 	    password = PassGen.RandomPhrase()
          elif len(args) > 3:
              self.AddError("Usage: subscribe [password] "
                            "[digest|nodigest] [address=<email-address>]")
***************
*** 437,444 ****
                                    "[address=<email-address>]")
                      return
          if not password:
!             password = "%s%s" % (Utils.GetRandomSeed(), 
! 				 Utils.GetRandomSeed())
          if not address:
              pending_addr = mail.GetSender()
          else:
--- 436,442 ----
                                    "[address=<email-address>]")
                      return
          if not password:
!             password = PassGen.RandomPhrase()
          if not address:
              pending_addr = mail.GetSender()
          else:

----End   patch --------

	-The Dragon De Monsyne