#!/usr/bin/env sh set -e HYDRA_ADMIN_URL="${HYDRA_ADMIN_URL:-http://hydra:4445}" CREDENTIALS_FILE="/client-credentials/client-credentials.json" echo "Waiting for Hydra to be ready..." until wget -qO- "${HYDRA_ADMIN_URL}/health/ready" 2>/dev/null | grep -q '"status":"ok"'; do echo " Hydra not ready yet, retrying in 3s..." sleep 3 done echo "Hydra is ready." CLIENT_COUNT=$(cat "${CREDENTIALS_FILE}" | python3 -c "import sys,json; print(len(json.load(sys.stdin)))") for i in $(seq 0 $((CLIENT_COUNT - 1))); do CLIENT_JSON=$(cat "${CREDENTIALS_FILE}" | python3 -c "import sys,json; print(json.dumps(json.load(sys.stdin)[$i]))") CLIENT_ID=$(echo "${CLIENT_JSON}" | python3 -c "import sys,json; print(json.load(sys.stdin)['client_id'])") echo "Checking client: ${CLIENT_ID}" # Check if client already exists HTTP_CODE=$(wget -qO/dev/null -S "${HYDRA_ADMIN_URL}/admin/clients/${CLIENT_ID}" 2>&1 | grep "HTTP/" | tail -1 | awk '{print $2}') if [ "${HTTP_CODE}" = "200" ]; then echo " Client '${CLIENT_ID}' already exists, skipping." continue fi echo " Registering client '${CLIENT_ID}'..." wget -qO- --header="Content-Type: application/json" \ --post-data="${CLIENT_JSON}" \ "${HYDRA_ADMIN_URL}/admin/clients" || { echo " ERROR: Failed to register client '${CLIENT_ID}'" exit 1 } echo "" echo " Client '${CLIENT_ID}' registered successfully." done echo "All OAuth2 clients registered."