ChatView now asks the scene if scrolling is ok on message appending
[quassel.git] / scripts / manageusers.py
1 #!/usr/bin/python
2 # -*- coding: iso-8859-1 -*-
3
4 # ==============================
5 #  Imports
6 # ==============================
7 import os
8 import sha
9 import sys
10
11 try:
12     import sqlite3
13 except ImportError:
14     print >> sys.stderr, "ERROR: sqlite3 module not available!"
15     print >> sys.stderr, "This script needs sqlite3 support which is part of Python 2.5"
16     print >> sys.stderr, "You probably need to upgrade your Python installation first."
17     sys.exit(3)
18
19 class UserManager(object):
20     def __init__(self):
21         self.db = sqlite3.connect(os.environ['HOME'] + '/.quassel/quassel-storage.sqlite')
22         
23     def __del__(self):
24         self.db.commit()
25         self.db.close();
26
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)})
40
41 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