
#!/bin/bash
# File	: proc_monavail
# By	: MaartenDeBoer, 15022x
# Subject	: Script to process monavail status
#(0.2)	: Mod + YELLOW, --utc
#(0.3)	: Add empty LASTDATI
#(0.4)	: LASTDATI in STATUS.dat
#(0.5)	: Mod. for cgi-bin/
#(0.6)	: Remove grep -v ${VERSION}
#(0.7)	: Add hostname in status.csv
#(0.8),190425	: Added USAGE
#(0.9),190426	: Added -w
#(0.10),190711	: ADDED FONTSIZE, PAGEDIR, RCFILE, HOSTNAME
PGM="`basename $0|cut -d\. -f1`"
VER="0.10"
TMP="/tmp/${PGM}.$$"
HOSTNAME=`hostname|cut -d\. -f1`

HOME="/home/monavail"

CUSTFILE="${HOME}/etc/monavail.cust"
STATUSFILE="${HOME}/data/status.dat"
STATUS="??"
PROCS=""
MAIL=""
WEBUPD=""
PAGEDIR="/var/www/vhosts/monavail.agrarix.com/html"
PAGE="${PAGEDIR}/index.html"
EXCLFILE="${HOME}/etc/monavail.excl"
RCFILE="${HOME}/etc/${PGM}.rc"
FONTSIZE="2"

USAGE()
{
  echo "Usage: ${PGM} <options>"
  echo "  Version: ${VER}"
  echo "  options         :"
  echo "    -h|--help     : this Help"
  echo "    -m|--mail     : proc & send Mail"
  echo "    -s|--status   : proc Status"
  echo "    -w|--webupd   : update Web page (${PAGE})"
  echo "    -V            : show Version"
  echo "    -x            : set -x"
  echo "    --mailto      : change MAILTO address & do send mail (${MAILTO})"
}
## MAIN
# Check options
if [ $# -eq 0 ]; then
  echo "No option(s) given. So not to know what to do. Exiting..."; echo; USAGE;
 exit 1
fi
while [ $# -gt 0 ]
  do
  case $1 in
    -m | --mail) MAIL=1 ;;
    -w | --webupd) WEBUPD=1 ;;
    -s | --status) PROCS=1 ;;
    --mailto) MAILTO=$2; MAIL=1; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known. Exiting..."; echo; USAGE; exit 1 ;;
  esac
    shift
done

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Using ..."|tee -a ${LOG}
  . ${RCFILE}
fi
PAGE="${PAGEDIR}/index.html"

echo "CUSTFILE=${CUSTFILE}"
echo "EXCLFILE=${EXCLFILE}"
echo "FONTSIZE=${FONTSIZE}"
echo "STATUSFILE=${STATUSFILE}"
echo "MAIL=${MAIL}"
echo "MAILTO=${MAILTO}"
echo "PAGE=${PAGE}"
echo "PAGEDIR=${PAGEDIR}"
echo "PROCS=${PROCS}"
echo "RCFILE=${RCFILE}"
echo "WEBUPD=${WEBUPD}"
sleep 1

if [ ! -f ${EXCLFILE} ]; then
  echo " No Exclude file (${EXCLFILE}) found. Exiting ..."|tee -a ${LOG}
  exit 2
fi

# Process STATUS
if [ ${PROCS} ]; then
  echo "  PROCessing the status info ..."|tee -a ${LOG}
  cp /dev/null ${STATUSFILE}
  chmod 777 ${STATUSFILE}

  cd ${HOME}/data
  ls -1 m*.dat|grep -v m0000| while read DATFILE
  do
    CID="`cat ${DATFILE} | tail -1|awk -F\; '{print $2}'`"
    LASTDATE="`cat ${DATFILE} | grep "${VERSION}"|tail -1|awk -F\; '{print $4}'`"
    LASTDATI="`cat ${DATFILE} | grep "${VERSION}"|tail -1|awk -F\; '{print $5}'`"
    REMHOST="`cat ${DATFILE} | grep "${VERSION}"|tail -1|awk -F\; '{print $3}'`"
    echo "|${CID}|${LASTDATI}|" 

    if [ "${LASTDATI}" == "" ]; then
      LASTDATI=000000000000
    fi

    if [ -f ${CUSTFILE} ]; then
      CUST="`grep ${CID} ${CUSTFILE}|awk -F\; '{print $2}'`"
    else 
      echo "NO CUST-file"
    fi

# Check if last update datastr is newer then 1hr
    CHKDATISTR="`date --utc --date=\"-30 minutes\" +%Y%m%d%H%M%S`"
    if [ ${CHKDATISTR} -lt ${LASTDATI} ]; then
      STATUS="green"
    else
  # Check if last update datastr is newer then 1hr
      CHKDATISTR="`date --utc --date=\"-45 minutes\" +%Y%m%d%H%M%S`"
      if [ ${CHKDATISTR} -lt ${LASTDATI} ]; then
        STATUS="yellow"
      else
    # Check if last update datastr is newer then 1hr
        CHKDATISTR="`date --utc --date=\"-60 minutes\" +%Y%m%d%H%M%S`"
        if [ ${CHKDATISTR} -lt ${LASTDATI} ]; then
          STATUS="orange"
        else
          STATUS="red"
        fi  # ORANJE
      fi  # YELLOW
    fi  # GREEN

