63 lines
2.4 KiB
Bash
Executable File
63 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# CONFIGURE DNS VIA CLOUDFLARE API
|
|
# Usage: ./configure-dns.sh <DOMAIN> <IP> <CF_API_TOKEN> <CF_ZONE_ID>
|
|
|
|
DOMAIN=$1
|
|
IP=$2
|
|
CF_TOKEN=$3
|
|
CF_ZONE=$4
|
|
|
|
if [ -z "$DOMAIN" ] || [ -z "$IP" ]; then
|
|
echo "Usage: $0 <DOMAIN> <IP> [CF_API_TOKEN] [CF_ZONE_ID]"
|
|
exit 1
|
|
fi
|
|
|
|
echo "🌐 Configuring DNS for $DOMAIN → $IP"
|
|
|
|
# If Cloudflare credentials provided
|
|
if [ -n "$CF_TOKEN" ] && [ -n "$CF_ZONE" ]; then
|
|
# A Record
|
|
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE/dns_records" \
|
|
-H "Authorization: Bearer $CF_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
--data "{\"type\":\"A\",\"name\":\"$DOMAIN\",\"content\":\"$IP\",\"ttl\":300,\"proxied\":false}"
|
|
|
|
# MX Record
|
|
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE/dns_records" \
|
|
-H "Authorization: Bearer $CF_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
--data "{\"type\":\"MX\",\"name\":\"$DOMAIN\",\"content\":\"$DOMAIN\",\"priority\":10,\"ttl\":300}"
|
|
|
|
# SPF Record
|
|
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE/dns_records" \
|
|
-H "Authorization: Bearer $CF_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
--data "{\"type\":\"TXT\",\"name\":\"$DOMAIN\",\"content\":\"v=spf1 ip4:$IP include:spf.protection.outlook.com ~all\",\"ttl\":300}"
|
|
|
|
# DMARC Record
|
|
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE/dns_records" \
|
|
-H "Authorization: Bearer $CF_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
--data "{\"type\":\"TXT\",\"name\":\"_dmarc.$DOMAIN\",\"content\":\"v=DMARC1; p=none; rua=mailto:dmarc@$DOMAIN\",\"ttl\":300}"
|
|
|
|
echo "✅ DNS records created via Cloudflare API"
|
|
else
|
|
echo "📋 MANUAL DNS RECORDS TO CREATE:"
|
|
echo "=============================================="
|
|
echo "A $DOMAIN → $IP"
|
|
echo "MX $DOMAIN → $DOMAIN (priority 10)"
|
|
echo "TXT $DOMAIN → v=spf1 ip4:$IP include:spf.protection.outlook.com ~all"
|
|
echo "TXT _dmarc.$DOMAIN → v=DMARC1; p=none; rua=mailto:dmarc@$DOMAIN"
|
|
echo "=============================================="
|
|
fi
|
|
|
|
# Verify DNS propagation
|
|
echo ""
|
|
echo "🔍 Checking DNS propagation..."
|
|
sleep 3
|
|
dig +short A $DOMAIN
|
|
dig +short MX $DOMAIN
|
|
dig +short TXT $DOMAIN
|
|
|
|
echo "✅ DNS configuration complete"
|