From 0313f03277cf0b3e3b24019fd22734dab65d4860 Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Fri, 23 Jan 2009 12:51:48 -0700 Subject: Added ServiceError (KerberosError) and make rpc.KerbTransport raise it if appropriate --- ipalib/rpc.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'ipalib/rpc.py') diff --git a/ipalib/rpc.py b/ipalib/rpc.py index 55f3ea95..9e7060d2 100644 --- a/ipalib/rpc.py +++ b/ipalib/rpc.py @@ -37,6 +37,7 @@ from xmlrpclib import Binary, Fault, dumps, loads, ServerProxy, SafeTransport import kerberos from ipalib.backend import Backend from ipalib.errors2 import public_errors, PublicError, UnknownError, NetworkError +from ipalib import errors2 from ipalib.request import context @@ -178,7 +179,6 @@ class KerbTransport(SafeTransport): """ def get_host_info(self, host): - (host, extra_headers, x509) = SafeTransport.get_host_info(self, host) # Set the remote host principal @@ -192,7 +192,11 @@ class KerbTransport(SafeTransport): try: kerberos.authGSSClientStep(vc, "") except kerberos.GSSError, e: - raise e # FIXME: raise a PublicError + (major, minor) = e.args + if minor[1] == -1765328377: + raise errors2.ServiceError(service=service) + else: + raise e extra_headers += [ ('Authorization', 'negotiate %s' % kerberos.authGSSClientResponse(vc)) @@ -220,6 +224,7 @@ class xmlclient(Backend): ) ) conn = ServerProxy(self.env.xmlrpc_uri, + transport=KerbTransport(), allow_none=True, encoding='UTF-8', ) -- cgit