From 600ff8d3432922bf2d86309fdec0ff81d4cfbaa3 Mon Sep 17 00:00:00 2001 From: Khanh <52159161+brocked200@users.noreply.github.com> Date: Tue, 11 Nov 2025 11:43:50 +0000 Subject: [PATCH 1/2] Fix "Multiple tool are failing due to server disconnection issues" --- strix/interface/main.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/strix/interface/main.py b/strix/interface/main.py index 063dc10d..fbaea976 100644 --- a/strix/interface/main.py +++ b/strix/interface/main.py @@ -292,6 +292,13 @@ def parse_arguments() -> argparse.Namespace: help="Custom name for this penetration test run", ) + parser.add_argument( + "-r", + "--reuse-container", + action="store_true", + help="Reuse Docker container that already has this run-name (skip pull/copy). 'strix-scan-'.", + ) + parser.add_argument( "-n", "--non-interactive", @@ -447,6 +454,23 @@ def main() -> None: args = parse_arguments() check_docker_installed() + + if args.run_name: + container_name = f"strix-scan-{args.run_name}" + try: + import docker + client = docker.from_env() + duplicates = client.containers.list(all=True, filters={"name": f"^{container_name}$"}) + if duplicates and not args.reuse_container: + print( + f"\n[!] A container named '{container_name}' already exists.\n" + f" Use --reuse-container (-r) to run on the existing container,\n" + f" or choose a different --run-name.\n" + ) + sys.exit(1) + except Exception: + pass + pull_docker_image() validate_environment() From b5775b7c84c7fa1547de0ddf6d88f5bd75e9bc65 Mon Sep 17 00:00:00 2001 From: Khanh <52159161+brocked200@users.noreply.github.com> Date: Tue, 11 Nov 2025 23:40:00 +0700 Subject: [PATCH 2/2] Use timestamp instead of random number in name Replace random number with timestamp in name generation. --- strix/interface/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/strix/interface/utils.py b/strix/interface/utils.py index 8faba593..fbba5004 100644 --- a/strix/interface/utils.py +++ b/strix/interface/utils.py @@ -136,8 +136,8 @@ def generate_run_name() -> str: # fmt: on adj = secrets.choice(adjectives) noun = secrets.choice(nouns) - number = secrets.randbelow(900) + 100 - return f"{adj}-{noun}-{number}" + timestamp = int(time.time() * 1_000) + return f"{adj}-{noun}-{timestamp}" # Target processing utilities