function contains () { local n=$# local value=${!n} for ((i=1;i < $#;i++)) { if [ "${!i}" == "${value}" ]; then echo "y" return 0 fi } echo "n" return 1 } function TLD () { echo ${arg_u} | cut -d. -f2,3 } function SLD () { echo ${arg_u} | cut -d. -f1 } function call_API () { url="https://api.$NAMECHEAP_URL/xml.response\?ApiUser=${NAMECHEAP_API_USER}&ApiKey=${NAMECHEAP_API_KEY}&UserName=${NAMECHEAP_API_USER}&ClientIp=${IP}$1" output=$(curl -s ${url}) if [ $(echo ${output} | grep -c 'Status="OK"') -eq 0 ]; then error "API call failed. Please read the output" echo ${output} exit 1 else info "API call is a success." fi } function _fmt () { local color_ok="\x1b[32m" local color_bad="\x1b[31m" local color="${color_bad}" if [ "${1}" = "debug" ] || [ "${1}" = "info" ] || [ "${1}" = "notice" ]; then color="${color_ok}" fi local color_reset="\x1b[0m" if [[ "${TERM}" != "xterm"* ]] || [ -t 1 ]; then # Don't use colors on pipes or non-recognized terminals color=""; color_reset="" fi echo -e "$(date -u +"%Y-%m-%d %H:%M:%S UTC") ${color}$(printf "[%9s]" ${1})${color_reset}"; } function emergency () { echo "$(_fmt emergency) ${@}" 1>&2 || true; exit 1; } function alert () { [ "${LOG_LEVEL}" -ge 1 ] && echo "$(_fmt alert) ${@}" 1>&2 || true; } function critical () { [ "${LOG_LEVEL}" -ge 2 ] && echo "$(_fmt critical) ${@}" 1>&2 || true; } function error () { [ "${LOG_LEVEL}" -ge 3 ] && echo "$(_fmt error) ${@}" 1>&2 || true; } function warning () { [ "${LOG_LEVEL}" -ge 4 ] && echo "$(_fmt warning) ${@}" 1>&2 || true; } function notice () { [ "${LOG_LEVEL}" -ge 5 ] && echo "$(_fmt notice) ${@}" 1>&2 || true; } function info () { [ "${LOG_LEVEL}" -ge 6 ] && echo "$(_fmt info) ${@}" 1>&2 || true; } function debug () { [ "${LOG_LEVEL}" -ge 7 ] && echo "$(_fmt debug) ${@}" 1>&2 || true; } function help () { echo "" 1>&2 echo " ${@}" 1>&2 echo "" 1>&2 echo " ${usage}" 1>&2 echo "" 1>&2 exit 1 }