extras-buildsys/server User.py, 1.7, 1.8 main.py, 1.15, 1.16 DBManager.py, 1.3, 1.4
Daniel Williams (dcbw)
fedora-extras-commits at redhat.com
Sun Nov 20 18:42:48 UTC 2005
Author: dcbw
Update of /cvs/fedora/extras-buildsys/server
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv22895/server
Modified Files:
User.py main.py DBManager.py
Log Message:
2005-11-20 Dan Williams <dcbw at redhat.com>
Patches from Jeff Sheltren <sheltren at cs.ucsb.edu>
* server/User.py
server/main.py
server/DBManager.py
utils/user-manager.py
- Store users using same db engine as the job database
* utils/plague-user-migration.py
- Script to move user info from sqlite to postgres/mysql
Index: User.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/User.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- User.py 15 Aug 2005 03:18:20 -0000 1.7
+++ User.py 20 Nov 2005 18:42:46 -0000 1.8
@@ -15,9 +15,7 @@
# Copyright 2005 Dan Williams <dcbw at redhat.com> and Red Hat, Inc.
-import sqlite
-
-CONFIG_LOCATION = "/etc/plague/server/"
+import DBManager
class User:
def __init__(self, email, guest):
@@ -31,54 +29,30 @@
self.server_admin = False
-def get_userdb_dbcx():
- try:
- dbcx = sqlite.connect(CONFIG_LOCATION + "userdb", encoding="utf-8", timeout=4)
- curs = dbcx.cursor()
- return (dbcx, curs)
- except sqlite.DatabaseError, e:
- print "sqlite DatabaseError: %s" % str(e)
- return (None, None)
-
class Authenticator:
"""
Talks to a database of users & capabilities
"""
- def __init__(self, cfg):
+ def __init__(self, db_manager, cfg):
self._cfg = cfg
- (dbcx, curs) = get_userdb_dbcx()
- if not dbcx or not curs:
- print "Unable to open the user database. Exiting..."
- os._exit(1)
-
- # Ensure the table exists in the database
- create = False
- try:
- curs.execute('SELECT * FROM users')
- dbcx.commit()
- except sqlite._sqlite.DatabaseError, e:
- create = True
-
- if create:
- curs.execute('CREATE TABLE users (' \
- 'email VARCHAR(50), ' \
- 'own_jobs BOOLEAN, ' \
- 'job_admin BOOLEAN, ' \
- 'user_admin BOOLEAN, ' \
- 'server_admin BOOLEAN)')
- dbcx.commit()
-
+ self._db_manager = db_manager
def new_authed_user(self, email, client_address):
if not email:
return None
- (dbcx, curs) = get_userdb_dbcx()
+ try:
+ dbcx = self._db_manager.dbcx()
+ curs = dbcx.cursor()
+ except StandardError, e:
+ del curs
+ del dbcx
+ print "Unable to access user database: '%s'" % str(e)
+ return None
user = None
curs.execute('SELECT * FROM users WHERE email="%s"' % email)
- dbcx.commit()
- item = curs.fetchone()
+ item = dbcx.fetchone(curs)
if item:
user = User(email, False)
user.own_jobs = item['own_jobs']
@@ -88,5 +62,7 @@
else:
if self._cfg.get_bool("UI", "guest_allowed"):
user = User('guest at guest', True)
+ del curs
+ del dbcx
return user
Index: main.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/main.py,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- main.py 27 Oct 2005 14:34:35 -0000 1.15
+++ main.py 20 Nov 2005 18:42:46 -0000 1.16
@@ -41,9 +41,9 @@
SSL XMLRPC server that authenticates clients based on their certificate.
"""
- def __init__(self, address, certs, cfg):
+ def __init__(self, address, certs, db_manager, cfg):
AuthedXMLRPCServer.AuthedSSLXMLRPCServer.__init__(self, address, self.auth_cb, certs)
- self.authenticator = User.Authenticator(cfg)
+ self.authenticator = User.Authenticator(db_manager, cfg)
def auth_cb(self, request, client_address):
peer_cert = request.get_peer_certificate()
@@ -115,7 +115,7 @@
ui_certs['ca_cert'] = cfg.get_str("SSL", "ca_cert")
ui_certs['peer_ca_cert'] = cfg.get_str("UI", "client_ca_cert")
ui = UserInterfaceSSLAuth(builder_manager, bm, dbm, cfg)
- bm_server = AuthenticatedSSLXMLRPCServer((hostname, port), ui_certs, cfg)
+ bm_server = AuthenticatedSSLXMLRPCServer((hostname, port), ui_certs, dbm, cfg)
else:
ui = UserInterfaceNoAuth(builder_manager, bm, dbm, cfg)
bm_server = AuthedXMLRPCServer.AuthedXMLRPCServer((hostname, port))
Index: DBManager.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/DBManager.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DBManager.py 24 Oct 2005 15:34:05 -0000 1.3
+++ DBManager.py 20 Nov 2005 18:42:46 -0000 1.4
@@ -365,3 +365,22 @@
print "Could not access the job database. Reason: '%s'. Exiting..." % e
os._exit(1)
+ # Create the users table
+ try:
+ curs.execute('SELECT * FROM users LIMIT 4')
+ except Exception, e:
+ # If table wasn't created, try to create it
+ try:
+ dbcx.commit()
+ curs.execute('CREATE TABLE users (' \
+ 'email VARCHAR(50) PRIMARY KEY, ' \
+ 'own_jobs BOOLEAN, ' \
+ 'job_admin BOOLEAN, ' \
+ 'user_admin BOOLEAN, ' \
+ 'server_admin BOOLEAN' \
+ ')')
+ dbcx.commit()
+ except StandardError, e:
+ print "Could not access the user database. Reason: '%s'. Exiting..." % e
+ os._exit(1)
+
More information about the fedora-extras-commits
mailing list