OLD | NEW |
(Empty) | |
| 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, SimpleXMLRPCRequestHandle
r |
| 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 |
OLD | NEW |