diff --git a/htdocs/public/views/about.php b/htdocs/public/views/about.php
index c5a4eee..96b190e 100644
--- a/htdocs/public/views/about.php
+++ b/htdocs/public/views/about.php
@@ -4,7 +4,7 @@
1. I have a question. Who may I contact?
- Maintainer of this website is .
+ Maintainer of this website is .
2. What is APRS?
diff --git a/server/bin/wsserver.py b/server/bin/wsserver.py
index e83d22b..4ad7d1d 100644
--- a/server/bin/wsserver.py
+++ b/server/bin/wsserver.py
@@ -49,8 +49,9 @@ def master(options, trackDirectLogger):
childFDs={0: 0, 1: 1, 2: 2, port.fileno(): port.fileno()},
env=os.environ)
- reactor.suggestThreadPoolSize(25)
- reactor.run()
+ options.fd = port.fileno()
+ listen(options, trackDirectLogger)
+
except Exception as e:
trackDirectLogger.error(e, exc_info=1)
@@ -69,34 +70,40 @@ def worker(options, trackDirectLogger):
trackDirectLogger.warning("Starting worker with PID " + str(workerPid) + " (on CPU id(s): " + ','.join(map(str, p.cpu_affinity())) + ")")
- factory = WebSocketServerFactory(
- "ws://" + config.websocketHostname + ":" + str(config.websocketPort),
- externalPort = config.websocketExternalPort)
- factory.protocol = trackdirect.TrackDirectWebsocketServer
+ listen(options, trackDirectLogger)
- # Enable WebSocket extension "permessage-deflate".
- # Function to accept offers from the client ..
- def accept(offers):
- for offer in offers:
- if isinstance(offer, PerMessageDeflateOffer):
- return PerMessageDeflateOfferAccept(offer)
- factory.setProtocolOptions(perMessageCompressionAccept=accept)
-
- reactor.suggestThreadPoolSize(25)
-
- resource = WebSocketResource(factory)
- root = File(".")
- root.putChild(b"ws", resource)
- site = Site(root)
-
- # The master already created the socket, just start listening and accepting
- reactor.adoptStreamPort(options.fd, AF_INET, factory)
-
- reactor.run()
except Exception as e:
trackDirectLogger.error(e, exc_info=1)
+def listen(options, trackDirectLogger) :
+ """
+ Start to listen on websocket requests.
+ """
+ config = trackdirect.TrackDirectConfig()
+ config.populate(options.config)
+
+ factory = WebSocketServerFactory(
+ "ws://" + config.websocketHostname + ":" + str(config.websocketPort),
+ externalPort = config.websocketExternalPort)
+ factory.protocol = trackdirect.TrackDirectWebsocketServer
+
+ # Enable WebSocket extension "permessage-deflate".
+ # Function to accept offers from the client ..
+ def accept(offers):
+ for offer in offers:
+ if isinstance(offer, PerMessageDeflateOffer):
+ return PerMessageDeflateOfferAccept(offer)
+ factory.setProtocolOptions(perMessageCompressionAccept=accept)
+
+ reactor.suggestThreadPoolSize(25)
+
+ # Socket already created, just start listening and accepting
+ reactor.adoptStreamPort(options.fd, AF_INET, factory)
+
+ reactor.run()
+
+
if __name__ == '__main__':
DEFAULT_WORKERS = psutil.cpu_count()
diff --git a/server/trackdirect/TrackDirectWebsocketServer.py b/server/trackdirect/TrackDirectWebsocketServer.py
index 133a6e9..9633f7a 100644
--- a/server/trackdirect/TrackDirectWebsocketServer.py
+++ b/server/trackdirect/TrackDirectWebsocketServer.py
@@ -11,6 +11,7 @@ import datetime
import time
import psycopg2
import psycopg2.extras
+import os
import re
from trackdirect.TrackDirectConfig import TrackDirectConfig
@@ -63,11 +64,11 @@ class TrackDirectWebsocketServer(WebSocketServerProtocol):
"""
try:
if ('x-forwarded-for' in request.headers):
- self.logger.warning("Client connecting from origin: {0}, x-forwarded-for: {1}".format(
- request.origin, request.headers['x-forwarded-for']))
+ self.logger.warning("Client connecting from origin: {0}, x-forwarded-for: {1} (server pid {2})".format(
+ request.origin, request.headers['x-forwarded-for'], str(os.getpid())))
else:
self.logger.warning(
- "Client connecting from origin: {0}".format(request.origin))
+ "Client connecting from origin: {0} (server pid {1})".format(request.origin, str(os.getpid())))
except Exception as e:
self.logger.error(e, exc_info=1)