diff --git a/logtailer.ini b/logtailer.ini index c5702b4..216238a 100644 --- a/logtailer.ini +++ b/logtailer.ini @@ -7,6 +7,11 @@ Host=0.0.0.0 # new WebSocket("ws://" + window.location.hostname ... Port=5678 +# set to True if SSL will be used +Ssl=False +SslCert=/path/to/cert +SslKey=/path/to/keyfile + # This defines the maximum amount of loglines to be sent on initial opening of the dashboard MaxLines=500 diff --git a/logtailer.py b/logtailer.py index c211aee..42ad9cf 100644 --- a/logtailer.py +++ b/logtailer.py @@ -15,6 +15,7 @@ from urllib.parse import urlparse, parse_qs from ansi2html import Ansi2HTMLConverter from os import popen import psutil +import ssl import functools from http import HTTPStatus import subprocess @@ -332,11 +333,18 @@ def log_close(websocket, path, exception=None): def websocketserver(): - start_server = websockets.serve(view_log, config['DEFAULT']['Host'], config['DEFAULT']['Port']) + if (config['DEFAULT']['Ssl'] == "True"): + ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) + cert_pem = config['DEFAULT']['SslCert'] + key_pem = config['DEFAULT']['SslKey'] + + ssl_context.load_cert_chain(cert_pem, key_pem) + start_server = websockets.serve(view_log, config['DEFAULT']['Host'], config['DEFAULT']['Port'], ssl=ssl_context) + else: + start_server = websockets.serve(view_log, config['DEFAULT']['Host'], config['DEFAULT']['Port']) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_forever() - def main(): dmr_id_lookup = config['MMDVMHost']['DMR_ID_Lookup'] dmr_id_lookupfile = config['MMDVMHost']['DMR_ID_LookupFile']