3 # Martin von Loewis - python 3 port
5 # See the LICENSE file for legal information regarding use of this file.
7 """xmlrpcserver.py - simple XML RPC server supporting TLS"""
9 from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
12 from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
13 from .tlssocketservermixin import TLSSocketServerMixIn
16 class TLSXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
17 """XMLRPCRequestHandler using TLS"""
19 # Redefine the setup method (see SocketServer.StreamRequestHandler)
21 self.connection = self.request
22 if getattr(self, 'timeout', None) is not None:
24 self.connection.settimeout(self.timeout)
25 self.rfile = self.connection.makefile('rb', self.rbufsize)
26 self.wfile = self.connection.makefile('wb', self.wbufsize)
29 """Handles the HTTPS POST request."""
30 SimpleXMLRPCRequestHandler.do_POST(self)
32 # shut down the connection
33 self.connection.shutdown()
38 class TLSXMLRPCServer(TLSSocketServerMixIn,
40 """Simple XML-RPC server using TLS"""
42 def __init__(self, addr, *args, **kwargs):
43 if not args and not 'requestHandler' in kwargs:
44 kwargs['requestHandler'] = TLSXMLRPCRequestHandler
45 SimpleXMLRPCServer.__init__(self, addr, *args, **kwargs)
48 class MultiPathTLSXMLRPCServer(TLSXMLRPCServer):
49 """Multipath XML-RPC Server using TLS"""
51 def __init__(self, addr, *args, **kwargs):
52 TLSXMLRPCServer.__init__(addr, *args, **kwargs)
54 self.allow_none = allow_none
55 self.encoding = encoding