Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- #
- # Requires at least python version 2.5
- """Usage:
- manageusers.py (add|changepass) <username> <password>
- manageusers.py list"""
- connstr='dbname=quasselstable user=quassel host=localhost password=<psw>'
- import os
- import hashlib
- import sys
- from pprint import pprint
- try:
- import psycopg2
- except ImportError:
- print >> sys.stderr, "ERROR: psycopg2 module not available!"
- sys.exit(3)
- class UserManager(object):
- def __init__(self):
- self.db=psycopg2.connect(connstr)
- self.cursor= self.db.cursor()
- def __del__(self):
- self.db.commit()
- self.db.close();
- def _shaCrypt(self, password):
- return hashlib.sha1(password).hexdigest()
- def add(self, username, password):
- self.cursor.execute('INSERT INTO quasseluser (username, password) VALUES (%(username)s, %(password)s)',
- {'username':username, 'password':self._shaCrypt(password)})
- self.db.commit();
- def changepass(self, username, password):
- self.cursor.execute('UPDATE quasseluser SET password = %(password)s WHERE username = %(username)s',
- {'username':username, 'password':self._shaCrypt(password)})
- self.db.commit();
- def list(self):
- self.cursor.execute("SELECT * FROM quasseluser")
- return self.cursor.fetchall()
- def callByName(self, name, *args, **kws):
- return self.__getattribute__(name)(*args, **kws)
- 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()
Add Comment
Please, Sign In to add comment