From a682662ca1f9ffa20a03e4c241262e15abbecbc6 Mon Sep 17 00:00:00 2001 From: Loren Eteval Date: Tue, 5 Sep 2023 13:12:15 +0800 Subject: [PATCH] Add default tor relay establish timeout constant Signed-off-by: Loren Eteval --- Furious/Action/Connect.py | 8 +++++--- Furious/Core/TorRelay.py | 23 ++++++++++++++++------- Furious/Utility/Constants.py | 2 ++ Furious/Widget/TorRelaySettings.py | 5 ++++- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Furious/Action/Connect.py b/Furious/Action/Connect.py index 550d898..b8b480b 100644 --- a/Furious/Action/Connect.py +++ b/Furious/Action/Connect.py @@ -35,6 +35,7 @@ from Furious.Utility.Constants import ( APPLICATION_TUN_GATEWAY_ADDRESS, DEFAULT_TOR_HTTPS_PORT, DEFAULT_TOR_SOCKS_PORT, + DEFAULT_TOR_RELAY_ESTABLISH_TIMEOUT, ) from Furious.Utility.Utility import ( Switch, @@ -935,13 +936,14 @@ class ConnectAction(Action): try: timeout = 1000 * int( - self.torRelayStorageObj.get('relayEstablishTimeout', 15) + self.torRelayStorageObj.get( + 'relayEstablishTimeout', DEFAULT_TOR_RELAY_ESTABLISH_TIMEOUT + ) ) except Exception: # Any non-exit exceptions - # 15s - timeout = 1000 * 15 + timeout = 1000 * DEFAULT_TOR_RELAY_ESTABLISH_TIMEOUT logger.info(f'{TorRelay.name()} bootstrap timeout is {timeout // 1000}s') diff --git a/Furious/Core/TorRelay.py b/Furious/Core/TorRelay.py index 3ecd9be..38ed37b 100644 --- a/Furious/Core/TorRelay.py +++ b/Furious/Core/TorRelay.py @@ -18,6 +18,7 @@ from Furious.Core.Core import Core from Furious.Utility.Constants import ( APP, + PLATFORM, DATA_DIR, DEFAULT_TOR_SOCKS_PORT, DEFAULT_TOR_HTTPS_PORT, @@ -54,13 +55,21 @@ class TorRelayStarter(AsyncSubprocessMessage): return APP().torRelaySettingsWidget.StorageObj def launch(self, proxyServer): - self.torRelay = subprocess.Popen( - ['tor', '-f', '-'], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - creationflags=subprocess.CREATE_NO_WINDOW, - ) + if PLATFORM == 'Windows': + self.torRelay = subprocess.Popen( + ['tor', '-f', '-'], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + creationflags=subprocess.CREATE_NO_WINDOW, + ) + else: + self.torRelay = subprocess.Popen( + ['tor', '-f', '-'], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) torConfig = ( f'SocksPort {self.torRelayStorageObj.get("socksTunnelPort", DEFAULT_TOR_SOCKS_PORT)}\n' diff --git a/Furious/Utility/Constants.py b/Furious/Utility/Constants.py index c47690e..dfccb98 100644 --- a/Furious/Utility/Constants.py +++ b/Furious/Utility/Constants.py @@ -76,6 +76,8 @@ TOR_FAQ_LABEL = f'Tor FAQ: {TOR_FAQ_URL}' # Avoid standard Tor port in case of running Tor services DEFAULT_TOR_SOCKS_PORT = 9048 DEFAULT_TOR_HTTPS_PORT = 9047 +# 20s +DEFAULT_TOR_RELAY_ESTABLISH_TIMEOUT = 20 ADMINISTRATOR_NAME = 'Administrator' if PLATFORM == 'Windows' else 'root' diff --git a/Furious/Widget/TorRelaySettings.py b/Furious/Widget/TorRelaySettings.py index 63db6cb..f256242 100644 --- a/Furious/Widget/TorRelaySettings.py +++ b/Furious/Widget/TorRelaySettings.py @@ -21,6 +21,7 @@ from Furious.Utility.Constants import ( PLATFORM, DEFAULT_TOR_SOCKS_PORT, DEFAULT_TOR_HTTPS_PORT, + DEFAULT_TOR_RELAY_ESTABLISH_TIMEOUT, ) from Furious.Utility.Utility import ( StateContext, @@ -215,7 +216,9 @@ class TorRelaySettingsWidget(Translatable, SupportConnectedCallback, QDialog): self.StorageObj.get('logLevel', 'notice') ) self.torRelayTimeoutSpinBox.setValue( - self.StorageObj.get('relayEstablishTimeout', 15) + self.StorageObj.get( + 'relayEstablishTimeout', DEFAULT_TOR_RELAY_ESTABLISH_TIMEOUT + ) ) def closeEvent(self, event):