41 lines
1.4 KiB
Bash
41 lines
1.4 KiB
Bash
|
|
#!/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."
|