From a5b7e3f56b8a3bddfafa1811061cd146f7c818e1 Mon Sep 17 00:00:00 2001 From: "rcritten@redhat.com" Date: Mon, 27 Aug 2007 13:45:28 -0400 Subject: Include any LDAP error strings in XML-RPC Fault exceptions Put a try/except around attempts to determine user uniqueness --- ipa-server/xmlrpc-server/ipaxmlrpc.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'ipa-server/xmlrpc-server/ipaxmlrpc.py') diff --git a/ipa-server/xmlrpc-server/ipaxmlrpc.py b/ipa-server/xmlrpc-server/ipaxmlrpc.py index 3f30f8fb..32a7e808 100644 --- a/ipa-server/xmlrpc-server/ipaxmlrpc.py +++ b/ipa-server/xmlrpc-server/ipaxmlrpc.py @@ -36,6 +36,7 @@ from mod_python import apache import ipaserver import funcs from ipa import ipaerror +import ldap import string import base64 @@ -150,7 +151,12 @@ class ModXMLRPCRequestHandler(object): response = dumps(response, methodresponse=1, allow_none=1) except ipaerror.IPAError, e: self.traceback = True - response = dumps(Fault(e.code, str(e))) + + if (isinstance(e.detail, ldap.LDAPError)): +u err = ": %s: %s" % (e.detail.args[0]['desc'], e.detail.args[0].get('info','')) + response = dumps(Fault(e.code, str(e) + err)) + else: + response = dumps(Fault(e.code, str(e))) except: self.traceback = True # report exception back to server -- cgit From f437ecfad16a8c735a99b70949545c56c5e430e1 Mon Sep 17 00:00:00 2001 From: Karl MacMillan Date: Tue, 28 Aug 2007 09:50:43 -0400 Subject: Fix minor error in previous patch. --- ipa-server/xmlrpc-server/ipaxmlrpc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ipa-server/xmlrpc-server/ipaxmlrpc.py') diff --git a/ipa-server/xmlrpc-server/ipaxmlrpc.py b/ipa-server/xmlrpc-server/ipaxmlrpc.py index 32a7e808..9ef1e1b0 100644 --- a/ipa-server/xmlrpc-server/ipaxmlrpc.py +++ b/ipa-server/xmlrpc-server/ipaxmlrpc.py @@ -153,7 +153,7 @@ class ModXMLRPCRequestHandler(object): self.traceback = True if (isinstance(e.detail, ldap.LDAPError)): -u err = ": %s: %s" % (e.detail.args[0]['desc'], e.detail.args[0].get('info','')) + err = ": %s: %s" % (e.detail.args[0]['desc'], e.detail.args[0].get('info','')) response = dumps(Fault(e.code, str(e) + err)) else: response = dumps(Fault(e.code, str(e))) -- cgit From 6eea6664e079d187c3b0420b4283af35205d3b03 Mon Sep 17 00:00:00 2001 From: Karl MacMillan Date: Tue, 28 Aug 2007 09:58:10 -0400 Subject: This patch wraps binary data in an xmlrpclib Binary object. This removes the need for LDIF conversion. It will make TurboGears direct code faster, but should keep xmlrpc about the same speed. The patch also swaps out ldap.cidict for the IPA CIDict class. IPA code should only use the CIDict class now. --- ipa-server/xmlrpc-server/ipaxmlrpc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'ipa-server/xmlrpc-server/ipaxmlrpc.py') diff --git a/ipa-server/xmlrpc-server/ipaxmlrpc.py b/ipa-server/xmlrpc-server/ipaxmlrpc.py index 9ef1e1b0..16ced2cd 100644 --- a/ipa-server/xmlrpc-server/ipaxmlrpc.py +++ b/ipa-server/xmlrpc-server/ipaxmlrpc.py @@ -35,7 +35,7 @@ from mod_python import apache import ipaserver import funcs -from ipa import ipaerror +from ipa import ipaerror, ipautil import ldap import string @@ -173,14 +173,14 @@ class ModXMLRPCRequestHandler(object): if func is None: raise Fault(1, "Invalid method: %s" % method) - args = list(params) + args = list(ipautil.unwrap_binary_data(params)) for i in range(len(args)): if args[i] == '__NONE__': args[i] = None ret = func(*args) - return ret + return ipautil.wrap_binary_data(ret) def multiCall(self, calls): """Execute a multicall. Execute each method call in the calls list, collecting -- cgit