diff --git a/src/services/joern_server_manager.py b/src/services/joern_server_manager.py index 2eb3421..d7a3b2f 100644 --- a/src/services/joern_server_manager.py +++ b/src/services/joern_server_manager.py @@ -11,9 +11,10 @@ from docker.errors import DockerException, NotFound, APIError from .port_manager import PortManager +from ..config import load_config logger = logging.getLogger(__name__) - +config = load_config("config.yaml") class JoernServerManager: """Manages individual Joern server instances running in Docker container using Docker Python API""" @@ -97,7 +98,7 @@ def spawn_server(self, codebase_hash: str) -> int: self._exec_ids[codebase_hash] = f"exec-{codebase_hash}" self._ports[codebase_hash] = port - logger.info(f"Joern server command executed, waiting for server to be ready on port {port}...") + logger.info(f"Joern server command executed, waiting for server to be ready at {config.joern.server_host}:{port}...") # Wait for server to start (JVM + Scala REPL init can take >60s in Docker) startup_timeout = self.config.joern.server_startup_timeout if self.config else 120 @@ -168,7 +169,7 @@ def get_or_create_client(self, codebase_hash: str) -> 'JoernServerClient': } client = JoernServerClient( - host="localhost", + host=config.joern.server_host, port=port, username=self.config.joern.server_auth_username if self.config else None, password=self.config.joern.server_auth_password if self.config else None, @@ -275,7 +276,7 @@ def is_server_running(self, codebase_hash: str) -> bool: try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(1) - result = sock.connect_ex(('localhost', port)) + result = sock.connect_ex((config.joern.server_host, port)) sock.close() return result == 0 except Exception as e: @@ -347,14 +348,14 @@ def _wait_for_server(self, port: int, timeout: int = 30) -> bool: # Try to connect to the port sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(1) - result = sock.connect_ex(('localhost', port)) + result = sock.connect_ex((config.joern.server_host, port)) sock.close() if result == 0: # Server port is open, now check HTTP try: import requests - response = requests.get(f"http://localhost:{port}", timeout=2) + response = requests.get(f"http://{config.joern.server_host}:{port}", timeout=2) # Server responds (even 404 is OK - means it's up) if response.status_code in [200, 404]: server_responding = True @@ -390,4 +391,4 @@ def _cleanup_server(self, codebase_hash: str) -> None: logger.debug(f"Closed HTTP session for {codebase_hash}") except Exception as e: logger.warning(f"Error closing HTTP session for {codebase_hash}: {e}") - del self._clients[codebase_hash] \ No newline at end of file + del self._clients[codebase_hash]