~ubuntu-branches/ubuntu/jaunty/trac/jaunty

« back to all changes in this revision

Viewing changes to contrib/htdigest.py

  • Committer: Bazaar Package Importer
  • Author(s): Luis Matos
  • Date: 2008-07-13 23:46:20 UTC
  • mfrom: (1.1.13 upstream)
  • Revision ID: james.westby@ubuntu.com-20080713234620-13ynpdpkbaymfg1z
Tags: 0.11-2
* Re-added python-setup-tools to build dependences. Closes: #490320 #468705
* New upstream release Closes: 489727
* Added sugestion for other vcs support available: git bazaar mercurial 
* Added spamfilter plugin to sugests
* Moved packaging from python-support to python-central
* Added an entry to the NEWS about the cgi Closes: #490275
* Updated 10_remove_trac_suffix_from_title patch to be used in 0.11

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
from optparse import OptionParser
23
23
from getpass import getpass
24
24
 
25
 
def get_digest(userprefix):
 
25
def ask_pass():
26
26
    pass1 = getpass('New password: ')
27
27
    pass2 = getpass('Re-type new password: ')
28
28
    if pass1 != pass2:
29
29
        print >>sys.stderr, "They don't match, sorry"
30
30
        sys.exit(1)
31
 
    return userprefix + md5.new(userprefix + pass1).hexdigest()
32
 
 
33
 
usage = "%prog [-c] passwordfile realm username"
 
31
    return pass1
 
32
 
 
33
def get_digest(userprefix, password=None):
 
34
    if password == None:
 
35
        password = ask_pass()
 
36
    return make_digest(userprefix, password)
 
37
 
 
38
def make_digest(userprefix, password):
 
39
    return userprefix + md5.new(userprefix + password).hexdigest()
 
40
 
 
41
usage = "%prog [-c] [-b] passwordfile realm username"
34
42
parser = OptionParser(usage=usage)
35
43
parser.add_option('-c', action='store_true', dest='create', default=False,
36
44
                  help='Create a new file')
 
45
parser.add_option('-b', action='store_true', dest='batch', default=False,
 
46
                  help='Batch mode, password on the commandline.')
37
47
 
38
48
opts, args = parser.parse_args()
39
49
 
40
50
try:
41
 
    filename, realm, username = args
 
51
    if opts.batch:
 
52
        filename, realm, username, password = args
 
53
    else:
 
54
        filename, realm, username = args
 
55
        password = None
42
56
except ValueError:
43
57
    parser.error('Wrong number of arguments')
44
58
 
54
68
        else:
55
69
            raise
56
70
    try:
57
 
        print >>f, get_digest(prefix)
 
71
        print >>f, get_digest(prefix, password)
58
72
    finally:
59
73
        f.close()
60
74
else:
63
77
        for line in fileinput.input(filename, inplace=True):
64
78
            if line.startswith(prefix):
65
79
                if not matched:
66
 
                    print get_digest(prefix)
 
80
                    print get_digest(prefix, password)
67
81
                matched = True
68
82
            else:
69
83
                print line,
70
84
        if not matched:
71
85
            f = open(filename, 'a')
72
86
            try:
73
 
                print >>f, get_digest(prefix)
 
87
                print >>f, get_digest(prefix, password)
74
88
            finally:
75
89
                f.close()
76
90
    except EnvironmentError, e: