Guest User

Untitled

a guest
Aug 30th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Requires at least python version 2.5
  5.  
  6. """Usage:
  7. manageusers.py (add|changepass) <username> <password>
  8. manageusers.py list"""
  9. connstr='dbname=quasselstable user=quassel host=localhost password=<psw>'
  10. import os
  11. import hashlib
  12. import sys
  13. from pprint import pprint
  14.  
  15. try:
  16. import psycopg2
  17. except ImportError:
  18. print >> sys.stderr, "ERROR: psycopg2 module not available!"
  19. sys.exit(3)
  20.  
  21. class UserManager(object):
  22. def __init__(self):
  23. self.db=psycopg2.connect(connstr)
  24. self.cursor= self.db.cursor()
  25.  
  26. def __del__(self):
  27. self.db.commit()
  28. self.db.close();
  29.  
  30. def _shaCrypt(self, password):
  31. return hashlib.sha1(password).hexdigest()
  32.  
  33. def add(self, username, password):
  34. self.cursor.execute('INSERT INTO quasseluser (username, password) VALUES (%(username)s, %(password)s)',
  35. {'username':username, 'password':self._shaCrypt(password)})
  36. self.db.commit();
  37.  
  38. def changepass(self, username, password):
  39. self.cursor.execute('UPDATE quasseluser SET password = %(password)s WHERE username = %(username)s',
  40. {'username':username, 'password':self._shaCrypt(password)})
  41. self.db.commit();
  42.  
  43. def list(self):
  44. self.cursor.execute("SELECT * FROM quasseluser")
  45. return self.cursor.fetchall()
  46.  
  47. def callByName(self, name, *args, **kws):
  48. return self.__getattribute__(name)(*args, **kws)
  49.  
  50. def main():
  51. usermanager = UserManager()
  52.  
  53. try:
  54. action = sys.argv[1].lower()
  55. except:
  56. print(__doc__)
  57. return
  58.  
  59. if action == 'list':
  60. pprint(usermanager.list())
  61. elif action in ['add', 'changepass'] and len(sys.argv) > 3:
  62. usermanager.callByName(action, sys.argv[2], sys.argv[3])
  63. else:
  64. print("ERROR: Wrong arguments supplied.")
  65. print(__doc__)
  66.  
  67. if __name__ == "__main__":
  68. main()
Add Comment
Please, Sign In to add comment