From 7164f0edadd13c81f9cdc88efaa37360a30a6708 Mon Sep 17 00:00:00 2001 From: Per Qvarforth Date: Wed, 2 Feb 2022 22:16:42 +0100 Subject: [PATCH] support for websocket external port --- config/trackdirect.ini | 9 ++++++--- server/bin/wsserver.py | 8 +++++--- server/trackdirect/TrackDirectConfig.py | 8 ++++++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/config/trackdirect.ini b/config/trackdirect.ini index 769dd48..5fc8d1d 100644 --- a/config/trackdirect.ini +++ b/config/trackdirect.ini @@ -25,11 +25,14 @@ save_ogn_stations_with_missing_identity="0" [websocket_server] ;; Websocket server host -host="localhost" +host="0.0.0.0" -;; Websocket server port (must be same as port specified in index.php) +;; Websocket server port, must be same as port specified in index.php (if not using a reverse proxy) port="9000" +;; If you are using a reverse proxy you need to play with the "external_port" setting, otherwise it should be the same as "port" +external_port="9000" + ;; Websocket server log output error_log="~/trackdirect/server/log/wsserver_aprs.log" @@ -60,7 +63,7 @@ aprs_source_id1="1" ;; Allow time travel ;; Use this settings to disable/enable data requests with a time interval (this must be disabled for the OGN network) -allow_time_travel="1" +allow_time_travel="0" ;; Max default time in minutes (how old packets that will be included in the response) ;; This setting should be no more than 1440 for for the OGN network. diff --git a/server/bin/wsserver.py b/server/bin/wsserver.py index 193b608..57cdfab 100644 --- a/server/bin/wsserver.py +++ b/server/bin/wsserver.py @@ -26,7 +26,8 @@ def master(options, trackDirectLogger): try: factory = WebSocketServerFactory( - "ws://" + config.websocketHostname + ":" + str(config.websocketPort)) + "ws://" + config.websocketHostname + ":" + str(config.websocketPort), + externalPort = config.websocketExternalPort) factory.protocol = trackdirect.TrackDirectWebsocketServer resource = WebSocketResource(factory) @@ -66,7 +67,8 @@ def worker(options, trackDirectLogger): trackDirectLogger.warning("Starting worker with PID " + str(workerPid)) factory = WebSocketServerFactory( - "ws://" + config.websocketHostname + ":" + str(config.websocketPort)) + "ws://" + config.websocketHostname + ":" + str(config.websocketPort), + externalPort = config.websocketExternalPort) factory.protocol = trackdirect.TrackDirectWebsocketServer # Enable WebSocket extension "permessage-deflate". @@ -98,7 +100,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser( description='Track Direct WebSocket Server') parser.add_argument('--config', dest='config', type=str, default=None, - help='The Track Direct config file, e.g. aprsdirect.ini') + help='The Track Direct config file, e.g. trackdirect.ini') parser.add_argument('--workers', dest='workers', type=int, default=DEFAULT_WORKERS, help='Number of workers to spawn - should fit the number of (physical) CPU cores.') parser.add_argument('--fd', dest='fd', type=int, default=None, diff --git a/server/trackdirect/TrackDirectConfig.py b/server/trackdirect/TrackDirectConfig.py index b8c2217..035c7ee 100644 --- a/server/trackdirect/TrackDirectConfig.py +++ b/server/trackdirect/TrackDirectConfig.py @@ -62,6 +62,14 @@ class TrackDirectConfig(Singleton): 'websocket_server', 'host').strip('"') self.websocketPort = int(configParser.get( 'websocket_server', 'port').strip('"')) + + self.websocketExternalPort = self.websocketPort + try : + self.websocketExternalPort = int(configParser.get( + 'websocket_server', 'external_port').strip('"')) + except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): + pass + self.errorLog = configParser.get( 'websocket_server', 'error_log').strip('"') self.websocketFrequencyLimit = configParser.get(