diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2009-01-30 23:46:51 -0700 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2009-02-03 15:29:05 -0500 |
commit | 3274577cd608f947d6b07e6dfcbde393edf5a249 (patch) | |
tree | 0e7ab0c0a89849a31539121b1a07e28084ad2eeb /ipaserver | |
parent | c2b0c801400fcb59be8687f9faf061aa85bcffd2 (diff) | |
download | freeipa-3274577cd608f947d6b07e6dfcbde393edf5a249.tar.gz freeipa-3274577cd608f947d6b07e6dfcbde393edf5a249.tar.xz freeipa-3274577cd608f947d6b07e6dfcbde393edf5a249.zip |
Finished small tweaks to get new ipaserver.xmlrpc() mod_python handler working
Diffstat (limited to 'ipaserver')
-rw-r--r-- | ipaserver/__init__.py | 30 | ||||
-rwxr-xr-x | ipaserver/mod_python_xmlrpc.py | 2 | ||||
-rw-r--r-- | ipaserver/rpcserver.py | 10 |
3 files changed, 34 insertions, 8 deletions
diff --git a/ipaserver/__init__.py b/ipaserver/__init__.py index 35f96c7f6..ec2a53649 100644 --- a/ipaserver/__init__.py +++ b/ipaserver/__init__.py @@ -24,27 +24,51 @@ Package containing server backend. from xmlrpclib import dumps, Fault from ipalib import api + +# This is a simple way to ensure that ipalib.api is only initialized +# when ipaserver is imported from within the Apache process: try: from mod_python import apache - api.bootstrap(context='server', log=None, debug=True) + api.bootstrap(context='server', debug=True, log=None) api.finalize() + api.log.info('*** PROCESS START ***') except ImportError: pass def xmlrpc(req): + """ + mod_python handler for XML-RPC requests. + """ if req.method != 'POST': req.allow_methods(['POST'], 1) return apache.HTTP_METHOD_NOT_ALLOWED if apache.mpm_query(apache.AP_MPMQ_IS_THREADED): response = dumps( - Fault(3, 'Apache must use the forked model'), methodresponse=True + Fault(3, 'Apache must use the forked model'), + methodresponse=True, ) else: - response = api.Backend.xmlserver.marshaled_dispatch(req.read(), None) + req.add_common_vars() + response = api.Backend.xmlserver.marshaled_dispatch( + req.read(), + req.subprocess_env.get('KRB5CCNAME'), + ) req.content_type = 'text/xml' req.set_content_length(len(response)) req.write(response) return apache.OK + + +def jsonrpc(req): + """ + mod_python handler for JSON-RPC requests (place holder). + """ + + +def webui(req): + """ + mod_python handler for web-UI requests (place holder). + """ diff --git a/ipaserver/mod_python_xmlrpc.py b/ipaserver/mod_python_xmlrpc.py index 42a7c28c7..0f631f744 100755 --- a/ipaserver/mod_python_xmlrpc.py +++ b/ipaserver/mod_python_xmlrpc.py @@ -25,6 +25,8 @@ """ Production XML-RPC server using mod_python. + +This module is depreciated. See the `ipaserver.xmlrpc()` function. """ import sys diff --git a/ipaserver/rpcserver.py b/ipaserver/rpcserver.py index 36742b094..2ad233dc1 100644 --- a/ipaserver/rpcserver.py +++ b/ipaserver/rpcserver.py @@ -55,20 +55,20 @@ class xmlserver(Executioner): super(xmlserver, self).finalize() def listMethods(self, *params): - return tuple(name.encode('UTF-8') for name in self.Command) + return tuple(name.decode('UTF-8') for name in self.Command) def methodSignature(self, *params): - return 'methodSignature not supported' + return u'methodSignature not implemented' def methodHelp(self, *params): - return 'methodHelp not supported' + return u'methodHelp not implemented' def marshaled_dispatch(self, data, ccache): """ - Execute the XML-RPC request in contained in ``data``. + Execute the XML-RPC request contained in ``data``. """ try: - #self.create_context(ccache=ccache) + self.create_context(ccache=ccache) (params, name) = xml_loads(data) if name in self.__system: response = (self.__system[name](*params),) |