From aed1f9110511e3669ab43c3894064c1371878876 Mon Sep 17 00:00:00 2001 From: Karl MacMillan Date: Wed, 1 Aug 2007 16:21:13 -0400 Subject: Add local-dist target. Remove hard-coded config. --- ipa-python/rpcclient.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'ipa-python/rpcclient.py') diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py index 41602662..f37096d8 100644 --- a/ipa-python/rpcclient.py +++ b/ipa-python/rpcclient.py @@ -26,18 +26,25 @@ except ImportError: pass import xmlrpclib import socket -import os -import base64 +import config # Some errors to catch # http://cvs.fedora.redhat.com/viewcvs/ldapserver/ldap/servers/plugins/pam_passthru/README?root=dirsec&rev=1.6&view=auto - + +def server_url(): + return "http://" + config.config.get_server() + "/ipa" + # FIXME: do we want this set somewhere else? -server = xmlrpclib.ServerProxy("http://localhost:80/ipa") +server = None + +def setup_server(): + global server + if not server: + server = xmlrpclib.ServerProxy(server_url()) def get_user(username): """Get a specific user""" - + setup_server() try: result = server.get_user(username) myuser = result @@ -52,9 +59,10 @@ def get_user(username): def add_user(user): """Add a new user""" + setup_server() # FIXME: Get the realm from somewhere - realm="GREYOAK.COM" + realm = config.config.get_realm() # FIXME: This should be dynamic and can include just about anything # Let us add in some missing attributes @@ -87,13 +95,14 @@ def get_add_schema(): """Get the list of attributes we need to ask when adding a new user. """ + setup_server() # FIXME: Hardcoded and designed for the TurboGears GUI. Do we want # this for the CLI as well? try: result = server.get_add_schema() except xmlrpclib.Fault, fault: - raise xmlrpclib.Fault(fault,faultCode, fault.faultString) + raise xmlrpclib.Fault(fault, fault.faultString) return None except socket.error, (value, msg): raise xmlrpclib.Fault(value, msg) -- cgit From 88ab86fa37f06348d50ca875ecd994d6b565484f Mon Sep 17 00:00:00 2001 From: "kmccarth@redhat.com" Date: Thu, 2 Aug 2007 15:01:59 -0700 Subject: Rename 'gn' to 'givenName' --- ipa-python/rpcclient.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'ipa-python/rpcclient.py') diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py index f37096d8..187b0b3c 100644 --- a/ipa-python/rpcclient.py +++ b/ipa-python/rpcclient.py @@ -77,9 +77,7 @@ def add_user(user): # FIXME: What is the default group for users? user['gidNumber'] ='501' user['krbPrincipalName'] = "%s@%s" % (user['uid'], realm) - user['cn'] = "%s %s" % (user['gn'], user['sn']) - if user.get('gn'): - del user['gn'] + user['cn'] = "%s %s" % (user['givenName'], user['sn']) try: result = server.add_user(user) -- cgit From 84d3b7be581468c18dfacdb8ae07d93d86373ff3 Mon Sep 17 00:00:00 2001 From: "kmccarth@redhat.com" Date: Thu, 2 Aug 2007 14:15:40 -0700 Subject: Change server to not be global nor reused. --- ipa-python/rpcclient.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'ipa-python/rpcclient.py') diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py index 187b0b3c..8834a82f 100644 --- a/ipa-python/rpcclient.py +++ b/ipa-python/rpcclient.py @@ -34,17 +34,12 @@ import config def server_url(): return "http://" + config.config.get_server() + "/ipa" -# FIXME: do we want this set somewhere else? -server = None - def setup_server(): - global server - if not server: - server = xmlrpclib.ServerProxy(server_url()) + return xmlrpclib.ServerProxy(server_url()) def get_user(username): """Get a specific user""" - setup_server() + server = setup_server() try: result = server.get_user(username) myuser = result @@ -59,7 +54,7 @@ def get_user(username): def add_user(user): """Add a new user""" - setup_server() + server = setup_server() # FIXME: Get the realm from somewhere realm = config.config.get_realm() @@ -93,7 +88,7 @@ def get_add_schema(): """Get the list of attributes we need to ask when adding a new user. """ - setup_server() + server = setup_server() # FIXME: Hardcoded and designed for the TurboGears GUI. Do we want # this for the CLI as well? -- cgit From 993f76fe6035cf59cceb88f3611fc53680738007 Mon Sep 17 00:00:00 2001 From: "rcritten@redhat.com" Date: Mon, 6 Aug 2007 10:05:53 -0400 Subject: - Abstracted client class to work directly or over RPC - Add mod_auth_kerb and cyrus-sasl-gssapi to Requires - Remove references to admin server in ipa-server-setupssl - Generate a client certificate for the XML-RPC server to connect to LDAP with - Create a keytab for Apache - Create an ldif with a test user - Provide a certmap.conf for doing SSL client authentication - Update tools to use kerberos - Add User class --- ipa-python/rpcclient.py | 148 +++++++++++++++++++++++++++--------------------- 1 file changed, 82 insertions(+), 66 deletions(-) (limited to 'ipa-python/rpcclient.py') diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py index 8834a82f..d4e645e1 100644 --- a/ipa-python/rpcclient.py +++ b/ipa-python/rpcclient.py @@ -20,85 +20,101 @@ #!/usr/bin/python -try: - import krbV -except ImportError: - pass import xmlrpclib import socket import config +from krbtransport import KerbTransport +from kerberos import GSSError +import os +import base64 +import user +import ipa # Some errors to catch # http://cvs.fedora.redhat.com/viewcvs/ldapserver/ldap/servers/plugins/pam_passthru/README?root=dirsec&rev=1.6&view=auto -def server_url(): - return "http://" + config.config.get_server() + "/ipa" +class RPCClient: -def setup_server(): - return xmlrpclib.ServerProxy(server_url()) + def __init__(self): + ipa.config.init_config() -def get_user(username): - """Get a specific user""" - server = setup_server() - try: - result = server.get_user(username) - myuser = result - except xmlrpclib.Fault, fault: - raise xmlrpclib.Fault(fault.faultCode, fault.faultString) - return None - except socket.error, (value, msg): - raise xmlrpclib.Fault(value, msg) - return None + def server_url(self): + return "http://" + config.config.get_server() + "/ipa" - return myuser + def setup_server(self): + return xmlrpclib.ServerProxy(self.server_url(), KerbTransport()) -def add_user(user): - """Add a new user""" - server = setup_server() - - # FIXME: Get the realm from somewhere - realm = config.config.get_realm() - - # FIXME: This should be dynamic and can include just about anything - # Let us add in some missing attributes - if user.get('homeDirectory') is None: - user['homeDirectory'] ='/home/%s' % user['uid'] - if user.get('gecos') is None: - user['gecos'] = user['uid'] - - # FIXME: This can be removed once the DS plugin is installed - user['uidNumber'] ='501' + def convert_entry(self,ent): + # Convert into a dict. We need to handle multi-valued attributes as well + # so we'll convert those into lists. + user={} + for (k) in ent: + k = k.lower() + if user.get(k) is not None: + if isinstance(user[k],list): + user[k].append(ent[k].strip()) + else: + first = user[k] + user[k] = () + user[k].append(first) + user[k].append(ent[k].strip()) + else: + user[k] = ent[k] + + return user + + def get_user(self,username): + """Get a specific user""" + server = self.setup_server() + try: + result = server.get_user(username) + except xmlrpclib.Fault, fault: + raise xmlrpclib.Fault(fault.faultCode, fault.faultString) + except socket.error, (value, msg): + raise xmlrpclib.Fault(value, msg) - # FIXME: What is the default group for users? - user['gidNumber'] ='501' - user['krbPrincipalName'] = "%s@%s" % (user['uid'], realm) - user['cn'] = "%s %s" % (user['givenName'], user['sn']) + return result + + + def add_user(self,user): + """Add a new user""" + server = self.setup_server() + + try: + result = server.add_user(user) + except xmlrpclib.Fault, fault: + raise xmlrpclib.Fault(fault.faultCode, fault.faultString) + except socket.error, (value, msg): + raise xmlrpclib.Fault(value, msg) - try: - result = server.add_user(user) return result - except xmlrpclib.Fault, fault: - raise xmlrpclib.Fault(fault.faultCode, fault.faultString) - return None - except socket.error, (value, msg): - raise xmlrpclib.Fault(value, msg) - return None + + def get_add_schema(self): + """Get the list of attributes we need to ask when adding a new + user. + """ + server = self.setup_server() + + # FIXME: Hardcoded and designed for the TurboGears GUI. Do we want + # this for the CLI as well? + try: + result = server.get_add_schema() + except xmlrpclib.Fault, fault: + raise xmlrpclib.Fault(fault.faultCode, fault.faultString) + except socket.error, (value, msg): + raise xmlrpclib.Fault(value, msg) + + return result -def get_add_schema(): - """Get the list of attributes we need to ask when adding a new - user. - """ - server = setup_server() + def get_all_users (self): + """Return a list containing a User object for each existing user.""" - # FIXME: Hardcoded and designed for the TurboGears GUI. Do we want - # this for the CLI as well? - try: - result = server.get_add_schema() - except xmlrpclib.Fault, fault: - raise xmlrpclib.Fault(fault, fault.faultString) - return None - except socket.error, (value, msg): - raise xmlrpclib.Fault(value, msg) - return None - - return result + server = self.setup_server() + try: + result = server.get_all_users() + except xmlrpclib.Fault, fault: + raise xmlrpclib.Fault(fault.faultCode, fault.faultString) + except socket.error, (value, msg): + raise xmlrpclib.Fault(value, msg) + + return result -- cgit