92 lines
3.0 KiB
Bash
Executable File
92 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
set -eu
|
|
|
|
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
INFRA_DIR=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
|
|
ROOT_DIR=$(CDPATH= cd -- "$INFRA_DIR/.." && pwd)
|
|
ENV_FILE="${CMS_ENV_FILE:-$INFRA_DIR/.env}"
|
|
COMPOSE_FILE="${CMS_COMPOSE_FILE:-$INFRA_DIR/docker-compose.yml}"
|
|
BOOTSTRAP_SCRIPT="$INFRA_DIR/authentik/bootstrap-cms.py"
|
|
|
|
case "$ENV_FILE" in
|
|
/*) ;;
|
|
*) ENV_FILE="$INFRA_DIR/$ENV_FILE" ;;
|
|
esac
|
|
|
|
case "$COMPOSE_FILE" in
|
|
/*) ;;
|
|
*) COMPOSE_FILE="$INFRA_DIR/$COMPOSE_FILE" ;;
|
|
esac
|
|
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
echo "Missing $ENV_FILE. Create it from infra/.env.example or infra/.env.synology.example first." >&2
|
|
exit 1
|
|
fi
|
|
|
|
env_value() {
|
|
key="$1"
|
|
awk -v wanted="$key" '
|
|
/^[[:space:]]*($|#)/ { next }
|
|
{
|
|
line = $0
|
|
sub(/^[[:space:]]+/, "", line)
|
|
eq = index(line, "=")
|
|
if (!eq) { next }
|
|
key = substr(line, 1, eq - 1)
|
|
sub(/[[:space:]]+$/, "", key)
|
|
if (key != wanted) { next }
|
|
value = substr(line, eq + 1)
|
|
sub(/^[[:space:]]+/, "", value)
|
|
sub(/[[:space:]]+$/, "", value)
|
|
if (value ~ /^".*"$/ || value ~ /^'\''.*'\''$/) {
|
|
value = substr(value, 2, length(value) - 2)
|
|
}
|
|
print value
|
|
exit
|
|
}
|
|
' "$ENV_FILE"
|
|
}
|
|
|
|
env_default() {
|
|
value=$(env_value "$1")
|
|
if [ -n "$value" ]; then
|
|
printf '%s' "$value"
|
|
else
|
|
printf '%s' "$2"
|
|
fi
|
|
}
|
|
|
|
env_required() {
|
|
value=$(env_value "$1")
|
|
if [ -z "$value" ]; then
|
|
echo "$2" >&2
|
|
exit 1
|
|
fi
|
|
printf '%s' "$value"
|
|
}
|
|
|
|
CMS_AUTH_DOMAIN_VALUE=$(env_default CMS_AUTH_DOMAIN cms-auth.local.nodedc)
|
|
CMS_BOOTSTRAP_ADMIN_EMAIL_VALUE=$(env_default CMS_BOOTSTRAP_ADMIN_EMAIL "")
|
|
CMS_BOOTSTRAP_ADMIN_PASSWORD_VALUE=$(env_default CMS_BOOTSTRAP_ADMIN_PASSWORD "")
|
|
CMS_BOOTSTRAP_ADMIN_NAME_VALUE=$(env_default CMS_BOOTSTRAP_ADMIN_NAME "")
|
|
CMS_BASE_URL_VALUE=$(env_default CMS_BASE_URL http://cms.local.nodedc:8210)
|
|
CMS_LOGOUT_URI_VALUE=$(env_default CMS_LOGOUT_URI http://cms.local.nodedc:8210/auth/logout)
|
|
CMS_OIDC_CLIENT_ID_VALUE=$(env_default CMS_OIDC_CLIENT_ID dc-cms)
|
|
CMS_OIDC_CLIENT_SECRET_VALUE=$(env_required CMS_OIDC_CLIENT_SECRET "CMS_OIDC_CLIENT_SECRET is required")
|
|
CMS_OIDC_REDIRECT_URI_VALUE=$(env_required CMS_OIDC_REDIRECT_URI "CMS_OIDC_REDIRECT_URI is required")
|
|
CMS_OIDC_LOGGED_OUT_REDIRECT_URI_VALUE=$(env_default CMS_OIDC_LOGGED_OUT_REDIRECT_URI "")
|
|
|
|
cd "$ROOT_DIR"
|
|
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" exec -T \
|
|
-e CMS_AUTH_DOMAIN="$CMS_AUTH_DOMAIN_VALUE" \
|
|
-e CMS_BOOTSTRAP_ADMIN_EMAIL="$CMS_BOOTSTRAP_ADMIN_EMAIL_VALUE" \
|
|
-e CMS_BOOTSTRAP_ADMIN_PASSWORD="$CMS_BOOTSTRAP_ADMIN_PASSWORD_VALUE" \
|
|
-e CMS_BOOTSTRAP_ADMIN_NAME="$CMS_BOOTSTRAP_ADMIN_NAME_VALUE" \
|
|
-e CMS_BASE_URL="$CMS_BASE_URL_VALUE" \
|
|
-e CMS_LOGOUT_URI="$CMS_LOGOUT_URI_VALUE" \
|
|
-e CMS_OIDC_CLIENT_ID="$CMS_OIDC_CLIENT_ID_VALUE" \
|
|
-e CMS_OIDC_CLIENT_SECRET="$CMS_OIDC_CLIENT_SECRET_VALUE" \
|
|
-e CMS_OIDC_REDIRECT_URI="$CMS_OIDC_REDIRECT_URI_VALUE" \
|
|
-e CMS_OIDC_LOGGED_OUT_REDIRECT_URI="$CMS_OIDC_LOGGED_OUT_REDIRECT_URI_VALUE" \
|
|
authentik-server ak shell < "$BOOTSTRAP_SCRIPT"
|