From 69acf00e0dc1e9d5266fabc74f1afc90bea37a82 Mon Sep 17 00:00:00 2001 From: tecnovert Date: Sun, 1 Jun 2025 22:52:18 +0200 Subject: [PATCH] Add socks-proxy option for simplex-chat. --- basicswap/bin/run.py | 13 ++++++++++++ basicswap/network/simplex_chat.py | 9 ++++++-- .../basicswap/extended/test_xmr_persistent.py | 21 +++++++++++-------- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/basicswap/bin/run.py b/basicswap/bin/run.py index 39e9a09..e82a30f 100755 --- a/basicswap/bin/run.py +++ b/basicswap/bin/run.py @@ -332,6 +332,17 @@ def runClient( network_type = network.get("type", "unknown") if network_type == "simplex": simplex_dir = os.path.join(data_dir, "simplex") + + log_level = "debug" if swap_client.debug else "info" + + socks_proxy = None + if "socks_proxy_override" in network: + socks_proxy = network["socks_proxy_override"] + elif swap_client.use_tor_proxy: + socks_proxy = ( + f"{swap_client.tor_proxy_host}:{swap_client.tor_proxy_port}" + ) + daemons.append( startSimplexClient( network["client_path"], @@ -340,6 +351,8 @@ def runClient( network["ws_port"], logger, swap_client.delay_event, + socks_proxy=socks_proxy, + log_level=log_level, ) ) pid = daemons[-1].handle.pid diff --git a/basicswap/network/simplex_chat.py b/basicswap/network/simplex_chat.py index 4ef774f..05cf2af 100644 --- a/basicswap/network/simplex_chat.py +++ b/basicswap/network/simplex_chat.py @@ -70,6 +70,8 @@ def startSimplexClient( websocket_port: int, logger, delay_event, + socks_proxy=None, + log_level: str = "debug", ) -> Daemon: logger.info("Starting Simplex client") if not os.path.exists(data_path): @@ -78,13 +80,16 @@ def startSimplexClient( db_path = os.path.join(data_path, "simplex_client_data") args = [bin_path, "-d", db_path, "-s", server_address, "-p", str(websocket_port)] + if socks_proxy: + args += ["--socks-proxy", socks_proxy] + if not os.path.exists(db_path + "_chat.db"): # Need to set initial profile through CLI # TODO: Must be a better way? - init_args = args + ["-e", "/help"] # Run command ro exit client + init_args = args + ["-e", "/help"] # Run command to exit client initSimplexClient(init_args, logger, delay_event) - args += ["-l", "debug"] + args += ["-l", log_level] opened_files = [] stdout_dest = open( diff --git a/tests/basicswap/extended/test_xmr_persistent.py b/tests/basicswap/extended/test_xmr_persistent.py index aa3efd6..4a81fb6 100644 --- a/tests/basicswap/extended/test_xmr_persistent.py +++ b/tests/basicswap/extended/test_xmr_persistent.py @@ -101,6 +101,7 @@ SIMPLEX_SERVER_ADDRESS = os.getenv( SIMPLEX_WS_PORT = int(os.getenv("SIMPLEX_WS_PORT", "5225")) SIMPLEX_GROUP_LINK = os.getenv("SIMPLEX_GROUP_LINK", "") SIMPLEX_CLIENT_PATH = os.path.expanduser(os.getenv("SIMPLEX_CLIENT_PATH", "")) +SIMPLEX_SERVER_SOCKS_PROXY = os.getenv("SIMPLEX_SERVER_SOCKS_PROXY", "") logger = logging.getLogger() logger.level = logging.DEBUG @@ -497,15 +498,17 @@ def modifyConfig(test_path, i): settings = json.load(fp) if SIMPLEX_CLIENT_PATH != "": - settings["networks"] = [ - { - "type": "simplex", - "server_address": SIMPLEX_SERVER_ADDRESS, - "client_path": SIMPLEX_CLIENT_PATH, - "ws_port": SIMPLEX_WS_PORT + i, - "group_link": SIMPLEX_GROUP_LINK, - }, - ] + simplex_options = { + "type": "simplex", + "server_address": SIMPLEX_SERVER_ADDRESS, + "client_path": SIMPLEX_CLIENT_PATH, + "ws_port": SIMPLEX_WS_PORT + i, + "group_link": SIMPLEX_GROUP_LINK, + } + if SIMPLEX_SERVER_SOCKS_PROXY != "": + simplex_options["socks_proxy_override"] = SIMPLEX_SERVER_SOCKS_PROXY + + settings["networks"] = [simplex_options] with open(config_path, "w") as fp: json.dump(settings, fp, indent=4)