You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.6 KiB

#!/usr/bin/env sh
# This API is a wrapper for other API so that you
# are able to put your TXT record to multiple providers.
# The functionality is in the responsibility of the respective API
# therefore please check if your used APIs work.
# e.g. for using NS1 and AWS Route53, use:
# OCTODNS_PROVIDERS=nsone_aws
# --dns octodns
#
# Author: Josef Vogt
#
######## Public functions #####################
dns_octodns_add() {
fulldomain=$1
txtvalue=$2
_info "Creating DNS entries via octoDNS"
_debug fulldomain "$fulldomain"
_debug txtvalue "$txtvalue"
if [ -z "$OCTODNS_PROVIDERS" ]; then
OCTODNS_PROVIDERS=""
_err "You didn't specify OCTODNS_PROVIDERS yet."
_err "Please specifiy your providers and try again."
return 1
fi
#save the providers list to the account conf file.
_saveaccountconf OCTODNS_PROVIDERS "$OCTODNS_PROVIDERS"
for element in $(echo "$OCTODNS_PROVIDERS" | tr "_" ' '); do
_debug element "$element"
sourcecommand="$_SUB_FOLDER_DNSAPI/dns_${element}.sh"
# shellcheck disable=SC1090
if ! . "$sourcecommand"; then
_err "Load file $sourcecommand error. Please check your api file and try again."
return 1
fi
addcommand="dns_${element}_add"
_debug addcommand "$addcommand"
if ! $addcommand "$fulldomain" "$txtvalue"; then
_err "Adding record via $element API was not successful!"
_err "Please check if this API works."
return 1
fi
done
_info "Finished adding records via octoDNS API"
return 0
}
#Remove the txt record after validation.
dns_octodns_rm() {
fulldomain=$1
txtvalue=$2
_info "Removing DNS entries via octoDNS"
_debug fulldomain "$fulldomain"
_debug txtvalue "$txtvalue"
if [ -z "$OCTODNS_PROVIDERS" ]; then
OCTODNS_PROVIDERS=""
_err "You didn't specify OCTODNS_PROVIDERS yet."
_err "Please specifiy your providers and try again."
return 1
fi
for element in $(echo "$OCTODNS_PROVIDERS" | tr "_" ' '); do
_debug element "$element"
sourcecommand="$_SUB_FOLDER_DNSAPI/dns_${element}.sh"
# shellcheck disable=SC1090
if ! . "$sourcecommand"; then
_err "Load file $sourcecommand error. Please check your api file and try again."
return 1
fi
rmcommand="dns_${element}_rm"
_debug rmcommand "$rmcommand"
if ! $rmcommand "$fulldomain" "$txtvalue"; then
_err "Removing record via $element API was not successful!"
_err "You might have to remove the key manually."
_err "Please check if this API works."
return 1
fi
done
_info "Finished deleting records via octoDNS API"
return 0
}