~ubuntu-branches/ubuntu/jaunty/quassel/jaunty

« back to all changes in this revision

Viewing changes to scripts/manageusers.py

  • Committer: Bazaar Package Importer
  • Author(s): Harald Sitter
  • Date: 2008-11-17 15:22:46 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20081117152246-3lwlpnr4r08910kv
Tags: 0.3.1-0ubuntu1
* New upstream release (LP: #271403)
* Drop all patches originated from upstream (quassel_*)
* Compile with non-builtin quassel icons
  + Introduce new quassel-data package
  + quassel and quassel-client depend on quassel-data
  + Don't manually enforce icon installation for desktop files in debian/rules
  + Add quassel_01_fix_iconloader.patch
* Drop perl build dependency, I have no clue why it was added in the first
  place. Neither changelog nor Bazaar knows, and since quassel compiles just
  fine without it, removing it should be save.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#!/usr/bin/python
2
 
# -*- coding: iso-8859-1 -*-
3
 
 
4
 
# ==============================
5
 
#  Imports
6
 
# ==============================
 
2
# -*- coding: utf-8 -*-
 
3
#
 
4
# Requires at least python version 2.5
 
5
 
 
6
"""Usage:
 
7
    manageusers.py (add|changepass) <username> <password>
 
8
    manageusers.py list"""
 
9
 
7
10
import os
8
11
import sha
9
12
import sys
 
13
from pprint import pprint
10
14
 
11
15
try:
12
16
    import sqlite3
19
23
class UserManager(object):
20
24
    def __init__(self):
21
25
        self.db = sqlite3.connect(os.environ['HOME'] + '/.quassel/quassel-storage.sqlite')
22
 
        
 
26
        self.cursor = self.db.cursor()
 
27
 
23
28
    def __del__(self):
24
29
        self.db.commit()
25
30
        self.db.close();
26
31
 
27
 
    def shaCrypt(self, password):
28
 
        shaPass = sha.new(password)
29
 
        return shaPass.hexdigest()
30
 
        
31
 
    def addUser(self, username, password):
32
 
        cursor = self.db.cursor()
33
 
        cursor.execute('INSERT INTO quasseluser (username, password) VALUES (:username, :password)',
34
 
                       {'username':username, 'password':self.shaCrypt(password)})
35
 
 
36
 
    def changePass(self, username, password):
37
 
        cursor = self.db.cursor()
38
 
        cursor.execute('UPDATE quasseluser SET password = :password WHERE username = :username',
39
 
                       {'username':username, 'password':self.shaCrypt(password)})
 
32
    def _shaCrypt(self, password):
 
33
        return sha.new(password).hexdigest()
 
34
 
 
35
    def add(self, username, password):
 
36
        self.cursor.execute('INSERT INTO quasseluser (username, password) VALUES (:username, :password)',
 
37
            {'username':username, 'password':self._shaCrypt(password)}).fetchone()
 
38
 
 
39
    def changepass(self, username, password):
 
40
        self.cursor.execute('UPDATE quasseluser SET password = :password WHERE username = :username',
 
41
            {'username':username, 'password':self._shaCrypt(password)}).fetchone()
 
42
 
 
43
    def list(self):
 
44
        return self.cursor.execute("SELECT * FROM quasseluser").fetchall()
 
45
 
 
46
    def callByName(self, name, *args, **kws):
 
47
        return self.__getattribute__(name)(*args, **kws)
 
48
 
 
49
def main():
 
50
    usermanager = UserManager()
 
51
 
 
52
    try:
 
53
        action = sys.argv[1].lower()
 
54
    except:
 
55
        print(__doc__)
 
56
        return
 
57
 
 
58
    if action == 'list':
 
59
        pprint(usermanager.list())
 
60
    elif action in ['add', 'changepass'] and len(sys.argv) > 3:
 
61
        usermanager.callByName(action, sys.argv[2], sys.argv[3])
 
62
    else:
 
63
        print("ERROR: Wrong arguments supplied.")
 
64
        print(__doc__)
40
65
 
41
66
if __name__ == "__main__":
42
 
    generalError = "ERROR: Wrong argument count (Syntax: %s add|changepass <username> <password>)" % sys.argv[0]
43
 
    if len(sys.argv) < 3:
44
 
        print generalError
45
 
        sys.exit(1)
46
 
 
47
 
    if sys.argv[1].lower() not in ['add', 'changepass']:
48
 
        print generalError
49
 
        sys.exit(2)
50
 
 
51
 
    userManager = UserManager()
52
 
    actions = {'add':userManager.addUser,
53
 
               'changepass':userManager.changePass}
54
 
 
55
 
    actions[sys.argv[1]](sys.argv[2], sys.argv[3])
56
 
    
 
67
    main()