1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
https://github.com/p-push/pycurl/commit/8644393bec56cd05c19d5dbe420ff741ba899d10
diff --git a/tests/runwsgi.py b/tests/runwsgi.py
index f419d7c..242ef1d 100644
--- a/tests/runwsgi.py
+++ b/tests/runwsgi.py
@@ -11,6 +11,10 @@
class Server(bottle.WSGIRefServer):
def run(self, handler): # pragma: no cover
+ self.srv = self.make_server(handler)
+ self.serve()
+
+ def make_server(self, handler):
from wsgiref.simple_server import make_server, WSGIRequestHandler
if self.quiet:
base = self.options.get('handler_class', WSGIRequestHandler)
@@ -18,7 +22,10 @@ class QuietHandler(base):
def log_request(*args, **kw):
pass
self.options['handler_class'] = QuietHandler
- self.srv = make_server(self.host, self.port, handler, **self.options)
+ srv = make_server(self.host, self.port, handler, **self.options)
+ return srv
+
+ def serve(self):
if sys.version_info[0] == 2 and sys.version_info[1] < 6:
# python 2.5 has no poll_interval
# and thus no way to stop the server
@@ -27,20 +34,21 @@ def log_request(*args, **kw):
else:
self.srv.serve_forever(poll_interval=0.1)
-class SslServer(bottle.CherryPyServer):
- def run(self, handler):
- import cherrypy.wsgiserver, cherrypy.wsgiserver.ssl_builtin
- server = cherrypy.wsgiserver.CherryPyWSGIServer((self.host, self.port), handler)
+# http://www.socouldanyone.com/2014/01/bottle-with-ssl.html
+# https://github.com/mfm24/miscpython/blob/master/bottle_ssl.py
+class SslServer(Server):
+ def run(self, handler): # pragma: no cover
+ self.srv = self.make_server(handler)
+
+ import ssl
cert_dir = os.path.join(os.path.dirname(__file__), 'certs')
- ssl_adapter = cherrypy.wsgiserver.ssl_builtin.BuiltinSSLAdapter(
- os.path.join(cert_dir, 'server.crt'),
- os.path.join(cert_dir, 'server.key'),
- )
- server.ssl_adapter = ssl_adapter
- try:
- server.start()
- finally:
- server.stop()
+ self.srv.socket = ssl.wrap_socket(
+ self.srv.socket,
+ keyfile=os.path.join(cert_dir, 'server.key'),
+ certfile=os.path.join(cert_dir, 'server.crt'),
+ server_side=True)
+
+ self.serve()
def start_bottle_server(app, port, server, **kwargs):
server_thread = ServerThread(app, port, server, kwargs)
|