|
22 | 22 | SE_REGISTRATION_SECRET: Secret for event bus authentication |
23 | 23 | SE_NODE_PORT: Node port for /status endpoint (default: 5555) |
24 | 24 | SE_SERVER_PROTOCOL: Protocol for Node /status endpoint (default: http) |
| 25 | + SE_ROUTER_USERNAME, SE_ROUTER_PASSWORD: Optional Basic Auth credentials for Grid endpoints |
25 | 26 | SE_UPLOAD_FAILURE_SESSION_ONLY: Only upload videos for failed sessions (default: false) |
26 | 27 | VIDEO_FOLDER: Directory to store video files |
27 | 28 | SE_VIDEO_FILE_NAME: Fixed video file name ("auto" keeps per-session naming) |
|
31 | 32 | """ |
32 | 33 |
|
33 | 34 | import asyncio |
| 35 | +import base64 |
34 | 36 | import json |
35 | 37 | import logging |
36 | 38 | import os |
@@ -132,6 +134,8 @@ def __init__(self): |
132 | 134 | self.event_bus_reconnect_interval_ms = int(os.environ.get("SE_EVENT_BUS_RECONNECT_INTERVAL_MS", "1000")) |
133 | 135 | self.event_bus_reconnect_interval_max_ms = int(os.environ.get("SE_EVENT_BUS_RECONNECT_INTERVAL_MAX_MS", "5000")) |
134 | 136 | self.registration_secret = os.environ.get("SE_REGISTRATION_SECRET", "") |
| 137 | + self.router_username = os.environ.get("SE_ROUTER_USERNAME", "") |
| 138 | + self.router_password = os.environ.get("SE_ROUTER_PASSWORD", "") |
135 | 139 |
|
136 | 140 | # Video recording configuration |
137 | 141 | self.video_folder = os.environ.get("VIDEO_FOLDER", "/videos") |
@@ -329,6 +333,14 @@ async def wait_for_node_ready(self) -> None: |
329 | 333 | headers = {} |
330 | 334 | if self.registration_secret: |
331 | 335 | headers["X-REGISTRATION-SECRET"] = self.registration_secret |
| 336 | + if self.router_username and self.router_password: |
| 337 | + auth_token = base64.b64encode(f"{self.router_username}:{self.router_password}".encode("utf-8")).decode( |
| 338 | + "utf-8" |
| 339 | + ) |
| 340 | + headers["Authorization"] = f"Basic {auth_token}" |
| 341 | + logger.info("Using Basic Auth for Node /status endpoint") |
| 342 | + elif self.router_username or self.router_password: |
| 343 | + logger.warning("Partial SE_ROUTER credentials provided; skipping Basic Auth for Node /status endpoint") |
332 | 344 |
|
333 | 345 | ssl_context = None |
334 | 346 | if self.se_server_protocol.lower() == "https" and not self.node_status_verify_ssl: |
|
0 commit comments