#!/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"