From 0618f75734e189f857fd644e500a1957092283dd Mon Sep 17 00:00:00 2001 From: Chip Senkbeil Date: Tue, 5 Jan 2016 16:30:17 -0600 Subject: [PATCH] Added SSL enablement for eventlet --- flask_socketio/__init__.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/flask_socketio/__init__.py b/flask_socketio/__init__.py index 22c586fe..e5044cba 100644 --- a/flask_socketio/__init__.py +++ b/flask_socketio/__init__.py @@ -375,7 +375,22 @@ def run(self, app, host=None, port=None, **kwargs): elif self.server.eio.async_mode == 'eventlet': def run_server(): import eventlet - eventlet.wsgi.server(eventlet.listen((host, port)), app, + eventlet_socket = eventlet.listen((host, port)) + + # If provided an SSL argument, use an SSL socket + ssl_args = ['keyfile', 'certfile', 'server_side', 'cert_reqs', + 'ssl_version', 'ca_certs', + 'do_handshake_on_connect', 'suppress_ragged_eofs', + 'ciphers'] + ssl_params = {k: kwargs[k] for k in kwargs if k in ssl_args} + if len(ssl_params) > 0: + for k in ssl_params: + kwargs.pop(k) + ssl_params['server_side'] = True # Listening requires true + eventlet_socket = eventlet.wrap_ssl(eventlet_socket, + **ssl_params) + + eventlet.wsgi.server(eventlet_socket, app, log_output=log_output, **kwargs) if use_reloader: