Skip to content

Commit ee76af6

Browse files
authored
Docker: Video event-driven service deal with standalone status endpoint has basic auth (#3089)
1 parent f90d1ee commit ee76af6

3 files changed

Lines changed: 25 additions & 1 deletion

File tree

Makefile

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1162,14 +1162,22 @@ test_node_docker: hub standalone_docker standalone_chrome standalone_firefox sta
11621162
echo UID=$$(id -u) >> .env ; \
11631163
echo BINDING_VERSION=$(BINDING_VERSION) >> .env ; \
11641164
echo BASE_VERSION=$(BASE_VERSION) >> .env ; \
1165-
echo HOST_IP=$$(hostname -I | awk '{print $$1}') >> .env ; \
1165+
if [ "$$(uname)" != "Darwin" ]; then \
1166+
echo HOST_IP=$$(hostname -I | awk '{print $$1}') >> .env ; \
1167+
else \
1168+
echo HOST_IP=127.0.0.1 >> .env ; \
1169+
fi; \
11661170
if [ "$(PLATFORMS)" = "linux/amd64" ]; then \
11671171
NODE_EDGE=edge ; \
11681172
NODE_CHROME=chrome ; \
11691173
else \
11701174
NODE_EDGE=chromium ; \
11711175
NODE_CHROME=chromium ; \
1176+
BASIC_AUTH_USER=admin ; \
1177+
BASIC_AUTH_PASSWORD=admin ; \
11721178
fi; \
1179+
echo BASIC_AUTH_USER=$${BASIC_AUTH_USER} >> .env ; \
1180+
echo BASIC_AUTH_PASSWORD=$${BASIC_AUTH_PASSWORD} >> .env ; \
11731181
echo NODE_EDGE=$${NODE_EDGE} >> .env ; \
11741182
if [ $$node = "NodeChrome" ] ; then \
11751183
echo NODE_CHROME=$${NODE_CHROME} >> .env ; \

Video/video_service.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
SE_REGISTRATION_SECRET: Secret for event bus authentication
2323
SE_NODE_PORT: Node port for /status endpoint (default: 5555)
2424
SE_SERVER_PROTOCOL: Protocol for Node /status endpoint (default: http)
25+
SE_ROUTER_USERNAME, SE_ROUTER_PASSWORD: Optional Basic Auth credentials for Grid endpoints
2526
SE_UPLOAD_FAILURE_SESSION_ONLY: Only upload videos for failed sessions (default: false)
2627
VIDEO_FOLDER: Directory to store video files
2728
SE_VIDEO_FILE_NAME: Fixed video file name ("auto" keeps per-session naming)
@@ -31,6 +32,7 @@
3132
"""
3233

3334
import asyncio
35+
import base64
3436
import json
3537
import logging
3638
import os
@@ -132,6 +134,8 @@ def __init__(self):
132134
self.event_bus_reconnect_interval_ms = int(os.environ.get("SE_EVENT_BUS_RECONNECT_INTERVAL_MS", "1000"))
133135
self.event_bus_reconnect_interval_max_ms = int(os.environ.get("SE_EVENT_BUS_RECONNECT_INTERVAL_MAX_MS", "5000"))
134136
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", "")
135139

136140
# Video recording configuration
137141
self.video_folder = os.environ.get("VIDEO_FOLDER", "/videos")
@@ -329,6 +333,14 @@ async def wait_for_node_ready(self) -> None:
329333
headers = {}
330334
if self.registration_secret:
331335
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")
332344

333345
ssl_context = None
334346
if self.se_server_protocol.lower() == "https" and not self.node_status_verify_ssl:

tests/docker-compose-v3-test-standalone-docker.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ services:
2525
- SE_RCLONE_CONFIG_MYFTP_USER=seluser
2626
- SE_RCLONE_CONFIG_MYFTP_PASS=KkK8RsUIba-MMTBUSnuYIdAKvcnFyLl2pdhQig
2727
- SE_RCLONE_CONFIG_MYFTP_FTP_CONCURRENCY=10
28+
- SE_ROUTER_USERNAME=${BASIC_AUTH_USER}
29+
- SE_ROUTER_PASSWORD=${BASIC_AUTH_PASSWORD}
2830
container_name: selenium-hub
2931
ports:
3032
- "4444:4444"
@@ -68,4 +70,6 @@ services:
6870
- TEST_DELAY_AFTER_TEST=${TEST_DELAY_AFTER_TEST}
6971
- HUB_CHECKS_INTERVAL=${HUB_CHECKS_INTERVAL}
7072
- TEST_CUSTOM_SPECIFIC_NAME=${TEST_CUSTOM_SPECIFIC_NAME}
73+
- SELENIUM_GRID_USERNAME=${BASIC_AUTH_USER}
74+
- SELENIUM_GRID_PASSWORD=${BASIC_AUTH_PASSWORD}
7175
command: ["/bin/bash", "-c", "./bootstrap.sh ${NODE}"]

0 commit comments

Comments
 (0)