# Check if Red & Excluded, then make PINK (down, but no problem)
    if [ "${STATUS}" = "red" ]; then
      ANSW=`grep ${CID} $EXCLFILE`
      if [ "${ANSW}" != "" ]; then
        STATUS="pink"
      fi
    fi  # RED & EXCL

    echo "${CUST} (${REMHOST}) [${CID}];${STATUS};${LASTDATE};${LASTDATI};"|tee -a ${STATUSFILE}
  done   # ls
fi  # PROCstatus

# Update website
if [ ${WEBUPD} ]; then
  echo "  UPDating the webpage ..."|tee -a ${LOG}

rm -f ${PAGE}
touch ${PAGE}

# Header
cat << EOF >> ${PAGE}
<HTML>
<HEAD>
<TITLE>MonAvail Status</TITLE>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META content="Maarten de Boer, Linux" name=KEYWORDS>
<META content="Maarten de Boer" name=AUTHOR>
<META content=index,follow name=robots>
<META HTTP-EQUIV="refresh" CONTENT="120">
</HEAD>

<BODY aLink=#ff0000 bgColor=#c0c0c0 link=#0000ff text=#000000 vLink=#ff0000>

<H1>MonAvail Status:</H1>

EOF

#echo "<TABLE BORDER WIDTH=\"100%\" >" >> ${PAGE}
echo "<TABLE BORDER >" >> ${PAGE}
echo "  <TR>" >> ${PAGE}
echo "    <TD> </TD>" >> ${PAGE}
echo "    <TD> <FONT SIZE="${FONTSIZE}"> <B> UTC time: </TD>" >> ${PAGE}
echo "    <TD> <FONT SIZE="${FONTSIZE}"> <B> `date --utc` </TD>" >> ${PAGE}
echo "    <TD> <FONT SIZE="${FONTSIZE}"> <B> `date --utc +%Y%m%d%H%M%S` </TD>" >> ${PAGE}
echo "  </TR>" >> ${PAGE}
echo "  <TR>" >> ${PAGE}
echo "    <TD> <FONT SIZE="${FONTSIZE}"> <U> Location (name) [CID] </TD>" >> ${PAGE}
echo "    <TD> <FONT SIZE="${FONTSIZE}"> <U> Status </TD>" >> ${PAGE}
echo "    <TD> <FONT SIZE="${FONTSIZE}"> <U> Last Date </TD>" >> ${PAGE}
echo "    <TD> <FONT SIZE="${FONTSIZE}"> <U> Last DAte TIme </TD>" >> ${PAGE}
echo "  </TR>" >> ${PAGE}

cat ${HOME}/data/status.dat|grep -v m0001|sort -t\; -rnk 4| while read LINE
do
  CID="`echo ${LINE}|awk -F \; '{print $1}'`"
  STATUS="`echo ${LINE}|awk -F \; '{print $2}'`"
  LASTDATE="`echo ${LINE}|awk -F \; '{print $3}'`"
  LASTDATI="`echo ${LINE}|awk -F \; '{print $4}'`"

  echo "  <TR>" >> ${PAGE}
  echo "    <TD> <FONT SIZE="${FONTSIZE}"> ${CID} </TD>" >> ${PAGE}
  echo "    <TD BGCOLOR=${STATUS}> <FONT SIZE="${FONTSIZE}"> ${STATUS} </TD>" >> ${PAGE}
  echo "    <TD> <FONT SIZE="${FONTSIZE}"> ${LASTDATE} </TD>" >> ${PAGE}
  echo "    <TD> <FONT SIZE="${FONTSIZE}"> ${LASTDATI} </TD>" >> ${PAGE}
  echo "  </TR>" >> ${PAGE}

done  #  cat

echo "  <TR>" >> ${PAGE}
echo "    <TD></TD>"  >> ${PAGE}
echo "    <TD> <FONT SIZE="${FONTSIZE}"> Local time: </FONT> </TD>"  >> ${PAGE}
echo "    <TD> <FONT SIZE="${FONTSIZE}"> `date` </FONT> </TD>"  >> ${PAGE}
echo "    <TD></TD>"  >> ${PAGE}
echo "  </TR>"  >> ${PAGE}

echo "</TABLE>"  >> ${PAGE}

echo "<P>"  >> ${PAGE}

echo "<FONT SIZE="${FONTSIZE}"> Legenda Status: </FONT>" >> ${PAGE}
echo "<FONT SIZE="${FONTSIZE}" COLOR=GREEN> <=30min </FONT>" >> ${PAGE}
echo "<FONT SIZE="${FONTSIZE}" COLOR=YELLOW> >30min </FONT>" >> ${PAGE}
echo "<FONT SIZE="${FONTSIZE}" COLOR=ORANGE> >45min </FONT>" >> ${PAGE}
echo "<FONT SIZE="${FONTSIZE}" COLOR=RED> >60min </FONT>" >> ${PAGE}
echo "<FONT SIZE="${FONTSIZE}" COLOR=PINK> >60min, but excluded </FONT>" >> ${PAGE}
echo "<BR>" >> ${PAGE}
echo "<BR>" >> ${PAGE}
echo "<H6>Last update: `date` ${PGM} v${VER} @ ${HOSTNAME}</H6>" >> ${PAGE}

# Footer
cat << EOF >> ${PAGE}
</BODY>
</HTML>
EOF

fi  # UPD


exit 0

