80 lines
1.7 KiB
Bash
80 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
clear
|
|
# ====== CONFIG (edit here once) ======
|
|
DOMAIN="domain.com"
|
|
API_KEY="YOUR_API_KEY"
|
|
SECRET_API_KEY="YOUR_SECRET_API_KEY"
|
|
TTL="600"
|
|
TYPE="A"
|
|
|
|
API_BASE="https://api.porkbun.com/api/json/v3/dns"
|
|
|
|
echo "====== Porkbun DNS Manager ======"
|
|
echo "Domain: $DOMAIN"
|
|
echo ""
|
|
|
|
echo "Choose an action:"
|
|
echo "1) Update subdomain IP"
|
|
echo "2) Create new subdomain"
|
|
echo ""
|
|
|
|
read -p "Enter choice (1 or 2): " ACTION
|
|
|
|
case $ACTION in
|
|
|
|
# Update existing record
|
|
1)
|
|
read -p "Enter subdomain to update: " SUBDOMAIN
|
|
read -p "Enter new IP address: " IP
|
|
|
|
echo ""
|
|
echo "Updating ${SUBDOMAIN}.${DOMAIN} -> ${IP}"
|
|
read -p "Proceed? (y/n): " CONFIRM
|
|
[[ "$CONFIRM" != "y" ]] && echo "Cancelled." && exit 1
|
|
|
|
RESPONSE=$(curl -s -X POST \
|
|
"$API_BASE/editByNameType/${DOMAIN}/${TYPE}/${SUBDOMAIN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"secretapikey\": \"${SECRET_API_KEY}\",
|
|
\"apikey\": \"${API_KEY}\",
|
|
\"content\": \"${IP}\",
|
|
\"ttl\": \"${TTL}\"
|
|
}")
|
|
|
|
echo ""
|
|
echo "API Response:"
|
|
echo "$RESPONSE"
|
|
;;
|
|
|
|
# Create new subdomain
|
|
2)
|
|
read -p "Enter new subdomain name: " SUBDOMAIN
|
|
read -p "Enter IP address: " IP
|
|
|
|
echo ""
|
|
echo "Creating ${SUBDOMAIN}.${DOMAIN} -> ${IP}"
|
|
|
|
RESPONSE=$(curl -s -X POST \
|
|
"$API_BASE/create/${DOMAIN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"secretapikey\": \"${SECRET_API_KEY}\",
|
|
\"apikey\": \"${API_KEY}\",
|
|
\"name\": \"${SUBDOMAIN}\",
|
|
\"type\": \"${TYPE}\",
|
|
\"content\": \"${IP}\",
|
|
\"ttl\": \"${TTL}\"
|
|
}")
|
|
|
|
echo ""
|
|
echo "API Response:"
|
|
echo "$RESPONSE"
|
|
;;
|
|
|
|
*)
|
|
echo "Invalid choice."
|
|
exit 1
|
|
;;
|
|
esac
|