- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
95 lines
3.2 KiB
Bash
Executable File
95 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Automated Cloudflare DNS Configuration
|
|
# Creates DNS records via Cloudflare API using credentials from .env
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../../.." && pwd)"
|
|
ENV_FILE="$PROJECT_ROOT/.env"
|
|
|
|
# Load Cloudflare credentials
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
echo "Error: .env file not found at $ENV_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
export $(grep -v '^#' "$ENV_FILE" | grep -E "CLOUDFLARE_" | xargs)
|
|
|
|
if [ -z "${CLOUDFLARE_ZONE_ID:-}" ] || [ -z "${CLOUDFLARE_API_TOKEN:-}" ]; then
|
|
echo "Error: Missing Cloudflare credentials in .env"
|
|
exit 1
|
|
fi
|
|
|
|
DOMAIN_NAME="${1:-}"
|
|
TUNNEL_ID="${2:-}"
|
|
|
|
if [ -z "$DOMAIN_NAME" ]; then
|
|
echo "Usage: $0 <domain-name> [tunnel-id]"
|
|
echo "Example: $0 rpc.yourdomain.com <tunnel-id>"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$TUNNEL_ID" ]; then
|
|
echo "Warning: No tunnel ID provided. DNS record will point to placeholder."
|
|
TUNNEL_ID="placeholder-tunnel-id"
|
|
fi
|
|
|
|
echo "=========================================="
|
|
echo "Cloudflare DNS Configuration"
|
|
echo "=========================================="
|
|
echo "Domain: $DOMAIN_NAME"
|
|
echo "Tunnel ID: $TUNNEL_ID"
|
|
echo ""
|
|
|
|
# Check if record already exists
|
|
EXISTING=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records?name=${DOMAIN_NAME}" \
|
|
-H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
|
|
-H "Content-Type: application/json" | jq -r '.result[0].id // empty' 2>/dev/null || echo "")
|
|
|
|
if [ -n "$EXISTING" ]; then
|
|
echo "DNS record already exists. Updating..."
|
|
|
|
# Update existing record
|
|
RESPONSE=$(curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records/${EXISTING}" \
|
|
-H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
--data "{\"type\":\"CNAME\",\"name\":\"${DOMAIN_NAME}\",\"content\":\"${TUNNEL_ID}.cfargotunnel.com\",\"ttl\":3600,\"proxied\":true}")
|
|
|
|
SUCCESS=$(echo "$RESPONSE" | jq -r '.success // false' 2>/dev/null || echo "false")
|
|
|
|
if [ "$SUCCESS" = "true" ]; then
|
|
echo "✓ DNS record updated successfully"
|
|
else
|
|
echo "✗ Failed to update DNS record"
|
|
echo "$RESPONSE" | jq '.' 2>/dev/null || echo "$RESPONSE"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Creating new DNS record..."
|
|
|
|
# Create new record
|
|
RESPONSE=$(curl -s -X POST "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records" \
|
|
-H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
--data "{\"type\":\"CNAME\",\"name\":\"${DOMAIN_NAME}\",\"content\":\"${TUNNEL_ID}.cfargotunnel.com\",\"ttl\":3600,\"proxied\":true}")
|
|
|
|
SUCCESS=$(echo "$RESPONSE" | jq -r '.success // false' 2>/dev/null || echo "false")
|
|
|
|
if [ "$SUCCESS" = "true" ]; then
|
|
echo "✓ DNS record created successfully"
|
|
else
|
|
echo "✗ Failed to create DNS record"
|
|
echo "$RESPONSE" | jq '.' 2>/dev/null || echo "$RESPONSE"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "DNS Configuration Complete!"
|
|
echo " Domain: $DOMAIN_NAME"
|
|
echo " Points to: ${TUNNEL_ID}.cfargotunnel.com"
|
|
echo " Proxy: Enabled (orange cloud)"
|
|
echo ""
|
|
|