#!/bin/bash
###########
# http://scripts.uggy.org
# Version:  1.0
# Todo:
#############################################

# Where domains are listed: 
FILE="/home/yannick/listDomains"

DATEJOURSEC=`date -u +%s`
WARNDAYS="20"
########################

echo
printf " %-25s %-20s %-15s %-20s \n"  "Domaine" "Date d expiration" "Jours restant" "Validite" 
echo "------------------------- -------------------- --------------- -------------------- "
echo


###### LOOP #################

for DOMAIN in `cat $FILE`
   do



############# TEST how the Expiration output seems to be... 

VERIF1=`whois $DOMAIN | grep "Domain Expiration Date"`
if [ -n "$VERIF1" ]
then
## Format "US" ###############################################
#Domain Expiration Date:  Fri Dec 28 23:59:59 GMT 2007
DATEEXPIR1=`whois $DOMAIN | grep "Domain Expiration Date"`
MONTHLETTER=`echo $DATEEXPIR1 | awk '{print $5}' | tr '[A-Z]' '[a-z]'`
DAYEXPIR=`echo $DATEEXPIR1 | awk '{print $6}'`
YEAREXPIR=`echo $DATEEXPIR1 | awk '{print $9}'`
FORMAT="us"
   else
     VERIF2=`whois $DOMAIN | grep "Expiration Date"`
     if [ -n "$VERIF2" ]
     then
     ## Format "FR" ##########################################
     #Expiration Date:01-May-2008 11:14:47 UTC
     DATEEXPIR1=`whois $DOMAIN |grep "Expiration Date" |awk -F':' '{print $2}' |awk '{print $1}'`
     MONTHLETTER=`echo $DATEEXPIR1|awk -F'-' '{print $2}'|tr '[A-Z]' '[a-z]'`
     DAYEXPIR=`echo $DATEEXPIR1|awk -F'-' '{print $1}'`
     YEAREXPIR=`echo $DATEEXPIR1|awk -F'-' '{print $3}'`
     FORMAT="us"
        else
        FORMAT="vide"
    fi
fi

#############################################
# Calculate number of days between 2 dates

JourRestants (){
     dte1=`date -u --date "$1" +%s`
     dte2=$DATEJOURSEC
     diffSec=$((dte1-dte2))
     echo $((diffSec/86400))
}

#############################################################################
# Purpose: Convert a string month into a integer representation
# Arguments:
#   $1 -> Month name (e.g., Sep)
# code of this part from:    http://prefetch.net/code/ssl-cert-check
#############################################################################
getmonth() 
{
    case ${1} in
        jan) echo 01 ;;
        feb) echo 02 ;;
        mar) echo 03 ;;
        apr) echo 04 ;;
        may) echo 05 ;;
        jun) echo 06 ;;
        jul) echo 07 ;;
        aug) echo 08 ;;
        sep) echo 09 ;;
        oct) echo 10 ;;
        nov) echo 11 ;;
        dec) echo 12 ;;
          *) echo  0 ;;
    esac
}

#######################
# Convert date from  "19-aug-2014"  ->  "2014-08-19"
# Which is the used format into this script

MONTHNUMBER=$(getmonth $MONTHLETTER)

########################
# Write the expiration date a the correct format Y-M-D
#DATEEXPIR="2008-03-19"

DATEEXPIR="$YEAREXPIR-$MONTHNUMBER-$DAYEXPIR"

######################
# Number of days between DATEEXPIR and DATEJOURSEC
# Which is the number of days before expiration

JOURSRESTANTS=`JourRestants $DATEEXPIR $DATEJOURSEC`

################################
# "Validity" status

if [ $FORMAT = "vide" ]
then VALIDITE="No WHOIS Data"
   elif ((JOURSRESTANTS < 0))
      then VALIDITE="!! EXPIRED ! ! !! !!!!"
   elif ((JOURSRESTANTS < $WARNDAYS))
      then VALIDITE="  WARNING !!! !!"
   else VALIDITE="   VALID"
fi



########################
# Write the results in a beautiful way ;)

if [ $FORMAT = "vide" ]
then 
printf "%-25s %-20s %-15s %-20s \n" "$DOMAIN" "-----------" "-" "$VALIDITE"
else
printf "%-25s %-20s %-15s %-20s \n" "$DOMAIN" "$DAYEXPIR-$MONTHLETTER-$YEAREXPIR" "$JOURSRESTANTS" "$VALIDITE" 
fi


done

####### END LOOP #####################################
echo

