Add socks-proxy option for simplex-chat.

This commit is contained in:
tecnovert
2025-06-01 22:52:18 +02:00
parent f918652b6c
commit 69acf00e0d
3 changed files with 32 additions and 11 deletions

View File

@@ -332,6 +332,17 @@ def runClient(
network_type = network.get("type", "unknown") network_type = network.get("type", "unknown")
if network_type == "simplex": if network_type == "simplex":
simplex_dir = os.path.join(data_dir, "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( daemons.append(
startSimplexClient( startSimplexClient(
network["client_path"], network["client_path"],
@@ -340,6 +351,8 @@ def runClient(
network["ws_port"], network["ws_port"],
logger, logger,
swap_client.delay_event, swap_client.delay_event,
socks_proxy=socks_proxy,
log_level=log_level,
) )
) )
pid = daemons[-1].handle.pid pid = daemons[-1].handle.pid

View File

@@ -70,6 +70,8 @@ def startSimplexClient(
websocket_port: int, websocket_port: int,
logger, logger,
delay_event, delay_event,
socks_proxy=None,
log_level: str = "debug",
) -> Daemon: ) -> Daemon:
logger.info("Starting Simplex client") logger.info("Starting Simplex client")
if not os.path.exists(data_path): if not os.path.exists(data_path):
@@ -78,13 +80,16 @@ def startSimplexClient(
db_path = os.path.join(data_path, "simplex_client_data") db_path = os.path.join(data_path, "simplex_client_data")
args = [bin_path, "-d", db_path, "-s", server_address, "-p", str(websocket_port)] 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"): if not os.path.exists(db_path + "_chat.db"):
# Need to set initial profile through CLI # Need to set initial profile through CLI
# TODO: Must be a better way? # 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) initSimplexClient(init_args, logger, delay_event)
args += ["-l", "debug"] args += ["-l", log_level]
opened_files = [] opened_files = []
stdout_dest = open( stdout_dest = open(

View File

@@ -101,6 +101,7 @@ SIMPLEX_SERVER_ADDRESS = os.getenv(
SIMPLEX_WS_PORT = int(os.getenv("SIMPLEX_WS_PORT", "5225")) SIMPLEX_WS_PORT = int(os.getenv("SIMPLEX_WS_PORT", "5225"))
SIMPLEX_GROUP_LINK = os.getenv("SIMPLEX_GROUP_LINK", "") SIMPLEX_GROUP_LINK = os.getenv("SIMPLEX_GROUP_LINK", "")
SIMPLEX_CLIENT_PATH = os.path.expanduser(os.getenv("SIMPLEX_CLIENT_PATH", "")) 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 = logging.getLogger()
logger.level = logging.DEBUG logger.level = logging.DEBUG
@@ -497,15 +498,17 @@ def modifyConfig(test_path, i):
settings = json.load(fp) settings = json.load(fp)
if SIMPLEX_CLIENT_PATH != "": if SIMPLEX_CLIENT_PATH != "":
settings["networks"] = [ simplex_options = {
{ "type": "simplex",
"type": "simplex", "server_address": SIMPLEX_SERVER_ADDRESS,
"server_address": SIMPLEX_SERVER_ADDRESS, "client_path": SIMPLEX_CLIENT_PATH,
"client_path": SIMPLEX_CLIENT_PATH, "ws_port": SIMPLEX_WS_PORT + i,
"ws_port": SIMPLEX_WS_PORT + i, "group_link": SIMPLEX_GROUP_LINK,
"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: with open(config_path, "w") as fp:
json.dump(settings, fp, indent=4) json.dump(settings, fp, indent=4)