diff --git a/server/json_websockets.py b/server/json_websockets.py index 729c18e..f5799d1 100644 --- a/server/json_websockets.py +++ b/server/json_websockets.py @@ -59,10 +59,11 @@ class JsonWebsocketConnection(object): class JsonWebsocketServer(object): - def __init__(self, handler_class: JsonWebsocketConnection, host:str = 'localhost', port:int = 8765): + def __init__(self, handler_class: JsonWebsocketConnection, host:str = 'localhost', port:int = 8765, ssl_context = None): self._host = host self._port = port self._handler_class = handler_class + self._ssl_context = ssl_context def run(self): async def main(websocket: websockets.WebSocketServerProtocol, @@ -71,8 +72,11 @@ class JsonWebsocketServer(object): connection = self._handler_class(websocket) await connection.run() - - start_server = websockets.serve(main, self._host, self._port) + + if (self._ssl_context is not None): + start_server = websockets.serve(main, self._host, self._port, ssl=self._ssl_context) + else: + start_server = websockets.serve(main, self._host, self._port) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_forever() diff --git a/server/main.py b/server/main.py index 73e0810..ab9e8d3 100644 --- a/server/main.py +++ b/server/main.py @@ -1,7 +1,22 @@ +import ssl +import logging from . import json_websockets from . import crossword_connection +try: + cert_file = "fullchain.pem" + key_file = "privkey.pem" + + ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) + ssl_context.load_cert_chain(cert_file, keyfile=key_file) +except Exception as e: + logging.error("no ssl context available") + ssl_context = None + + server = json_websockets.JsonWebsocketServer( - crossword_connection.CrosswordConnection + crossword_connection.CrosswordConnection, ssl_context=ssl_context ) -server.run() \ No newline at end of file + + +server.run()