Add cloudflare loadbalancing

This commit is contained in:
Alex D. 2019-06-29 22:41:26 +02:00
parent 2ef30d6382
commit d3b2eaa412
No known key found for this signature in database
GPG Key ID: 4D0C454CCA5DF3B6
2 changed files with 22 additions and 4 deletions

View File

@ -1,3 +1,8 @@
EMAIL="someone@example.co.uk"
AUTH_KEY="cryptic stuff lmao"
ZONE="something something letters"
LBIPS=(
"1.1.1.1 A"
"::1 AAAA"
"someip TYPE"
) # Array of IPS to loadbalance (creates dns rr records)

View File

@ -3,7 +3,7 @@
# Record content $5 (own IP)
# Cloudflare Proxy $6 (true)
if FETCH=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records" \
if FETCH=$(curl -sfX GET "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records" \
-H "X-Auth-Email: ${EMAIL}" \
-H "X-Auth-Key: ${AUTH_KEY}" \
-H "Content-Type: application/json"); then
@ -21,7 +21,7 @@ if FETCH=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_re
;;
"set")
if ! (containsElement "$3" "${DOMAIN[@]}"); then
if (curl -sX POST "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records" \
if (curl -sfX POST "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records" \
-H "X-Auth-Email: ${EMAIL}" \
-H "X-Auth-Key: ${AUTH_KEY}" \
-H "Content-Type: application/json" \
@ -33,7 +33,7 @@ if FETCH=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_re
else
for ((i=0;i<${#DOMAIN[@]};++i)); do
if [[ "${DOMAIN[$i]}" = "$3" ]]; then
if (curl -sX PUT "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records/$(echo "${FETCH}" | jq --compact-output -r "{(.result[$i].id): .result[$i].name}" | grep -oP "(?<=\{\")(.*)(?=\"\:\".*\"\})")" \
if (curl -sfX PUT "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records/$(echo "${FETCH}" | jq --compact-output -r "{(.result[$i].id): .result[$i].name}" | grep -oP "(?<=\{\")(.*)(?=\"\:\".*\"\})")" \
-H "X-Auth-Email: ${EMAIL}" \
-H "X-Auth-Key: ${AUTH_KEY}" \
-H "Content-Type: application/json" \
@ -46,11 +46,24 @@ if FETCH=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_re
done
fi
;;
"loadbalance")
for ((i=0;i<${#LBIPS[@]};++i)); do
if (curl -sfX POST "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records" \
-H "X-Auth-Email: ${EMAIL}" \
-H "X-Auth-Key: ${AUTH_KEY}" \
-H "Content-Type: application/json" \
--data "{\"type\":\"${LBIPS[$i]##* }\",\"name\":\"${3}\",\"content\":\"${LBIPS[$i]%% *}\",\"proxied\":"${6:-true}"}" > /dev/null 2>&1); then
echo "done Registered entry successfully."
else
echo "erro Failed to add entry"
fi
done
;;
"remove")
if (containsElement "$3" "${DOMAIN[@]}"); then
for ((i=0;i<${#DOMAIN[@]};++i)); do
if [[ "${DOMAIN[$i]}" = "$3" ]]; then
if (curl -sX DELETE "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records/$(echo "${FETCH}" | jq --compact-output -r "{(.result[$i].id): .result[$i].name}" | grep -oP "(?<=\{\")(.*)(?=\"\:\".*\"\})")" \
if (curl -sfX DELETE "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records/$(echo "${FETCH}" | jq --compact-output -r "{(.result[$i].id): .result[$i].name}" | grep -oP "(?<=\{\")(.*)(?=\"\:\".*\"\})")" \
-H "X-Auth-Email: ${EMAIL}" \
-H "X-Auth-Key: ${AUTH_KEY}" \
-H "Content-Type: application/json" > /dev/null 2>&1); then