also listen on a SSL websocket

This commit is contained in:
2021-06-16 16:41:03 -04:00
parent d27ad50c0e
commit 3e771d7aba
+20 -1
View File
@@ -2,13 +2,15 @@
# $Id: hbd,v 1.38 2013/07/14 02:25:05 andreas Exp $ # $Id: hbd,v 1.38 2013/07/14 02:25:05 andreas Exp $
# Wait for heartbeat messages and act on them (or their absence) # Wait for heartbeat messages and act on them (or their absence)
# #
VER = 4.1 VER = 4.2
import time import time
import os import os
import string import string
import sys import sys
import socket import socket
import ssl
import pathlib
import atexit import atexit
import select import select
import socketserver import socketserver
@@ -36,6 +38,9 @@ from subprocess import Popen, STDOUT, PIPE
#from hbdclass import * #from hbdclass import *
import hbdclass import hbdclass
CERT_PATH="/usr/local/etc/letsencrypt/live/w02.wrede.ca/"
WSS_PEM = CERT_PATH + "fullchain.pem"
WSS_KEY = CERT_PATH + "privkey.pem"
NSUPDATE_BIN = "/usr/local/bin/nsupdate" # override in .hbrc possible NSUPDATE_BIN = "/usr/local/bin/nsupdate" # override in .hbrc possible
@@ -59,6 +64,7 @@ PORT = 50003
TPORT = 50004 TPORT = 50004
THOST = "" THOST = ""
WSPORT = 50005 WSPORT = 50005
WSSPORT = 50006
verbose = False verbose = False
@@ -856,7 +862,10 @@ async def ws_serve(websocket, path):
jmsg = json.dumps({'type': 'message', 'data': m }) jmsg = json.dumps({'type': 'message', 'data': m })
await websocket.send(jmsg) await websocket.send(jmsg)
try:
del ws_connections[websocket] del ws_connections[websocket]
except Exception as e:
print(f"warning: failed to delete websocket: {e}")
def websocketupdater(): def websocketupdater():
loop.run_forever() loop.run_forever()
@@ -1108,7 +1117,17 @@ except:
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
wss_pem = pathlib.Path(WSS_PEM)
wss_key = pathlib.Path(WSS_KEY)
ssl_context.load_cert_chain(wss_pem, keyfile=wss_key)
wss_start_server = websockets.serve(ws_serve, hbd_host, WSSPORT, ssl=ssl_context)
loop.run_until_complete(wss_start_server)
ws_start_server = websockets.serve(ws_serve, hbd_host, WSPORT) ws_start_server = websockets.serve(ws_serve, hbd_host, WSPORT)
loop.run_until_complete(ws_start_server) loop.run_until_complete(ws_start_server)
servthread = threading.Thread(target=serv.serve_forever) servthread = threading.Thread(target=serv.serve_forever)