diff options
| author | Hynek Schlawack <hs@ox.cx> | 2016-03-13 07:51:09 +0100 |
|---|---|---|
| committer | Hynek Schlawack <hs@ox.cx> | 2016-03-13 07:51:09 +0100 |
| commit | 8b7e455b8603248dccb115ee4cd381ebc6434f20 (patch) | |
| tree | 1ce381cdba91b93a32a2ddc69916dfa81c95d305 /examples/SecureXMLRPCServer.py | |
| parent | 61630a000b91c9a2b6ac743d5ae2172981dc18cb (diff) | |
| download | pyopenssl-8b7e455b8603248dccb115ee4cd381ebc6434f20.tar.gz | |
Polish up examples (somewhat)
- Mention them in the docs (arguably a bit hamfistedly).
- Make the README an RST.
- Make them pass flake8 and add flake8 to tox.ini
They should all be rewritten and made Python 3-friendly but that's out
of scope here.
Diffstat (limited to 'examples/SecureXMLRPCServer.py')
| -rw-r--r-- | examples/SecureXMLRPCServer.py | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/examples/SecureXMLRPCServer.py b/examples/SecureXMLRPCServer.py index 757b49c..56bfaea 100644 --- a/examples/SecureXMLRPCServer.py +++ b/examples/SecureXMLRPCServer.py @@ -14,11 +14,15 @@ been extensively tested. This code is in the public domain. It is provided AS-IS WITH NO WARRANTY WHATSOEVER. """ -import SocketServer -import os, socket + import SimpleXMLRPCServer +import SocketServer +import os +import socket + from OpenSSL import SSL + class SSLWrapper: """ This whole class exists just to filter out a parameter @@ -30,10 +34,13 @@ class SSLWrapper: so I'm making a proxy instead of subclassing. """ self.__dict__["conn"] = conn - def __getattr__(self,name): + + def __getattr__(self, name): return getattr(self.__dict__["conn"], name) - def __setattr__(self,name, value): + + def __setattr__(self, name, value): setattr(self.__dict__["conn"], name, value) + def shutdown(self, how=1): """ SimpleXMLRpcServer.doPOST calls shutdown(1), @@ -41,6 +48,7 @@ class SSLWrapper: an argument. So we just discard the argument. """ self.__dict__["conn"].shutdown() + def accept(self): """ This is the other part of the shutdown() workaround. @@ -51,42 +59,48 @@ class SSLWrapper: return (SSLWrapper(c), a) - class SecureTCPServer(SocketServer.TCPServer): """ Just like TCPServer, but use a socket. This really ought to let you specify the key and certificate files. """ def __init__(self, server_address, RequestHandlerClass): - SocketServer.BaseServer.__init__(self, server_address, RequestHandlerClass) + SocketServer.BaseServer.__init__( + self, server_address, RequestHandlerClass + ) - ## Same as normal, but make it secure: + # Same as normal, but make it secure: ctx = SSL.Context(SSL.SSLv23_METHOD) ctx.set_options(SSL.OP_NO_SSLv2) dir = os.curdir - ctx.use_privatekey_file (os.path.join(dir, 'server.pkey')) + ctx.use_privatekey_file(os.path.join(dir, 'server.pkey')) ctx.use_certificate_file(os.path.join(dir, 'server.cert')) - self.socket = SSLWrapper(SSL.Connection(ctx, socket.socket(self.address_family, - self.socket_type))) + self.socket = SSLWrapper( + SSL.Connection( + ctx, socket.socket(self.address_family, self.socket_type) + ) + ) self.server_bind() self.server_activate() -class SecureXMLRPCRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): +class SecureXMLRPCRequestHandler( + SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): def setup(self): """ We need to use socket._fileobject Because SSL.Connection doesn't have a 'dup'. Not exactly sure WHY this is, but this is backed up by comments in socket.py and SSL/connection.c """ - self.connection = self.request # for doPOST + self.connection = self.request # for doPOST self.rfile = socket._fileobject(self.request, "rb", self.rbufsize) self.wfile = socket._fileobject(self.request, "wb", self.wbufsize) - -class SecureXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer, SecureTCPServer): + +class SecureXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer, + SecureTCPServer): def __init__(self, addr, requestHandler=SecureXMLRPCRequestHandler, logRequests=1): @@ -99,4 +113,3 @@ class SecureXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer, SecureTCPServer) self.logRequests = logRequests self.instance = None SecureTCPServer.__init__(self, addr, requestHandler) - |
