文件预览

setup.sh

查看 Cloudflare API 技能包中的文件内容。

文件内容

scripts/setup.sh

#!/bin/bash
# Cloudflare API Setup - Validate and test connection

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/_lib.sh"

TOKEN=$(get_token)

if [ -z "$TOKEN" ]; then
    echo "❌ No API token found!"
    echo ""
    echo "Setup instructions:"
    echo "  1. Get your API token from https://dash.cloudflare.com/profile/api-tokens"
    echo "  2. Save it:"
    echo "     echo 'YOUR_TOKEN' > ~/.cloudflare_token"
    echo "     chmod 600 ~/.cloudflare_token"
    echo ""
    echo "  Or set environment variable:"
    echo "     export CLOUDFLARE_API_TOKEN='YOUR_TOKEN'"
    exit 1
fi

echo "🔑 API token found"
echo "🔗 Testing connection..."

# Verify token
RESPONSE=$(cf_get "/user/tokens/verify")

if echo "$RESPONSE" | jq -e '.success == true' >/dev/null 2>&1; then
    echo "✅ Token valid!"
elif echo "$RESPONSE" | jq -e '.result.id' >/dev/null 2>&1; then
    echo "✅ Token valid!"
else
    # Try listing accounts as fallback verification
    ACCOUNTS=$(cf_get "/accounts")
    if echo "$ACCOUNTS" | jq -e '.success == true' >/dev/null 2>&1; then
        echo "✅ Token valid!"
    else
        echo "❌ Token invalid or expired"
        echo "Get a new token at https://dash.cloudflare.com/profile/api-tokens"
        exit 1
    fi
fi

# Show account info
ACCOUNTS=$(cf_get "/accounts")
ACCOUNT_NAME=$(echo "$ACCOUNTS" | jq -r '.result[0].name // "Unknown"')
echo "📧 Account: $ACCOUNT_NAME"

# Show zones
ZONES=$(cf_get "/zones?per_page=5")
ZONE_COUNT=$(echo "$ZONES" | jq -r '.result_info.total_count // 0')
echo "🌐 Zones: $ZONE_COUNT domain(s)"

if [ "$ZONE_COUNT" -gt 0 ]; then
    echo ""
    echo "Recent domains:"
    echo "$ZONES" | jq -r '.result[].name' | head -5 | while read domain; do
        echo "  - $domain"
    done
fi

echo ""
echo "You're all set! Try:"
echo "  ./scripts/zones/list.sh"
echo "  ./scripts/dns/list.sh yourdomain.com"