diff --git a/doc/_sources/changelog.rst.txt b/doc/_sources/changelog.rst.txt index 4d9c94d..c57fd85 100644 --- a/doc/_sources/changelog.rst.txt +++ b/doc/_sources/changelog.rst.txt @@ -1,3 +1,24 @@ +0.21.0 +====== +* New timeout error API: .is_timeout=True on exception object + It's now easy to test if network error is transient and retry is appropriate. + Please spread the word and invite other libraries to support this interface. +* hubs: use monotonic clock by default (bundled package); Thanks to Roman Podoliaka and Victor Stinner +* dns: EVENTLET_NO_GREENDNS option is back, green is still default +* dns: hosts file was consulted after nameservers +* ssl: RecursionError on Python3.6+; Thanks to justdoit0823@github and Gevent developers +* wsgi: log_output=False was not disabling startup and accepted messages +* greenio: Fixed OSError: [WinError 10038] Socket operation on nonsocket +* dns: EAI_NODATA was removed from RFC3493 and FreeBSD +* green.select: fix mark_as_closed() wrong number of args +* green.zmq: socket.{recv,send}_* signatures did not match recent upstream pyzmq +* New feature: Add zipkin tracing to eventlet +* db_pool: proxy Connection.set_isolation_level() +* green.zmq: support RCVTIMEO (receive timeout) +* green.profile: Python3 compatibility; Thanks to Artur Stawiarski +* support: upgrade bundled six to 1.10 (dbfbfc818e3d) +* python3.6: http.client.request support chunked_encoding + 0.20.1 ====== * dns: try unqualified queries as top level diff --git a/doc/_sources/ssl.rst.txt b/doc/_sources/ssl.rst.txt index f89ec54..b84485b 100644 --- a/doc/_sources/ssl.rst.txt +++ b/doc/_sources/ssl.rst.txt @@ -30,14 +30,24 @@ PyOpenSSL :mod:`eventlet.green.OpenSSL` has exactly the same interface as pyOpenSSL_ `(docs) `_, and works in all versions of Python. This module is much more powerful than :func:`socket.ssl`, and may have some advantages over :mod:`ssl`, depending on your needs. -Here's an example of a server:: +For testing purpose first create self-signed certificate using following commands :: + + $ openssl genrsa 1024 > server.key + $ openssl req -new -x509 -nodes -sha1 -days 365 -key server.key > server.cert + +Keep these Private key and Self-signed certificate in same directory as `server.py` and `client.py` for simplicity sake. + +Here's an example of a server (`server.py`) :: from eventlet.green import socket from eventlet.green.OpenSSL import SSL # insecure context, only for example purposes context = SSL.Context(SSL.SSLv23_METHOD) - context.set_verify(SSL.VERIFY_NONE, lambda *x: True)) + # Pass server's private key created + context.use_privatekey_file('server.key') + # Pass self-signed certificate created + context.use_certificate_file('server.cert') # create underlying green socket and wrap it in ssl sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -45,7 +55,7 @@ Here's an example of a server:: # configure as server connection.set_accept_state() - connection.bind(('127.0.0.1', 80443)) + connection.bind(('127.0.0.1', 8443)) connection.listen(50) # accept one client connection then close up shop @@ -55,4 +65,28 @@ Here's an example of a server:: client_conn.close() connection.close() +Here's an example of a client (`client.py`) :: + + import socket + # Create socket + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + # Connect to server + s.connect(('127.0.0.1', 8443)) + sslSocket = socket.ssl(s) + print repr(sslSocket.server()) + print repr(sslSocket.issuer()) + sslSocket.write('Hello secure socket\n') + # Close client + s.close() + +Running example:: + +In first terminal + + $ python server.py + +In another terminal + + $ python client.py + .. _pyOpenSSL: https://launchpad.net/pyopenssl diff --git a/doc/authors.html b/doc/authors.html index 4e23b8d..55fd54d 100644 --- a/doc/authors.html +++ b/doc/authors.html @@ -6,7 +6,7 @@ - Authors — Eventlet 0.20.1 documentation + Authors — Eventlet 0.21.0 documentation @@ -14,7 +14,7 @@