From 4c1aa0f8da1d97d8b2e3d8d5d3387818da0e7baf Mon Sep 17 00:00:00 2001 From: Kevin Funk Date: Sun, 16 Nov 2008 22:42:29 +0100 Subject: [PATCH] Add list action to manageusers. And give it some love, too --- scripts/manageusers.py | 71 ++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 30 deletions(-) mode change 100755 => 100644 scripts/manageusers.py diff --git a/scripts/manageusers.py b/scripts/manageusers.py old mode 100755 new mode 100644 index 2323a30a..242ef191 --- 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 @@ -19,38 +23,45 @@ except ImportError: class UserManager(object): def __init__(self): self.db = sqlite3.connect(os.environ['HOME'] + '/.quassel/quassel-storage.sqlite') - + 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 argument 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() + + def list(self): + return self.cursor.execute("SELECT * FROM quasseluser").fetchall() - if sys.argv[1].lower() not in ['add', 'changepass']: - print generalError - sys.exit(2) + def callByName(self, name, *args, **kws): + return self.__getattribute__(name)(*args, **kws) - userManager = UserManager() - actions = {'add':userManager.addUser, - 'changepass':userManager.changePass} +def main(): + usermanager = UserManager() - actions[sys.argv[1]](sys.argv[2], sys.argv[3]) - + 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() -- 2.20.1