Add cloudflare loadbalancing
This commit is contained in:
parent
2ef30d6382
commit
d3b2eaa412
|
@ -1,3 +1,8 @@
|
||||||
EMAIL="someone@example.co.uk"
|
EMAIL="someone@example.co.uk"
|
||||||
AUTH_KEY="cryptic stuff lmao"
|
AUTH_KEY="cryptic stuff lmao"
|
||||||
ZONE="something something letters"
|
ZONE="something something letters"
|
||||||
|
LBIPS=(
|
||||||
|
"1.1.1.1 A"
|
||||||
|
"::1 AAAA"
|
||||||
|
"someip TYPE"
|
||||||
|
) # Array of IPS to loadbalance (creates dns rr records)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
# Record content $5 (own IP)
|
# Record content $5 (own IP)
|
||||||
# Cloudflare Proxy $6 (true)
|
# 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-Email: ${EMAIL}" \
|
||||||
-H "X-Auth-Key: ${AUTH_KEY}" \
|
-H "X-Auth-Key: ${AUTH_KEY}" \
|
||||||
-H "Content-Type: application/json"); then
|
-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")
|
"set")
|
||||||
if ! (containsElement "$3" "${DOMAIN[@]}"); then
|
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-Email: ${EMAIL}" \
|
||||||
-H "X-Auth-Key: ${AUTH_KEY}" \
|
-H "X-Auth-Key: ${AUTH_KEY}" \
|
||||||
-H "Content-Type: application/json" \
|
-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
|
else
|
||||||
for ((i=0;i<${#DOMAIN[@]};++i)); do
|
for ((i=0;i<${#DOMAIN[@]};++i)); do
|
||||||
if [[ "${DOMAIN[$i]}" = "$3" ]]; then
|
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-Email: ${EMAIL}" \
|
||||||
-H "X-Auth-Key: ${AUTH_KEY}" \
|
-H "X-Auth-Key: ${AUTH_KEY}" \
|
||||||
-H "Content-Type: application/json" \
|
-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
|
done
|
||||||
fi
|
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")
|
"remove")
|
||||||
if (containsElement "$3" "${DOMAIN[@]}"); then
|
if (containsElement "$3" "${DOMAIN[@]}"); then
|
||||||
for ((i=0;i<${#DOMAIN[@]};++i)); do
|
for ((i=0;i<${#DOMAIN[@]};++i)); do
|
||||||
if [[ "${DOMAIN[$i]}" = "$3" ]]; then
|
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-Email: ${EMAIL}" \
|
||||||
-H "X-Auth-Key: ${AUTH_KEY}" \
|
-H "X-Auth-Key: ${AUTH_KEY}" \
|
||||||
-H "Content-Type: application/json" > /dev/null 2>&1); then
|
-H "Content-Type: application/json" > /dev/null 2>&1); then
|
||||||
|
|
Reference in New Issue