diff --git a/docker/run_pyrit_docker.py b/docker/run_pyrit_docker.py index 7e06aa37d..3971b944a 100644 --- a/docker/run_pyrit_docker.py +++ b/docker/run_pyrit_docker.py @@ -79,7 +79,7 @@ def run_container(mode, tag="latest"): "--name", container_name, "-p", - f"{port}:{port}", + f"127.0.0.1:{port}:{port}", "-e", f"PYRIT_MODE={mode}", "-v", diff --git a/frontend/dev.py b/frontend/dev.py index 0c5ef5bfc..f76dc2b9c 100644 --- a/frontend/dev.py +++ b/frontend/dev.py @@ -180,7 +180,7 @@ def start_backend(*, config_file: str | None = None, initializers: list[str] | N "-m", "pyrit.cli.pyrit_backend", "--host", - "0.0.0.0", + "localhost", "--port", "8000", "--log-level", diff --git a/pyrit/backend/README.md b/pyrit/backend/README.md index 5814ade7b..d97856c34 100644 --- a/pyrit/backend/README.md +++ b/pyrit/backend/README.md @@ -35,6 +35,6 @@ The API will be available at `http://localhost:8000` ## Configuration Environment variables: -- `PYRIT_API_HOST` - Host to bind to (default: 0.0.0.0) +- `PYRIT_API_HOST` - Host to bind to (default: localhost) - `PYRIT_API_PORT` - Port to listen on (default: 8000) - `PYRIT_API_RELOAD` - Enable auto-reload (default: false) diff --git a/pyrit/cli/pyrit_backend.py b/pyrit/cli/pyrit_backend.py index fa965cd84..a01bec561 100644 --- a/pyrit/cli/pyrit_backend.py +++ b/pyrit/cli/pyrit_backend.py @@ -40,6 +40,9 @@ def parse_args(*, args: Optional[list[str]] = None) -> Namespace: # Start with custom port and host pyrit_backend --host 0.0.0.0 --port 8080 + # Expose to network (listen on all interfaces) + pyrit_backend --host 0.0.0.0 + # List available initializers pyrit_backend --list-initializers """, @@ -49,8 +52,8 @@ def parse_args(*, args: Optional[list[str]] = None) -> Namespace: parser.add_argument( "--host", type=str, - default="0.0.0.0", - help="Host to bind the server to (default: 0.0.0.0)", + default="localhost", + help="Host to bind the server to (default: localhost)", ) parser.add_argument( @@ -196,8 +199,11 @@ async def initialize_and_run_async(*, parsed_args: Namespace) -> int: default_labels["operation"] = context._operation app.state.default_labels = default_labels - print(f"🚀 Starting PyRIT backend on http://{parsed_args.host}:{parsed_args.port}") - print(f" API Docs: http://{parsed_args.host}:{parsed_args.port}/docs") + display_host = parsed_args.host + print(f"🚀 Starting PyRIT backend on http://{display_host}:{parsed_args.port}") + print(f" API Docs: http://{display_host}:{parsed_args.port}/docs") + if parsed_args.host == "0.0.0.0": + print(f" Open in browser: http://localhost:{parsed_args.port}") uvicorn_config = uvicorn.Config( "pyrit.backend.main:app", diff --git a/tests/unit/cli/test_pyrit_backend.py b/tests/unit/cli/test_pyrit_backend.py index a66e0e242..2de61cf10 100644 --- a/tests/unit/cli/test_pyrit_backend.py +++ b/tests/unit/cli/test_pyrit_backend.py @@ -16,7 +16,7 @@ def test_parse_args_defaults(self) -> None: """Should parse backend defaults correctly.""" args = pyrit_backend.parse_args(args=[]) - assert args.host == "0.0.0.0" + assert args.host == "localhost" assert args.port == 8000 assert args.config_file is None