HEX
Server: LiteSpeed
System: Linux s4814.usc1.stableserver.net 5.14.0-503.40.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May 5 06:06:04 EDT 2025 x86_64
User: autlimited (1987)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //usr/lib64/nagios/plugins/check_domain_expiration_teams.sh
#!/bin/bash

CRITICAL_DAYS=10
TEAMS_URL=""
WHOIS="/usr/bin/whois"
AWK="/usr/bin/awk"

check_domain()
{
	DOMAIN=$1
	DTYPE=$( echo $DOMAIN | awk -F "." '{print $NF}' )

	if [ "$DTYPE" == "com" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.internic.com "=${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "ie" ]
	then
	        EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE_TMP" ]
		then
		        EXP_DAYS=NULL
		else
		        EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
	        fi
	elif [ "$DTYPE" == "studio" ]
	then
	EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "se" ] || [ "$DTYPE" == "nu"  ]
	then
		EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/expires:/ { print $2 }')
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "ua" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.ua "${1}" | ${AWK} '/expires:/ { print $2 }')
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "asia" ]
	then
		EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "org" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.pir.org "${1}" | ${AWK} '/Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "info" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.afilias.info "${1}" | ${AWK} '/Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "net" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.verisign-grs.com "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "dev" ]
	then
		EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "center" ]
	then
		EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "pro" ]
	then
		EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "me" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.nic.me "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "su" ]
	then
		EXDATE=$(${WHOIS} "${1}" | ${AWK} '/paid-till:/ { gsub("\\.","-"); print $2 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "xn--p1ai" ]
	then
		EXDATE=$(${WHOIS} "${1}" | ${AWK} '/paid-till:/ { gsub("\\.","-"); print $2 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "ru" ]
	then
		EXDATE=$(${WHOIS} "${1}" | ${AWK} '/paid-till:/ { gsub("\\.","-"); print $2 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "moscow" ]
	then
		EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "art" ]
	then
		EXDATE=$(${WHOIS} -h whois.nic.art "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "pl" ]
	then
		EXDATE=$(${WHOIS} "${1}" | ${AWK} '/renewal date:/ { gsub("[:.]","-"); print $3 }')
		if [ -z "$EXDATE" ]
		then
			EXDATE=$(${WHOIS} -h whois.dns.pl "${1}" | ${AWK} '/expiration date:/ { gsub("[:.]","-"); print $3 }')
			if [ -z "$EXDATE" ]
			then
				EXP_DAYS=NULL
			else
				EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
			fi
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "cz" ]
	then
		EXDATE=$(${WHOIS} -h whois.nic.cz "${1}" | ${AWK} '/expire:/ { print $2 }' | ${AWK} '{ split($0, d, "."); print d[3]"-"d[2]"-"d[1] }')
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "sk" ]
	then
		EXDATE=$(${WHOIS} -h whois.sk-nic.sk "${1}" | ${AWK} '/Valid Until:/ { print $3 }')
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "biz" ]
	then
		EXDATE=$(${WHOIS} -h whois.biz "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "fr" -o "$DTYPE" == "re" -o "$DTYPE" == "yt" -o "$DTYPE" == "tf" -o "$DTYPE" == "wf" -o "$DTYPE" == "pm" ]
	then
		EXDATE=$(${WHOIS} -h whois.afnic.fr "${1}" | ${AWK} '/Expiry Date:/ { gsub("[:.]","-"); print $3 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "shop" ]
	then
		EXDATE=$(${WHOIS} -h whois.nic.shop "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "tv" ]
	then
		EXDATE=$(${WHOIS} -h tvwhois.verisign-grs.com "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "im" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.nic.im "${1}" | ${AWK} '/Expiry Date:/ { gsub("[:.]","-"); print $3 }' | cut -d 'T' -f1 | awk -F[/] '{print $2"/"$1"/"$3}')
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "uk" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.nic.uk "${1}" | grep 'Expiry date' | ${AWK} '{ print $3 }' )
		if [ -z "$EXDATE_TMP" ]
			then
				EXP_DAYS=NULL
			else
				EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
				EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "tech" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.nic.tech "${1}" | grep -i 'Expiry Date' | ${AWK} '{ print $4 }' )
		if [ -z "$EXDATE_TMP" ]
			then
				EXP_DAYS=NULL
			else
				EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
				EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "co" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.cloudflare.com "${1}" | grep -i 'Expiration Date' | ${AWK} '{ print $5 }')
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=$(date -d"$EXDATE_TMP" +%Y-%m-%d)
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "digital" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.nic.digital "${1}" | grep -i 'Expiry Date' | ${AWK} '{ print $4 }' )
		if [ -z "$EXDATE_TMP" ]
			then
				EXP_DAYS=NULL
			else
				EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
				EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "br" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.registro.br "${1}" | grep -i 'expires' | ${AWK} '{ print $2 }' )
		if [ -z "$EXDATE_TMP" ]
			then
				EXP_DAYS=NULL
			else
				EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
				EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "do" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.nic.do "${1}" | ${AWK} '/Registrar Registration Expiration Date:/ { print $5 }')
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "id" ]
	then
	        EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Expiration Date:/ { print $3 }')
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "it" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.nic.it "${1}" | grep -i "Expire Date" | ${AWK} '{ print $3 }')
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "club" ]
	then
		EXDATE=$(${WHOIS} -h whois.nic.club "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "io" ]
	then
		EXDATE=$(${WHOIS} -h whois.nic.io "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "space" ]
	then
	        EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE_TMP" ]
		then
		        EXP_DAYS=NULL
		else
		        EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
	        fi
	elif [ "$DTYPE" == "rocks" ]
	then
	        EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE_TMP" ]
		then
		        EXP_DAYS=NULL
		else
		        EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
	        fi
	elif [ "$DTYPE" == "us"  ]
	then
		EXDATE=$(${WHOIS} -h www.whois.us "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "in" ]
	then
		EXDATE=$(curl -Ls "https://rdap.org/domain/${1}" | jq -r '.events[] | select(.eventAction == "expiration") | .eventDate' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "mx" ]
	then
	        EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Expiration Date:/ { print $3 }')
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "fm" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.nic.fm "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "xyz" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.nic.xyz "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" = "is" ]
	then
		EXDATE_TMP=$(${WHOIS} -h whois.isnic.is "${1}" | ${AWK} 'BEGIN { FS=":"} ; /expires:/ { print $2 }' | cut -c 7-)
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "bz" ]
	then
		EXDATE=$(${WHOIS} -h whois.afilias-grs.info "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "cn" ]
	then
		EXDATE=$(${WHOIS} -h whois.cnnic.net.cn "${1}" | ${AWK} '/Expiration Time:/ { print $3 }')
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "kr" ]
	then
		EXDATE=$(${WHOIS} -h whois.nic.or.kr "${1}" | ${AWK} '/Expiration Date/ { gsub("\\.",""); print $4"-"$5"-"$6 }')
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "la" ]
	then
		EXDATE=$(${WHOIS} -h whois.nic.la "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "tw" ]
	then
		EXDATE=$(${WHOIS} -h whois.twnic.net.tw "${1}" | ${AWK} '/Record expires on/ { print $4 }')
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "vg" ]
	then
		EXDATE=$(${WHOIS} -h whois.nic.vg "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "ca" ]
	then
		EXDATE=$(${WHOIS} -h whois.cira.ca "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "cloud" ]
	then
		EXDATE=$(${WHOIS} -h whois.nic.cloud "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "group" ]
	then
		EXDATE=$(curl -Ls "https://rdap.org/domain/${1}" | jq -r '.events[] | select(.eventAction == "expiration") | .eventDate' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "ag" ]
	then
		EXDATE=$(${WHOIS} -h whois.godaddy.com "${1}" | ${AWK} '/Registrar Registration Expiration Date:/ { gsub("[:.]","-"); print $5 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$DTYPE" == "ph" ]
	then
		EXDATE=$(curl -Ls "https://whois.dot.ph/?utf8=%E2%9C%93&search=${1}" | ${AWK} -F"'" '/var expiryDate = moment/ { print $2 }' | cut -d 'T' -f1)
		if [ -z "$EXDATE" ]
		then
			EXP_DAYS=NULL
		else
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	else
		EXDATE_TMP=$(${WHOIS} -h whois.cloudflare.com "${1}" | ${AWK} '/Expiry Date:|Expiration Date:/ { print $NF }')
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=$(echo "$EXDATE_TMP" | cut -d 'T' -f1)
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	fi
}

check_domain_by_whois()
{
	DOMAIN=$1
	SERVER=$2

	if [ "$SERVER" == "whois.crazydomains.com" ]
	then
		EXDATE_TMP=$(${WHOIS} -h ${SERVER} "${DOMAIN}" | grep -i 'Expiration Date' | ${AWK} '{ print $5 }' )
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$SERVER" == "whois.cloudflare.com" ]
	then
		EXDATE_TMP=$(${WHOIS} -h ${SERVER} "${DOMAIN}" | grep -i 'Expiration Date' | ${AWK} '{ print $5 }' )
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	elif [ "$SERVER" == "whois.drs.ua" -o "$SERVER" == "whois.pp.ua" -o "$SERVER" == "whois.biz.ua" ]
	then
		EXDATE_TMP=$(${WHOIS} -h ${SERVER} "${DOMAIN}" | awk '/Expiration Date:/ { gsub("[:.]"," "); print $3 }' )
		if [ -z "$EXDATE_TMP" ]
		then
			EXP_DAYS=NULL
		else
			EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d`
			EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 ))
		fi
	else
		EXP_DAYS=NULL
	fi
}

help()
{
	echo "Usage: $0 [ -d domain_name ] [ -f domains_file ] [ -s whois_server ] [ -c critical_days ] [ -u teams_webhook_url ] [ -h ]"
	echo
	echo "  -d domain  : Domain to check"
	echo "  -f file    : File with one domain per line"
	echo "  -s server  : Whois server to query by"
	echo "  -c days    : Domain expiration critical threshold (default: 10)"
	echo "  -u url     : Teams webhook URL (sends only critical domains as JSON)"
	echo "  -h         : Show help"
	echo
}

while getopts :hd:f:s:c:u: option
do
	case "${option}"
	in
		d) DOMAIN=$( echo ${OPTARG} );;
		f) DOMAINS_FILE=$OPTARG;;
		s) SERVER=$OPTARG;;
		c) CRITICAL_DAYS=$OPTARG;;
		u) TEAMS_URL=$OPTARG;;
		h | *) help
		exit 0;;
	esac
done

check_single()
{
	local DOM=$1
	if [ "${SERVER:=auto}" == auto ]
	then
		check_domain "${DOM}"
	else
		check_domain_by_whois "${DOM}" "${SERVER}"
	fi

	if ! [[ "$EXP_DAYS" =~ ^-?[0-9]+$ ]]
	then
		echo "UNKNOWN - ${DOM}: expiration date not available"
	elif [ $EXP_DAYS -lt 0 ]
	then
		echo "CRITICAL - ${DOM}: domain has expired!"
	elif [ $EXP_DAYS -le $CRITICAL_DAYS ]
	then
		echo "CRITICAL - ${DOM}: $EXP_DAYS days until domain expires"
	else
		echo "OK - ${DOM}: $EXP_DAYS days until domain expires"
	fi
}

send_teams()
{
	local TITLE_STR=$1
	local TEXT_STR=$(echo "$2" | sed '/^$/d' | awk '{printf "%s%s", sep, $0; sep="\n\n"}')
	local PAYLOAD
	PAYLOAD=$(jq -n \
		--arg title "$TITLE_STR" \
		--arg text "$TEXT_STR" \
		'{
		 type: "AdaptiveCard",
		 "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
		 version: "1.4",
		 body: [
		   {type: "TextBlock", text: $title, weight: "Bolder", size: "Medium"},
		   {type: "TextBlock", text: $text, wrap: true}
		 ]
		}')
	curl -sf \
		-H "Content-Type: application/json" \
		-d "$PAYLOAD" \
		"$TEAMS_URL"
}

if [ -n "$DOMAINS_FILE" ]
then
	if [ ! -f "$DOMAINS_FILE" ]
	then
		echo "File not found: $DOMAINS_FILE"
		exit 1
	fi

	ALL_TEXT=""
	CRITICAL_TEXT=""

	while IFS= read -r line
	do
		line=$(echo "$line" | sed 's/#.*//' | xargs)
		[ -z "$line" ] && continue

		MSG=$(check_single "$line")
		ALL_TEXT="${ALL_TEXT}${MSG}
"
		case "$MSG" in CRITICAL*) CRITICAL_TEXT="${CRITICAL_TEXT}${MSG}
" ;; esac
	done < "$DOMAINS_FILE"

	if [ -n "$TEAMS_URL" ]
	then
		[ -n "$CRITICAL_TEXT" ] && send_teams "Domain Expiration: CRITICAL" "$CRITICAL_TEXT"
		exit 0
	fi

	printf '%s' "$ALL_TEXT"
	exit 0
fi

if [ -z "$DOMAIN" ]
then
	echo "No domain specified (-d or -f)"
	exit 1
fi

MSG=$(check_single "$DOMAIN")

if [ -n "$TEAMS_URL" ]
then
	case "$MSG" in CRITICAL*) send_teams "Domain Expiration: CRITICAL | ${DOMAIN}" "$MSG" ;; esac
	exit 0
fi

echo "$MSG"