2 # -*- coding: utf-8 -*-
4 # Requires at least python version 2.5
7 manageusers.py (add|changepass) <username> <password>
13 from pprint import pprint
18 print >> sys.stderr, "ERROR: sqlite3 module not available!"
19 print >> sys.stderr, "This script needs sqlite3 support which is part of Python 2.5"
20 print >> sys.stderr, "You probably need to upgrade your Python installation first."
23 class UserManager(object):
25 dbpaths = [os.environ['HOME'] + '/.quassel/quassel-storage.sqlite',
26 os.environ['HOME'] + '/.config/quassel-irc.org/quassel-storage.sqlite',
27 '/var/cache/quassel/quassel-storage.sqlite']
28 for dbpath in dbpaths:
29 if os.path.exists(dbpath):
30 self.db = sqlite3.connect(dbpath)
33 self.cursor = self.db.cursor()
39 def _shaCrypt(self, password):
40 return sha.new(password).hexdigest()
42 def add(self, username, password):
43 self.cursor.execute('INSERT INTO quasseluser (username, password) VALUES (:username, :password)',
44 {'username':username, 'password':self._shaCrypt(password)}).fetchone()
46 def changepass(self, username, password):
47 self.cursor.execute('UPDATE quasseluser SET password = :password WHERE username = :username',
48 {'username':username, 'password':self._shaCrypt(password)}).fetchone()
51 return self.cursor.execute("SELECT * FROM quasseluser").fetchall()
53 def callByName(self, name, *args, **kws):
54 return self.__getattribute__(name)(*args, **kws)
57 usermanager = UserManager()
60 action = sys.argv[1].lower()
66 pprint(usermanager.list())
67 elif action in ['add', 'changepass'] and len(sys.argv) > 3:
68 usermanager.callByName(action, sys.argv[2], sys.argv[3])
70 print("ERROR: Wrong arguments supplied.")
73 if __name__ == "__main__":