X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=scripts%2Fmanageusers.py;h=dd4c3759f2fccbd433866779f1446b6db1a426fc;hp=c327865f8e74864842bc7b8b028bd57035c56d3e;hb=bf0ef15dad76019d684293380065186341bcdc85;hpb=cb1918d94b5d8ec9f05a192c96fab938782dabf5 diff --git a/scripts/manageusers.py b/scripts/manageusers.py index c327865f..dd4c3759 100755 --- a/scripts/manageusers.py +++ b/scripts/manageusers.py @@ -1,12 +1,16 @@ #!/usr/bin/python -# -*- coding: iso-8859-1 -*- +# -*- coding: utf-8 -*- +# +# Requires at least python version 2.5 + +"""Usage: + manageusers.py (add|changepass) + manageusers.py list""" -# ============================== -# Imports -# ============================== import os import sha import sys +from pprint import pprint try: import sqlite3 @@ -18,39 +22,53 @@ except ImportError: class UserManager(object): def __init__(self): - self.db = sqlite3.connect(os.environ['HOME'] + '/.quassel/quassel-storage.sqlite') - + dbpaths = [os.environ['HOME'] + '/.quassel/quassel-storage.sqlite', + os.environ['HOME'] + '/.config/quassel-irc.org/quassel-storage.sqlite', + '/var/cache/quassel/quassel-storage.sqlite'] + for dbpath in dbpaths: + if os.path.exists(dbpath): + self.db = sqlite3.connect(dbpath) + break + + self.cursor = self.db.cursor() + def __del__(self): self.db.commit() self.db.close(); - def shaCrypt(self, password): - shaPass = sha.new(password) - return shaPass.hexdigest() - - def addUser(self, username, password): - cursor = self.db.cursor() - cursor.execute('INSERT INTO quasseluser (username, password) VALUES (:username, :password)', - {'username':username, 'password':self.shaCrypt(password)}) + def _shaCrypt(self, password): + return sha.new(password).hexdigest() - def changePass(self, username, password): - cursor = self.db.cursor() - cursor.execute('UPDATE quasseluser SET password = :password WHERE username = :username', - {'username':username, 'password':self.shaCrypt(password)}) + def add(self, username, password): + self.cursor.execute('INSERT INTO quasseluser (username, password) VALUES (:username, :password)', + {'username':username, 'password':self._shaCrypt(password)}).fetchone() -if __name__ == "__main__": - generalError = "ERROR: Wrong arugment count (Syntax: %s add|changepass )" % sys.argv[0] - if len(sys.argv) < 3: - print generalError - sys.exit(1) + def changepass(self, username, password): + self.cursor.execute('UPDATE quasseluser SET password = :password WHERE username = :username', + {'username':username, 'password':self._shaCrypt(password)}).fetchone() - if sys.argv[1].lower() not in ['add', 'changepass']: - print generalError - sys.exit(2) + def list(self): + return self.cursor.execute("SELECT * FROM quasseluser").fetchall() - userManager = UserManager() - actions = {'add':userManager.addUser, - 'changepass':userManager.changePass} + def callByName(self, name, *args, **kws): + return self.__getattribute__(name)(*args, **kws) - actions[sys.argv[1]](sys.argv[2], sys.argv[3]) - +def main(): + usermanager = UserManager() + + try: + action = sys.argv[1].lower() + except: + print(__doc__) + return + + if action == 'list': + pprint(usermanager.list()) + elif action in ['add', 'changepass'] and len(sys.argv) > 3: + usermanager.callByName(action, sys.argv[2], sys.argv[3]) + else: + print("ERROR: Wrong arguments supplied.") + print(__doc__) + +if __name__ == "__main__": + main()