diff --git a/docker/frontend-entrypoint.sh b/docker/frontend-entrypoint.sh index ff529749..f42b0f7b 100644 --- a/docker/frontend-entrypoint.sh +++ b/docker/frontend-entrypoint.sh @@ -2,7 +2,6 @@ set -eu THT_FRONTEND_API_UPSTREAM=${THT_FRONTEND_API_UPSTREAM:-http://core:8787} -THT_FRONTEND_API_UPSTREAM=${THT_FRONTEND_API_UPSTREAM%/} if ! /usr/local/bin/validate-frontend-api-upstream "$THT_FRONTEND_API_UPSTREAM"; then echo "Invalid THT_FRONTEND_API_UPSTREAM: expected internal http://core:8787" >&2 exit 2 diff --git a/docker/smoke/frontend-policy-smoke.sh b/docker/smoke/frontend-policy-smoke.sh index d4d7c6b6..ff8f6bae 100755 --- a/docker/smoke/frontend-policy-smoke.sh +++ b/docker/smoke/frontend-policy-smoke.sh @@ -32,16 +32,24 @@ if rg -n 'BACKEND_BASE_URL|VITE_BACKEND_URL' docker/frontend-entrypoint.sh docke fi upstream_validator=docker/validate-frontend-api-upstream.sh -for upstream in http://core:8787 http://core:8787/; do +for upstream in http://core:8787; do if ! "$upstream_validator" "$upstream"; then echo "frontend upstream validator rejected $upstream" >&2 exit 1 fi done +if grep -Fq 'THT_FRONTEND_API_UPSTREAM=${THT_FRONTEND_API_UPSTREAM%/}' docker/frontend-entrypoint.sh; then + echo "frontend entrypoint must not normalize an upstream path component" >&2 + exit 1 +fi + for upstream in \ https://core:8787 \ http://core:8080 \ + http://core:8787/ \ + http://core:8787// \ + http://core:8787/// \ http://core:8787/api \ http://user:pass@core:8787 \ 'http://core:8787?next=evil' \ diff --git a/docker/validate-frontend-api-upstream.sh b/docker/validate-frontend-api-upstream.sh index 65e4de27..4e2243c5 100755 --- a/docker/validate-frontend-api-upstream.sh +++ b/docker/validate-frontend-api-upstream.sh @@ -1,7 +1,4 @@ #!/bin/sh set -eu -case "${1-}" in - http://core:8787|http://core:8787/) exit 0 ;; - *) exit 2 ;; -esac +[ "${1-}" = "http://core:8787" ]