Apply Composer changes: comprehensive API updates, migrations, middleware, and infrastructure improvements
- Add comprehensive database migrations (001-024) for schema evolution - Enhance API schema with expanded type definitions and resolvers - Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth - Implement new services: AI optimization, billing, blockchain, compliance, marketplace - Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage) - Update Crossplane provider with enhanced VM management capabilities - Add comprehensive test suite for API endpoints and services - Update frontend components with improved GraphQL subscriptions and real-time updates - Enhance security configurations and headers (CSP, CORS, etc.) - Update documentation and configuration files - Add new CI/CD workflows and validation scripts - Implement design system improvements and UI enhancements
This commit is contained in:
@@ -3,9 +3,19 @@ set -euo pipefail
|
||||
|
||||
# Cloudflare Tunnel Configuration Script
|
||||
|
||||
# Load environment variables from .env if it exists
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
if [ -f "${SCRIPT_DIR}/../.env" ]; then
|
||||
set -a
|
||||
source <(grep -v '^#' "${SCRIPT_DIR}/../.env" | grep -v '^$' | sed 's/^/export /')
|
||||
set +a
|
||||
fi
|
||||
|
||||
CLOUDFLARE_API_TOKEN="${CLOUDFLARE_API_TOKEN:-}"
|
||||
ZONE_ID="${ZONE_ID:-}"
|
||||
ACCOUNT_ID="${ACCOUNT_ID:-}"
|
||||
CLOUDFLARE_API_KEY="${CLOUDFLARE_API_KEY:-}"
|
||||
CLOUDFLARE_EMAIL="${CLOUDFLARE_EMAIL:-}"
|
||||
ZONE_ID="${CLOUDFLARE_ZONE_ID:-${ZONE_ID:-}}"
|
||||
ACCOUNT_ID="${CLOUDFLARE_ACCOUNT_ID:-${ACCOUNT_ID:-}}"
|
||||
|
||||
log() {
|
||||
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*" >&2
|
||||
@@ -17,16 +27,18 @@ error() {
|
||||
}
|
||||
|
||||
check_prerequisites() {
|
||||
if [ -z "${CLOUDFLARE_API_TOKEN}" ]; then
|
||||
error "CLOUDFLARE_API_TOKEN environment variable is required"
|
||||
# Check authentication method
|
||||
if [ -z "${CLOUDFLARE_API_TOKEN}" ] && [ -z "${CLOUDFLARE_API_KEY}" ]; then
|
||||
error "Either CLOUDFLARE_API_TOKEN or CLOUDFLARE_API_KEY must be set"
|
||||
fi
|
||||
|
||||
if [ -z "${ZONE_ID}" ]; then
|
||||
error "ZONE_ID environment variable is required"
|
||||
if [ -z "${CLOUDFLARE_API_TOKEN}" ] && [ -z "${CLOUDFLARE_EMAIL}" ]; then
|
||||
error "If using CLOUDFLARE_API_KEY, CLOUDFLARE_EMAIL must also be set"
|
||||
fi
|
||||
|
||||
if [ -z "${ACCOUNT_ID}" ]; then
|
||||
error "ACCOUNT_ID environment variable is required"
|
||||
warn "ACCOUNT_ID not set, attempting to get from API..."
|
||||
get_account_id
|
||||
fi
|
||||
|
||||
if ! command -v cloudflared &> /dev/null; then
|
||||
@@ -34,18 +46,53 @@ check_prerequisites() {
|
||||
fi
|
||||
}
|
||||
|
||||
get_account_id() {
|
||||
if [ -n "${CLOUDFLARE_API_TOKEN}" ]; then
|
||||
ACCOUNT_ID=$(curl -s -X GET \
|
||||
-H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"https://api.cloudflare.com/client/v4/accounts" | \
|
||||
jq -r '.result[0].id')
|
||||
elif [ -n "${CLOUDFLARE_API_KEY}" ] && [ -n "${CLOUDFLARE_EMAIL}" ]; then
|
||||
ACCOUNT_ID=$(curl -s -X GET \
|
||||
-H "X-Auth-Email: ${CLOUDFLARE_EMAIL}" \
|
||||
-H "X-Auth-Key: ${CLOUDFLARE_API_KEY}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"https://api.cloudflare.com/client/v4/accounts" | \
|
||||
jq -r '.result[0].id')
|
||||
fi
|
||||
|
||||
if [ -n "${ACCOUNT_ID}" ] && [ "${ACCOUNT_ID}" != "null" ]; then
|
||||
log "Account ID: ${ACCOUNT_ID}"
|
||||
export CLOUDFLARE_ACCOUNT_ID="${ACCOUNT_ID}"
|
||||
else
|
||||
error "Failed to get Account ID"
|
||||
fi
|
||||
}
|
||||
|
||||
create_tunnel() {
|
||||
local tunnel_name=$1
|
||||
|
||||
log "Creating Cloudflare tunnel: ${tunnel_name}"
|
||||
|
||||
# Create tunnel via API
|
||||
TUNNEL_ID=$(curl -s -X POST \
|
||||
-H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/cfd_tunnel" \
|
||||
-d "{\"name\":\"${tunnel_name}\",\"config_src\":\"local\"}" \
|
||||
| jq -r '.result.id')
|
||||
local auth_header
|
||||
if [ -n "${CLOUDFLARE_API_TOKEN}" ]; then
|
||||
TUNNEL_ID=$(curl -s -X POST \
|
||||
-H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/cfd_tunnel" \
|
||||
-d "{\"name\":\"${tunnel_name}\",\"config_src\":\"local\"}" \
|
||||
| jq -r '.result.id')
|
||||
else
|
||||
TUNNEL_ID=$(curl -s -X POST \
|
||||
-H "X-Auth-Email: ${CLOUDFLARE_EMAIL}" \
|
||||
-H "X-Auth-Key: ${CLOUDFLARE_API_KEY}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/cfd_tunnel" \
|
||||
-d "{\"name\":\"${tunnel_name}\",\"config_src\":\"local\"}" \
|
||||
| jq -r '.result.id')
|
||||
fi
|
||||
|
||||
if [ -z "${TUNNEL_ID}" ] || [ "${TUNNEL_ID}" = "null" ]; then
|
||||
error "Failed to create tunnel ${tunnel_name}"
|
||||
|
||||
Reference in New Issue
Block a user