fix: stabilize console scrolling and protect administrator login
This commit is contained in:
@@ -8,13 +8,14 @@ E2E_IMAGE=${ORBIT_E2E_IMAGE:-orbit:e2e}
|
||||
E2E_SUFFIX=$$
|
||||
E2E_MYSQL="orbit-e2e-mysql-$E2E_SUFFIX"
|
||||
E2E_ORBIT="orbit-e2e-server-$E2E_SUFFIX"
|
||||
E2E_ORBIT_SECOND="orbit-e2e-login-peer-$E2E_SUFFIX"
|
||||
E2E_DIR=$(mktemp -d "${TMPDIR:-/tmp}/orbit-console-e2e.XXXXXX")
|
||||
E2E_PASSWORD_FILE="$E2E_DIR/console-password"
|
||||
E2E_CREDENTIALS_FILE="$E2E_DIR/credentials.json"
|
||||
|
||||
cleanup() {
|
||||
"$E2E_DOCKER" stop "$E2E_ORBIT" "$E2E_MYSQL" >/dev/null 2>&1 || true
|
||||
"$E2E_DOCKER" container rm "$E2E_ORBIT" "$E2E_MYSQL" >/dev/null 2>&1 || true
|
||||
"$E2E_DOCKER" stop "$E2E_ORBIT_SECOND" "$E2E_ORBIT" "$E2E_MYSQL" >/dev/null 2>&1 || true
|
||||
"$E2E_DOCKER" container rm "$E2E_ORBIT_SECOND" "$E2E_ORBIT" "$E2E_MYSQL" >/dev/null 2>&1 || true
|
||||
if [ -d "$E2E_DIR/archive-job" ]; then
|
||||
for e2e_artifact in "$E2E_DIR/archive-job"/.lock "$E2E_DIR/archive-job"/manifest.json "$E2E_DIR/archive-job"/batch-000001.json; do
|
||||
if [ -f "$e2e_artifact" ]; then unlink "$e2e_artifact"; fi
|
||||
@@ -115,6 +116,9 @@ printf '%s\n' "[4/8] start Orbit container"
|
||||
--env ORBIT_MYSQL_DSN="$E2E_DSN" \
|
||||
--env ORBIT_HTTP_ADDR=0.0.0.0:8080 \
|
||||
--env ORBIT_CONSOLE_QUEUE_ID="$E2E_QUEUE" \
|
||||
--env ORBIT_CONSOLE_LOGIN_FAILURE_LIMIT=3 \
|
||||
--env ORBIT_CONSOLE_LOGIN_LOCK_DURATION=10s \
|
||||
--env ORBIT_CONSOLE_LOGIN_RATE_WINDOW=2s \
|
||||
--env ORBIT_CONSOLE_APPLICATION_ADMIN="$E2E_ADMIN" \
|
||||
--env ORBIT_CREDENTIAL_KEY_FILE=/run/credential-keys.json \
|
||||
--volume "$E2E_DIR/credential-keys.json:/run/credential-keys.json:ro" \
|
||||
@@ -199,6 +203,22 @@ assert status == 200, status
|
||||
print("console_login=ok protected_page=ok")
|
||||
PY
|
||||
|
||||
printf '%s\n' "[login] cross-node rejection, restart and recovery"
|
||||
"$E2E_DOCKER" run -d --name "$E2E_ORBIT_SECOND" --network bridge --link "$E2E_MYSQL:mysql" \
|
||||
--env ORBIT_MYSQL_DSN="$E2E_DSN" --env ORBIT_HTTP_ADDR=0.0.0.0:8080 \
|
||||
--env ORBIT_CONSOLE_APPLICATION_ADMIN="$E2E_ADMIN" \
|
||||
--env ORBIT_CREDENTIAL_KEY_FILE=/run/credential-keys.json \
|
||||
--env ORBIT_CONSOLE_LOGIN_FAILURE_LIMIT=3 \
|
||||
--env ORBIT_CONSOLE_LOGIN_LOCK_DURATION=10s \
|
||||
--env ORBIT_CONSOLE_LOGIN_RATE_WINDOW=2s \
|
||||
--volume "$E2E_DIR/credential-keys.json:/run/credential-keys.json:ro" \
|
||||
--publish 127.0.0.1::8080 "$E2E_IMAGE" >/dev/null
|
||||
E2E_SECOND_PORT=$("$E2E_DOCKER" port "$E2E_ORBIT_SECOND" 8080/tcp | sed -n 's/.*:\([0-9][0-9]*\)$/\1/p' | head -n 1)
|
||||
ORBIT_E2E_URL="$E2E_URL" ORBIT_E2E_SECOND_URL="http://127.0.0.1:$E2E_SECOND_PORT" \
|
||||
ORBIT_E2E_SECOND_CONTAINER="$E2E_ORBIT_SECOND" ORBIT_E2E_USER="$E2E_ADMIN" \
|
||||
ORBIT_E2E_PASSWORD_FILE="$E2E_PASSWORD_FILE" DOCKER="$E2E_DOCKER" python3 scripts/test-console-login.py
|
||||
"$E2E_DOCKER" stop "$E2E_ORBIT_SECOND" >/dev/null
|
||||
|
||||
printf '%s\n' "[6/8] WebSocket Worker task execution"
|
||||
(cd examples && ORBIT_URL="$E2E_URL" ORBIT_CREDENTIALS_FILE="$E2E_CREDENTIALS_FILE" \
|
||||
"$E2E_GO" run ./worker) | tee "$E2E_DIR/worker.log"
|
||||
|
||||
Reference in New Issue
Block a user