From e01421ea8c380e76269bb42f6ebd29299358295a Mon Sep 17 00:00:00 2001 From: max Date: Fri, 25 Sep 2026 22:44:20 +0200 Subject: [PATCH] fix(client): resolve hermes_host 0.0.0.0 bind addresses to dialable server host during auto-enrollment --- src/Linux_Client.py | 2 ++ src/Server.py | 9 +++++++-- src/Win_Client.py | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Linux_Client.py b/src/Linux_Client.py index 7882ad2..f352d99 100644 --- a/src/Linux_Client.py +++ b/src/Linux_Client.py @@ -334,6 +334,8 @@ def send_encrypted_logs_over_socket(config: dict, logs: list): hub_url = None if enrollment_secret: hermes_host = config.get("hermes_host", server_host) + if hermes_host in ("0.0.0.0", "::", None): + hermes_host = server_host if server_host not in ("0.0.0.0", "::", None) else "127.0.0.1" hermes_port = config.get("hermes_port", 8443) hub_url = f"http://{hermes_host}:{hermes_port}" try: diff --git a/src/Server.py b/src/Server.py index 2a62fd0..255df65 100644 --- a/src/Server.py +++ b/src/Server.py @@ -391,7 +391,7 @@ def generate_client_profile_dict( "generated_at": datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S UTC"), "server_host": server_host, "server_port": int(server_port), - "hermes_host": cfg.get("hermes_host", server_host), + "hermes_host": server_host if cfg.get("hermes_host") in ("0.0.0.0", "::", None) else cfg.get("hermes_host", server_host), "hermes_port": int(cfg.get("hermes_port", 8443)), "enrollment_secret": cfg.get("enrollment_secret", ""), "server_fingerprint": cfg.get("server_fingerprint", ""), @@ -413,10 +413,15 @@ def create_client_config( """Creates a client configuration file containing the server address, auth token, and encryption-only key/fingerprint.""" server_conf = load_or_init_config(config_path) + effective_hermes_host = hermes_host + if not effective_hermes_host: + cfg_hermes = server_conf.get("hermes_host") + effective_hermes_host = server_host if cfg_hermes in ("0.0.0.0", "::", None) else cfg_hermes + client_conf = { "server_host": server_host, "server_port": server_port, - "hermes_host": hermes_host or server_conf.get("hermes_host", "127.0.0.1"), + "hermes_host": effective_hermes_host, "hermes_port": hermes_port or server_conf.get("hermes_port", 8443), "enrollment_secret": server_conf.get("enrollment_secret"), "cert_dir": "certs", diff --git a/src/Win_Client.py b/src/Win_Client.py index 894db8c..97845b1 100644 --- a/src/Win_Client.py +++ b/src/Win_Client.py @@ -301,6 +301,8 @@ def send_encrypted_logs_over_socket(config: dict, logs: list): hub_url = None if enrollment_secret: hermes_host = config.get("hermes_host", server_host) + if hermes_host in ("0.0.0.0", "::", None): + hermes_host = server_host if server_host not in ("0.0.0.0", "::", None) else "127.0.0.1" hermes_port = config.get("hermes_port", 8443) hub_url = f"http://{hermes_host}:{hermes_port}" try: