
#!/bin/sh
# File	: upd_status-atostechlab.sh
# By	: Maarten.deBoer@Atos.net, 210106
# Subject	: Script to update status of Atos TechLab
#(0.2)	: Removed 1st &2nd part of IP & renamed from upd_atostechlab-status.sh
#(0.3),210107	: Mod. with DATADIR
#(0.4),210107	: Mod. red-> yellow (ACCEPTED) & DECOM
#(0.5),210107	: Some mod's
#(0.6),210108	: Added mobile (.htm)
#(0.7),200109	: Added LOCATION
#(0.8),210111	: Mod. for LOC's
#(0.9),210112	: Mod. for detail/
#(0.10),210126	: Added mkdir -p ${PAGEDIR}/detail/
PGM=`basename $0|cut -d\. -f1`
VER="0.10"
TMP="/tmp/${PGM}.$$"
BASEDIR="${HOME}/status"
LOG="${BASEDIR}/log/${PGM}.log"
DATI=`date +%Y-%m-%d-%H-%M-%S`

#PAGEDIR="/var/www/vhosts/status.atostechlab.nl/html"
PAGEDIR="/appl/dfm/web/techlab/status"
PAGE="${PAGEDIR}/index.html"
PAGEM="${PAGEDIR}/index.htm"
DATA_CSV="${BASEDIR}/data/status-atostechlab.csv"
DATADIR="${BASEDIR}/data"
ACCEPTED="${BASEDIR}/etc/chk_status-atostechlab.accepted"
DECOM="${BASEDIR}/etc/chk_status-atostechlab.decom"
IP2LOC_FILE="${BASEDIR}/etc/ip2location.csv"
HTACCESS="${PAGEDIR}/detail/.htaccess"

#BGCOLOR="#0066A1"
BGCOLOR="lightgrey"
LINK_COL="#0066A1"
TBORDER=0
FSIZE=4
FSIZEM=5
FFACE="Verdana"

CREATE_HEADER()
{
CPAGE="${1}"
echo "<!DOCTYPE HTML> " > ${CPAGE}
echo "<HTML> " >> ${CPAGE}
echo "  <HEAD> " >> ${CPAGE}
echo "  <META NAME='generator' content='Agrarix.IT:${PGM} v${VER}' /> " >> ${CPAGE}
echo "  <META NAME='up-date' content='${DATI}' /> " >> ${CPAGE}
echo "  <meta http-equiv='Content-Language' content='en-us'>" >> ${CPAGE}
echo "  <meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>" >> ${CPAGE}
echo "  <meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>" >> ${CPAGE}
echo "  <meta name='author' content='Maarten@Agrarix.IT' />" >> ${CPAGE}

echo "  <link rel="icon" href="TechLab_logo.png" type="image/png">" >> ${CPAGE}

echo "  <title>AtosTechLab-status</title>" >> ${CPAGE}
echo "  </HEAD> " >> ${CPAGE}
echo "  <BODY aLink=${LINK_COL} link=${LINK_COL} vLink=${LINK_COL} >" >> ${CPAGE}

# 1st TABLE
echo "<TABLE class='table1-class' border=${TBORDER} width='100%' id='table1' cellpadding='0' cellspacing='0'> " >> ${CPAGE}

echo "  <tr>" >> ${CPAGE}
echo "    <td>" >> ${CPAGE}
echo "      <table class='table2-class' border=${TBORDER} id='table2' cellspacing='0' width='100%'> " >> ${CPAGE}
echo "        <TR>" >> ${CPAGE}
echo "          <TD><CENTER><font size='10' color=black face=${FFACE}><A HREF="..">STATUS</A></font></CENTER> </TD>" >> ${CPAGE}
echo "          <TD> <A HREF="//atos.net"><IMG SRC="Logo_Atos_215x72_RGB.jpg"></A></TD>" >> ${CPAGE}
echo "          <TD> <A HREF="//www.atostechlab.nl"><IMG SRC="Atos_Technology-Lab-banner-black-blue-150.png" height="100"></A></TD>" >> ${CPAGE}
echo "        </TR>" >> ${CPAGE}
echo "      </TABLE>" >> ${CPAGE}
echo "    </td>" >> ${CPAGE}
echo "  </tr>" >> ${CPAGE}

echo "  <tr>" >> ${CPAGE}
echo "    <td>" >> ${CPAGE}
# ----- menu ---------------------------------------
echo "      <table class='table3-class' border=${TBORDER} width='100%' id='table3' cellspacing='0'> " >> ${CPAGE}
echo "        <tr>" >> ${CPAGE}
#echo "          <td bgcolor="${BGCOLOR}" width="5">" >> ${CPAGE}
#echo "          </td>" >> ${CPAGE}
echo "          <td bgcolor="${BGCOLOR}" align='left' height="30">" >> ${CPAGE}
echo "            <font size='2' color=white face=${FFACE}> " >> ${CPAGE}
echo "              <B><a href='//atos.net' target="_blank">Atos</a> | </B> " >> ${CPAGE}
echo "              <B><a href='//myatos.net' target="_blank">MyAtos</a> | </B>" >> ${CPAGE}
if [ -f ${HTACCESS} ]; then
  echo "              <B><a href='/access' target="_blank">ACCESS</a> | </B>  " >> ${CPAGE}
fi
echo "            </font>" >> ${CPAGE}
echo "          </td>" >> ${CPAGE}

echo "          <td bgcolor="${BGCOLOR}" align='right'>" >> ${CPAGE}

echo "            <font size='2' color=${LINK_COL} face=${FFACE}>" >> ${CPAGE}
echo "            For updates:" >> ${CPAGE}
echo "            </font>" >> ${CPAGE}
echo "            <a href='mailto:maarten@agrarix.it?subject=atostechlab.nl' target="_blank">" >> ${CPAGE}
echo "              <font size='2' color=${LINK_COL} face=${FFACE}>" >> ${CPAGE}
echo "                <B>Contact</B>" >> ${CPAGE}
echo "              </font>" >> ${CPAGE}
echo "            </a>" >> ${CPAGE}
echo "          </td>" >> ${CPAGE}
#echo "          <td bgcolor="${BGCOLOR}" width="5">" >> ${CPAGE}
#echo "          </td>" >> ${CPAGE}
echo "        </tr>" >> ${CPAGE}
echo "      </table>" >> ${CPAGE}
# ----- menu ---------------------------------------
echo "    </td>" >> ${CPAGE}
echo "  </tr>" >> ${CPAGE}

if [ "${DATI}" != "" ]; then
  echo "  <tr>" >> ${CPAGE}
  echo "    <td>" >> ${CPAGE}
  echo "      <table class='table4-class' border=${TBORDER} id='table4' cellspacing='0'> " >> ${CPAGE}
  echo "        <tr>" >> ${CPAGE}
  echo "          <TD bgcolor="red"><font size=${FSIZE} color="black" face=${FFACE}>NOT ok</TD>" >> ${CPAGE}
  echo "          <TD bgcolor="orange"><font size=${FSIZE} color="black" face=${FFACE}>not ok</TD>" >> ${CPAGE}
  echo "          <TD bgcolor="yellow"><font size=${FSIZE} color="black" face=${FFACE}>ACCEPTED NOT ok</TD>" >> ${CPAGE}
  echo "          <TD bgcolor="green"><font size=${FSIZE} color="black" face=${FFACE}>OK</TD>" >> ${CPAGE}
  echo "          <TD bgcolor="lightgrey"><font size=${FSIZE} color="black" face=${FFACE}>Decom</TD>" >> ${CPAGE}
  echo "          <TD bgcolor="white"><font size=${FSIZE} color="black" face=${FFACE}>Curr:</TD>" >> ${CPAGE}
  echo "          <TD bgcolor="white"><font size=${FSIZE} color="black" face=${FFACE}>${DATI}</TD>" >> ${CPAGE}
  echo "        </tr>" >> ${CPAGE}
  echo "      </table> " >> ${CPAGE}
  echo "    </td>" >> ${CPAGE}
  echo "  </tr>" >> ${CPAGE}
fi  # DATI <> ""

}

CREATE_FOOTER()
{
CPAGE="${1}"
# Last row
cat << EOT >> ${CPAGE}
  <tr>
    <td bgcolor=${BGCOLOR} align='center'>
      <a href='//agrarix.it' target="_blank">
        <font size='1' color=while face=${FFACE}>
Design by Agrarix-IT
        </font>
      </a>
    </td>
  </tr>
EOT

# End of 1st table
echo "  </TABLE>" >> ${CPAGE}
# table1
echo "  </BODY>" >> ${CPAGE}
echo "</HTML>" >> ${CPAGE}

}


echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
if [ ! -f ${PAGE} ]; then
  echo "  PAGE (${PAGE}) NOT found. Exiting ..."|tee -a ${LOG}
  exit 3
fi
if [ ! -d ${DATADIR} ]; then
  echo "  DATADIR (${DATADIR}) NOT found. Exiting ..."|tee -a ${LOG}
  exit 4
fi

touch ${TMP}

# 1st: Sortout location /NAME in ${TMP}
echo "  Sortingout locations 1st ..."
cd ${DATADIR}
cat 2*.csv|grep -v ^#|awk -F\; '{print $2}'|sort -u|while read NAME REST1
do
  echo -n "."
  LAST_NAME_LINE=`grep ";${NAME};" 2*.csv|cut -d\: -f2|sort -u|tail -1`
#  echo "  ${NAME}:${LAST_NAME_LINE}"
  CSV_DATI=`echo ${LAST_NAME_LINE}|awk -F\; '{print $1}'`
  NAME=`echo ${LAST_NAME_LINE}|awk -F\; '{print $2}'|cut -d\. -f1`
  FULL_IP=`echo ${LAST_NAME_LINE}|awk -F\; '{print $3}'`
  IP12=`echo ${LAST_NAME_LINE}|awk -F\; '{print $3}'|cut -d\. -f1,2`
  STATUS=`echo ${LAST_NAME_LINE}|awk -F\; '{print $4}'|awk '{print $1}'`
  STATUS_COL=`echo ${LAST_NAME_LINE}|awk -F\; '{print $4}'|cut -d\( -f2|cut -d\) -f1`
  CHECK=`echo ${LAST_NAME_LINE}|awk -F\; '{print $5}'`
# LOCation
  LOCATION="-NA-"
  if [ -f ${IP2LOC_FILE} ]; then
    LOCATION=`grep "${IP12}" ${IP2LOC_FILE}|awk -F\; '{print $2}'`
  fi  #  -f ${IP2LOC_FILE}

# When ACCEPTED-file, check if NAME | IP is in ACCEPTED-file.
# Then Red -> yellow
  if [ -f ${ACCEPTED} ] && [ "${STATUS_COL}" = "red" ] && [ "${NAME}" != "" ] && [ "${FULL_IP}" != "" ]; then
    ANSW=`egrep "${NAME}|${FULL_IP}" ${ACCEPTED}|grep -v ^#`
#echo "    ACCEPTED=${ANSW}"
    if [ "${ANSW}" != "" ]; then
      STATUS_COL="yellow"
    fi
  fi  # ACCEPTED

# When DECOM-file, check if NAME | IP is in DECOM-file.
# Then COLOR=lightgrey
  if [ -f ${DECOM} ] && [ "${NAME}" != "" ] && [ "${FULL_IP}" != "" ]; then
    ANSW=`egrep "${NAME}|${FULL_IP}" ${DECOM}|grep -v ^#`
#echo "    DECOM=${ANSW}"
    if [ "${ANSW}" != "" ]; then
      STATUS_COL="lightgrey"
    fi
  fi  # DECOM


  echo "${LOCATION};${CSV_DATI};${NAME};${FULL_IP};${STATUS};${STATUS_COL};${CHECK};" >>  ${TMP}
done  # cat .. NAME
echo ""


# 2nd -------------------------------------
# For every location

cat ${TMP}|grep -v ^#|awk -F\; '{print $1}'|sort -u|while read LOC REST1
do
  echo "  ${LOC}"
  if [ ! -d ${PAGEDIR}/detail/ ]; then
    mkdir -p ${PAGEDIR}/detail/
  fi
  PAGE="${PAGEDIR}/detail/${LOC}_status.html"
  CREATE_HEADER ${PAGE}

  echo "  <tr>" >> ${PAGE}
  echo "    <td>" >> ${PAGE}
  echo "      <table class='table5-class' border=${TBORDER} id='table5' cellspacing='0'> " >> ${PAGE}
  echo "        <tr>" >> ${PAGE}
  echo "          <TH bgcolor=${LINK_COL}><font size=${FSIZE} color=${BGCOLOR} face=${FFACE}> LOC </TH>" >> ${PAGE}
  echo "          <TH bgcolor=${LINK_COL}><font size=${FSIZE} color=${BGCOLOR} face=${FFACE}> NAME </TH>" >> ${PAGE}
  echo "          <TH bgcolor=${LINK_COL}><font size=${FSIZE} color=${BGCOLOR} face=${FFACE}> IP </TH>" >> ${PAGE}
  echo "          <TH bgcolor=${LINK_COL}><font size=${FSIZE} color=${BGCOLOR} face=${FFACE}> CHECK </TH>" >> ${PAGE}
  echo "          <TH bgcolor=${LINK_COL}><font size=${FSIZE} color=${BGCOLOR} face=${FFACE}> STATUS </TH>" >> ${PAGE}
  echo "          <TH bgcolor=${LINK_COL}><font size=${FSIZE} color=${BGCOLOR} face=${FFACE}> DATE+TIME </TH>" >> ${PAGE}
  echo "        </tr>" >> ${PAGE}

  COLORS="red orange yellow green lightgrey"
  for COLOR in ${COLORS}
  do
    echo "  ${COLOR}"
    cat ${TMP}|grep -v ^#|grep ^${LOC}|grep ";${COLOR};"|while read LINE
    do
      CSV_DATI=`echo ${LINE}|awk -F\; '{print $2}'`
      NAME=`echo ${LINE}|awk -F\; '{print $3}'|cut -d\. -f1`
      FULL_IP=`echo ${LINE}|awk -F\; '{print $4}'`
      IP="x.x.`echo ${LINE}|awk -F\; '{print $4}'|cut -d\. -f3,4`"
      STATUS=`echo ${LINE}|awk -F\; '{print $5}'`
      STATUS_COL=`echo ${LINE}|awk -F\; '{print $6}'`
      CHECK=`echo ${LINE}|awk -F\; '{print $7}'`

      echo "    ${NAME}|${FULL_IP}|${STATUS}|${STATUS_COL}|${CHECK}|"

    if [ "${STATUS_COL}" != "" ]; then
FCOLOR="black"
      echo "        <tr>" >> ${PAGE}
      echo "          <td bgcolor=${STATUS_COL}>" >> ${PAGE}
      echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>${LOC}</font>" >> ${PAGE}
      echo "          </td>" >> ${PAGE}
      echo "          <td bgcolor=${STATUS_COL}>" >> ${PAGE}
      echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>${NAME}</font>" >> ${PAGE}
      echo "          </td>" >> ${PAGE}
      echo "          <td bgcolor=${STATUS_COL}>" >> ${PAGE}
      echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>${IP}</font>" >> ${PAGE}
      echo "          </td>" >> ${PAGE}
      echo "          <td bgcolor=${STATUS_COL}>" >> ${PAGE}
      echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>${CHECK}</font>" >> ${PAGE}
      echo "          </td>" >> ${PAGE}
      echo "          <td bgcolor=${STATUS_COL}>" >> ${PAGE}
      echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>${STATUS}</font>" >> ${PAGE}
      echo "          </td>" >> ${PAGE}
      echo "          <td bgcolor=${STATUS_COL}>" >> ${PAGE}
      echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>${CSV_DATI}</font>" >> ${PAGE}
      echo "          </td>" >> ${PAGE}
      echo "        </tr>" >> ${PAGE}
    fi  # ${STATUS_COL}" != ""

    done  # cat ${TMP}

  done  # COLOR

 # table5
  echo "      </table> " >> ${PAGE}
  echo "    </td>" >> ${PAGE}
  echo "  </tr>" >> ${PAGE}
  CREATE_FOOTER ${PAGE}

  # Create Mobile pages by copy of PAGE (TMP) and shange FSIZE
  PAGEM="${PAGEDIR}/${LOC}_status.htm"
  cat ${PAGE} | sed "s/size=${FSIZE}/size=${FSIZEM}/g" > ${PAGEM}
