Source code for tlslite.integration.xmlrpcserver

# Authors:
#   Kees Bos
#   Martin von Loewis - python 3 port
#
# See the LICENSE file for legal information regarding use of this file.

"""xmlrpcserver.py - simple XML RPC server supporting TLS."""

try:
    from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
except ImportError:
    # Python 3
    from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
from .tlssocketservermixin import TLSSocketServerMixIn


[docs] class TLSXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): """XMLRPCRequestHandler using TLS.""" # Redefine the setup method (see SocketServer.StreamRequestHandler)
[docs] def setup(self): """Setup the connection for TLS.""" self.connection = self.request if getattr(self, 'timeout', None) is not None: # Python 2.7 self.connection.settimeout(self.timeout) self.rfile = self.connection.makefile('rb', self.rbufsize) self.wfile = self.connection.makefile('wb', self.wbufsize)
[docs] def do_POST(self): """Handle the HTTPS POST request.""" SimpleXMLRPCRequestHandler.do_POST(self) try: # shut down the connection self.connection.shutdown() except: pass
[docs] class TLSXMLRPCServer(TLSSocketServerMixIn, SimpleXMLRPCServer): """Simple XML-RPC server using TLS."""
[docs] def __init__(self, addr, *args, **kwargs): if not args and not 'requestHandler' in kwargs: kwargs['requestHandler'] = TLSXMLRPCRequestHandler SimpleXMLRPCServer.__init__(self, addr, *args, **kwargs)
[docs] class MultiPathTLSXMLRPCServer(TLSXMLRPCServer): """Multipath XML-RPC Server using TLS."""
[docs] def __init__(self, addr, *args, **kwargs): TLSXMLRPCServer.__init__(addr, *args, **kwargs) self.dispatchers = {} self.allow_none = allow_none self.encoding = encoding