Home | History | Annotate | Download | only in integration
      1 # Authors:
      2 #   Kees Bos
      3 #   Martin von Loewis - python 3 port
      4 #
      5 # See the LICENSE file for legal information regarding use of this file.
      6 
      7 """xmlrpcserver.py - simple XML RPC server supporting TLS"""
      8 try:
      9     from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
     10 except ImportError:
     11     # Python 3
     12     from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
     13 from .tlssocketservermixin import TLSSocketServerMixIn
     14 
     15 
     16 class TLSXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
     17     """XMLRPCRequestHandler using TLS"""
     18     
     19     # Redefine the setup method (see SocketServer.StreamRequestHandler)
     20     def setup(self):
     21         self.connection = self.request
     22         if getattr(self, 'timeout', None) is not None:
     23             # Python 2.7
     24             self.connection.settimeout(self.timeout)
     25         self.rfile = self.connection.makefile('rb', self.rbufsize)
     26         self.wfile = self.connection.makefile('wb', self.wbufsize)
     27         
     28     def do_POST(self):
     29         """Handles the HTTPS POST request."""
     30         SimpleXMLRPCRequestHandler.do_POST(self)
     31         try:
     32             # shut down the connection
     33             self.connection.shutdown()
     34         except:
     35             pass
     36 
     37 
     38 class TLSXMLRPCServer(TLSSocketServerMixIn,
     39                       SimpleXMLRPCServer):
     40     """Simple XML-RPC server using TLS""" 
     41 
     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)
     46 
     47 
     48 class MultiPathTLSXMLRPCServer(TLSXMLRPCServer):
     49     """Multipath XML-RPC Server using TLS"""
     50 
     51     def __init__(self, addr, *args, **kwargs):
     52         TLSXMLRPCServer.__init__(addr, *args, **kwargs)
     53         self.dispatchers = {}
     54         self.allow_none = allow_none
     55         self.encoding = encoding
     56