done  # cat .. LOC

# MAIN-page --------------
PAGE="${PAGEDIR}/index.html"
PAGEM="${PAGEDIR}/index.htm"
TBORDER=0
FSIZE=8
FSIZEM=10
FCOLOR="black"
# No DATI in header
DATI=""

CREATE_HEADER ${PAGE}


echo "  <tr>" >> ${PAGE}
echo "    <td bgcolor=${BGC}>" >> ${PAGE}
echo "      <table class='table6-class' border=${TBORDER} id='table6' cellspacing='0'> " >> ${PAGE}

COLORS="red orange yellow green lightgrey"
# THeader
echo "        <tr>" >> ${PAGE}
echo "          <th bgcolor=${LINK_COL}>" >> ${PAGE}
echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>LOC</font>" >> ${PAGE}
echo "          </th>" >> ${PAGE}
echo "          <th bgcolor=red>" >> ${PAGE}
echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>NOT</font>" >> ${PAGE}
echo "          </th>" >> ${PAGE}
echo "          <th bgcolor=orange>" >> ${PAGE}
echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>not</font>" >> ${PAGE}
echo "          </th>" >> ${PAGE}
echo "          <th bgcolor=yellow>" >> ${PAGE}
echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>accepted</font>" >> ${PAGE}
echo "          </th>" >> ${PAGE}
echo "          <th bgcolor=green>" >> ${PAGE}
echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>OK</font>" >> ${PAGE}
echo "          </th>" >> ${PAGE}
echo "          <th bgcolor=lightgrey>" >> ${PAGE}
echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>Decom</font>" >> ${PAGE}
echo "          </th>" >> ${PAGE}


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


cat ${TMP}|grep -v ^#|awk -F\; '{print $1}'|sort -u|while read LOC REST1
do
  BGC=""
  COUNT=`cat ${TMP}|grep -v ^#|grep ^${LOC}|wc -l`
#  echo "  ${LOC}:${COUNT}"
  echo "        <tr>" >> ${PAGE}
  echo "          <td bgcolor=${BGC}>" >> ${PAGE}
  echo "            <font size=${FSIZE} color=${FCOLOR} face=${FFACE}><CENTER>" >> ${PAGE}
  echo "              <A HREF=\"detail/${LOC}_status.html\">${LOC}</A>" >> ${PAGE}
  echo "            </font>" >> ${PAGE}
  echo "          </td>" >> ${PAGE}

  for COLOR in ${COLORS}
  do
    COL_COUNT=`cat ${TMP}|grep -v ^#|grep ^${LOC}|grep ";${COLOR};"|wc -l`
    echo "  ${LOC}:${COLOR}=${COL_COUNT}"
    if [ ${COL_COUNT} -gt 0 ]; then
      BGC=""
      echo "          <td bgcolor=${BGC}>" >> ${PAGE}
      echo "            <font size=${FSIZE} color=${COLOR} face=${FFACE}><CENTER>" >> ${PAGE}
      echo "        ${COL_COUNT}" >> ${PAGE}
      echo "            </font>" >> ${PAGE}
      echo "          </td>" >> ${PAGE}
    else
      BGC=""
      echo "          <td bgcolor=${BGC}>" >> ${PAGE}
      echo "            <font size=${FSIZE} color=black face=${FFACE}><CENTER>" >> ${PAGE}
      echo "            </font>" >> ${PAGE}
      echo "          </td>" >> ${PAGE}
    fi

  done  # COLOR
  echo "        </tr>" >> ${PAGE}

done  # LOC
echo "      </table>" >> ${PAGE}
echo "    </td>" >> ${PAGE}
echo "  </tr>" >> ${PAGE}
CREATE_FOOTER ${PAGE}


cat ${PAGE} | sed "s/size=${FSIZE}/size=${FSIZEM}/g" > ${PAGEM}

rm ${TMP} 
echo "`date` ${PGM} v${VER} finished."|tee -a ${LOG}
exit 0

