29 lines
851 B
Bash
29 lines
851 B
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
origin="${APP_PUBLIC_BASE_URL:-}"
|
|
case "$origin" in
|
|
http://*|https://*) ;;
|
|
*) echo "APP_PUBLIC_BASE_URL must be an HTTP(S) origin." >&2; exit 1 ;;
|
|
esac
|
|
|
|
authority="${origin#*://}"
|
|
authority="${authority%/}"
|
|
case "$authority" in
|
|
""|*/*|*\?*|*\#*|*@*) echo "APP_PUBLIC_BASE_URL must not contain credentials, a path, query, or fragment." >&2; exit 1 ;;
|
|
esac
|
|
|
|
external_host="${authority%%:*}"
|
|
port="${authority#"$external_host"}"
|
|
case "$external_host" in
|
|
""|*[!A-Za-z0-9.-]*) echo "APP_PUBLIC_BASE_URL contains an unsupported host." >&2; exit 1 ;;
|
|
esac
|
|
if [ -n "$port" ]; then
|
|
port="${port#:}"
|
|
case "$port" in ""|*[!0-9]*) echo "APP_PUBLIC_BASE_URL contains an invalid port." >&2; exit 1 ;; esac
|
|
fi
|
|
|
|
sed "s/__APP_EXTERNAL_HOST__/$external_host/g" \
|
|
/etc/nginx/jobtracker.conf.template \
|
|
> /etc/nginx/conf.d/default.conf
|