Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / tlslite / tlslite / integration / xmlrpcserver.py
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