Attachment 'moin_useradd.py'

Download

   1 #!/usr/bin/env python
   2 
   3 # Written by Nedko Arnaudov
   4 
   5 import sys
   6 import os, time, sha, codecs
   7 from random import randint
   8 from getpass import getpass
   9 
  10 # You need to change this
  11 moin_instance_dir="/web/moin/resa"
  12 
  13 datetime_fmt = '%Y-%m-%d %H:%M:%S'
  14 
  15 def encodePassword(pwd, charset='utf-8'):
  16     """ Encode a cleartext password
  17 
  18     Compatible to Apache htpasswd SHA encoding.
  19 
  20     When using different encoding than 'utf-8', the encoding might fail
  21     and raise UnicodeError.
  22 
  23     @param pwd: the cleartext password, (unicode)
  24     @param charset: charset used to encode password, used only for
  25         compatibility with old passwords generated on moin-1.2.
  26     @rtype: string
  27     @return: the password in apache htpasswd compatible SHA-encoding,
  28         or None
  29     """
  30     import base64
  31 
  32     # Might raise UnicodeError, but we can't do anything about it here,
  33     # so let the caller handle it.
  34     pwd = pwd.encode(charset)
  35 
  36     pwd = sha.new(pwd).digest()
  37     pwd = '{SHA}' + base64.encodestring(pwd).rstrip()
  38     return pwd
  39 
  40 class User:
  41     def __init__(self, username, password, email):
  42         self.aliasname=""
  43         self.css_url=""
  44         self.date_fmt=""
  45         self.datetime_fmt=""
  46         self.disabled="0"
  47         self.edit_on_doubleclick="0"
  48         self.edit_rows="20"
  49         self.editor_default="text"
  50         self.editor_ui="freechoice"
  51         self.language=""
  52         self.last_saved = str(time.time())
  53         self.mailto_author="0"
  54         self.quicklinks=""
  55         self.remember_last_visit="0"
  56         self.remember_me="1"
  57         self.show_fancy_diff="1"
  58         self.show_nonexist_qm="0"
  59         self.show_page_trail="1"
  60         self.show_toolbar="1"
  61         self.show_topbottom="0"
  62         self.subscribed_pages=""
  63         self.theme_name="modern"
  64         self.tz_offset="0"
  65         self.want_trivial="0"
  66         self.wikiname_add_spaces="0"
  67 
  68         self.id = "%s.%d" % (str(time.time()), randint(0,65535))
  69 
  70         self.name=username
  71         self.enc_password=encodePassword(password)
  72         self.email=email
  73 
  74     def save(self):
  75         filename = "%s/data/user/%s" % (moin_instance_dir, self.id)
  76         data = codecs.open(filename, "w")
  77         data.write("# Data saved '%s' for id '%s'\n" % (
  78             time.strftime(datetime_fmt, time.localtime(time.time())),
  79             self.id))
  80 
  81         attrs = vars(self).items()
  82         attrs.sort()
  83         for key, value in attrs:
  84             line = u"%s=%s\n" % (key, unicode(value))
  85             data.write(line)
  86         data.close()
  87 
  88         os.chmod(filename, 0660)
  89 
  90 print "MoinMoin user creator"
  91 print "====================="
  92 print
  93 
  94 if len(sys.argv) != 3:
  95     print "Usage: moin_useradd.py <username> <email>"
  96     sys.exit(0)
  97 
  98 username = sys.argv[1]
  99 email = sys.argv[2]
 100 
 101 print "username: %s" % username
 102 print "email: %s" % email
 103 
 104 password = getpass("password: ")
 105 password_again = getpass("password (again): ")
 106 
 107 if password != password_again:
 108     print "Passwords does not match"
 109     sys.exit(0)
 110 
 111 user = User(username, password, email)
 112 user.save()

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2006-04-12 20:20:56, 2.4 KB) [[attachment:moin-1.5-allow-create-form-disabling.patch]]
  • [get | view] (2006-04-12 20:33:37, 3.0 KB) [[attachment:moin_useradd.py]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.