
#!/bin/sh
# File	: upd_uptime.sh
# By	: Maarten.deBoer@Atos.net, 150324
# Subject	: Script to process history
#(0.1)	: From proc_history
#(0.2)	: Added comments at RED
#(0.3)	: Mod. labels
#(0.4)	: Add COUNTRY
#(0.5)	: Add check if 2 uptimedayvaules
#(0.6)	: Added # filers at the end
#(0.7)	: Removed Location & Usage
#(0.8)	: Added Ser.Nr & Model
#(0.9)	: Mod. colors
#(0.10)	: Mod. green -> lightgreen
#(0.11)	: Mod. 0 = pink
#(0.12)	: Mod; When time = same as previous, pink
#(0.13)	: Mod; lightblue when [?] and 0
#(0.14)	: Mod "unary operator expected", "${UPTIMEDAYS}" != "" 
#(0.15)	: Mod; uptime filers from DBDATA  in stead of .csv's, ${OUT} -> ${PAGE}
#(0.16),180531	: Added LAST_asup
#(0.17),200622	: Mod. cellspacing='0'
#(0.18),220824	: Mod. "NOT supported"
PGM="`basename $0|cut -d\. -f1`"
VER="0.18"
TMP="/tmp/${PGM}.$$"

#BASEDIR="/appl/mdr/afsp/NL"
BASEDIR="`pwd | sed 's/scripts//'|sed 's/bin//'`"
LOG="${BASEDIR}/log/${PGM}.log"
FLU="${BASEDIR}/etc/filer-location-usage.csv"
PAGE="${BASEDIR}/html/uptime.html"
DBDIR="${BASEDIR}/data/database"

COUNTRY="`echo ${BASEDIR}| cut -d\/ -f6`"

# Number of Month
#NRWEEKS=24
NRWEEKS=20

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
touch ${TMP}
echo "BASEDIR=${BASEDIR}"
echo "COUNTRY=${COUNTRY}"
echo "DBDIR=${DBDIR}"
echo "NRWEEKS=${NRWEEKS}"
echo "PAGE=${PAGE}"
# Read Functions file
source ./afsp-db_functions.sh
DB_FUNC_VER
sleep 1

# Create PAGE
echo "<!DOCTYPE html>" > ${PAGE}
echo "<HTML>" >> ${PAGE}
echo "<HEAD>" >> ${PAGE}
echo "<META charset='UTF-8'>" >> ${PAGE}
echo "<META content=Maarten de Boer name=AUTHOR>" >> ${PAGE}
echo "<TITLE> uptime history </TITLE>" >> ${PAGE}
echo "<basefont face='verdana'>" >> ${PAGE}
echo "</HEAD>" >> ${PAGE}
echo "<BODY aLink=red bgColor=#D3D0D3 link=red text=#000000 vLink=#ff0000>" >> ${PAGE}

echo "<TABLE BORDER=0 WIDTH='100%' cellspacing='0'>" >> ${PAGE}
echo "<TR WIDTH=100% HEIGHT=40px>" >> ${PAGE}
echo "  <TD bgColor=#0066A1>" >> ${PAGE}
echo "    <FONT COLOR=white face='verdana' size='5'> <B> <A HREF="../${COUNTRY}-overview.html">Filer</A> uptime (in days) history of ${COUNTRY} </B> </FONT>" >> ${PAGE}
echo "    <BR>" >> ${PAGE}
echo "    <FONT COLOR=red face='verdana' size='6'><CENTER> <B>NOT maintained anymore</B> </CENTER></FONT>" >> ${PAGE}
echo "    <FONT COLOR=red face='verdana' size='4'><CENTER> <B>Because the other way (HTTPS) of delivery is not supported by AFSP (old way is SMTP).</CENTER></B> </FONT>" >> ${PAGE}
echo "    <DIV align=right>" >> ${PAGE}
echo "    <FONT COLOR=white face='verdana' size='-3'> For internal use. (c) Atos BTN `date +%Y` </B> </FONT>" >> ${PAGE}
echo "    </DIV>" >> ${PAGE}
echo "  <TD>" >> ${PAGE}
echo "</TR>" >> ${PAGE}
echo "</TABLE>" >> ${PAGE}

echo "<TABLE BORDER=1 cellspacing='0'>" >> ${PAGE}
# Header
echo "<TR>" >> ${PAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>SerNr:</B> </TD> " >> ${PAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Name:</B> </TD> " >> ${PAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Last ASUP:</B> </TD> " >> ${PAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Model:</B> </TD> " >> ${PAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>OS version:</B> </TD> " >> ${PAGE}
cd ${BASEDIR}/data/uptime/
ls -1dr 20*|head -n ${NRWEEKS}|while read WEEK
do
  echo "  <TD> <FONT face='verdana' size=1> <B>${WEEK}</B> </TD> " >> ${PAGE}
done  # ls
echo "</TR>" >> ${PAGE}

# Get all systems from DB
# If database, then cd to database
if [ -d /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database ]; then
  cd /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database
  ls -1 | while read DBFILE
  do
    echo "${DBFILE} ..."
    DB_READ /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database/${DBFILE}
    echo "${DB_CONTROLER_NAME} ..."

#cat */*uptime.csv|grep -v ^#|grep -v ';;'|awk -F\; '{print $1}'|sort -u|while read ${DB_CONTROLER_NAME} REST
#do


#  if [ -d ${DBDIR} ]; then
#    SERNR="`grep -i ${FILER} ${DBDIR}/*.asc|grep CONTROLER_NAME|cut -d\. -f1|head -1`"
#	if [ "${SERNR}" != "" ]; then
#	  DBFILE="${SERNR}.asc"
#	  DB_READ ${DBFILE}
#	fi
#  fi  # -d ${DBDIR}

# Last ASUP
  LASTASUPOCOL=""
  YEAR="`date +%Y`"
  ANSW="`echo "${DB_ASUP_GENERATED_ON}"| grep \" ${YEAR}\"`"
  if [ "${ANSW}" = "" ]; then
    LASTASUPCOL="red"
  fi
  ANSW="`echo "${DB_ASUP_GENERATED_ON}"| grep \" ${YEAR}\"`"
  if [ "${ANSW}" != "" ]; then
    LASTASUPCOL="orange"
  fi
  MONTH="`date +%b`"
  ANSW="`echo ${DB_ASUP_GENERATED_ON}| grep \" ${YEAR}\"|grep \" ${MONTH}\"`"
  if [ "${ANSW}" != "" ]; then
    LASTASUPCOL="yellow"
  fi
  DAY="`date +%d`"
  ANSW="`echo ${DB_ASUP_GENERATED_ON}| grep \" ${YEAR}\"|grep \" ${MONTH}\"|grep \" ${DAY}\"`"
  if [ "${ANSW}" != "" ]; then
    LASTASUPCOL="green"
  fi
  if [ "${DB_ASUP_GENERATED_ON}" = "" ]; then
    LASTASUPCOL="lightblue"
        DASHBOARDASUPCOL="lightblue"
#       EMPTY_ASUP_CNT
        let "EMPTY_ASUP_CNT= ${EMPTY_ASUP_CNT} + 1"

  fi
  ANSW=`echo ${DB_ASUP_GENERATED_ON}|egrep 'UTC 20|GMT 20'`
  if [ "${ANSW}" != "" ]; then
  # UTC found. Can be wrong! (std install in stead of country
    LASTASUPCOL="purple"
        echo "UTC or GMT found at system: ${DB_CONTROLER_NAME} (${DB_SERIAL_NUMBER}) in ${COUNTRY} = ${DB_ASUP_GENERATED_ON}" |tee -a ${TMP}
        echo "" >> ${TMP}
  fi  # ANSW


  echo "<TR>" >> ${PAGE}
  echo "  <TD> <FONT face='verdana' size=1>${DB_SERIAL_NUMBER}</TD> " >> ${PAGE}
  echo "  <TD> <FONT face='verdana' size=1>${DB_CONTROLER_NAME}</TD> " >> ${PAGE}
  echo "  <TD BGCOLOR=${LASTASUPCOL}> <FONT face='verdana' size=1>${DB_ASUP_GENERATED_ON}</TD> " >> ${PAGE}
  echo "  <TD> <FONT face='verdana' size=1>${DB_MODEL_NAME}</TD> " >> ${PAGE}
  echo "  <TD> <FONT face='verdana' size=1>${DB_OS_VERSION}</TD> " >> ${PAGE}

  FILER="${DB_CONTROLER_NAME}"
  # Then get history info from the FILER
  PREVWEEK=""
  cd ${BASEDIR}/data/uptime/
  ls -1dr 20*|head -n ${NRWEEKS}|while read WEEK REST
  do
    UPTIMEDAYS1="`grep \"${FILER}\;\" ${WEEK}/*uptime.csv|head -1|awk -F\; '{print $2}'|sed 's/ //g'|sed 's/days//g'|sed 's/day//g'`"
    UPTIMEDAYS2="`grep \"${FILER}\;\" ${WEEK}/*uptime.csv|head -2|tail -1|awk -F\; '{print $2}'|sed 's/ //g'|sed 's/days//g'|sed 's/day//g'`"
	if [ ${UPTIMEDAYS1} -ne ${UPTIMEDAYS2} ]; then
	  if [ ${UPTIMEDAYS1} -lt ${UPTIMEDAYS2} ]; then
	    UPTIMEDAYS="${UPTIMEDAYS2}"
      else
	    UPTIMEDAYS="${UPTIMEDAYS1}"
	  fi  # -le
    else
	  UPTIMEDAYS="${UPTIMEDAYS1}"
	fi  # -ne
	echo "Week:${WEEK} ${UPTIMEDAYS}days"
	UPCOL=""

	if [ "${UPTIMEDAYS}" != "" ]; then
	  if [ ${UPTIMEDAYS} -le 365 ]; then
	    UPCOL="lightgreen"
	  fi
	  if [ ${UPTIMEDAYS} -lt 28 ]; then
	    UPCOL="yellow"
	  fi
	  if [ ${UPTIMEDAYS} -lt 21 ]; then
	    UPCOL="orange"
	  fi
# Check if cur day is Eq as other, then someting wrong
      if [ "${PREVWEEK}" != "" ]; then
        if [ ${UPTIMEDAYS} -eq ${PREVWEEK} ]; then
	      UPCOL="pink"
        fi
	  fi  # "${PREVWEEK}" != ""
	  PREVWEEK=${UPTIMEDAYS}
	  if [ "${UPTIMEDAYS}" = "" ]; then
	    UPCOL=""
	  fi
	  SPAN=""
	  if [ ${UPTIMEDAYS} -lt 14 ]; then
	    UPCOL="red"
        if [ -f ${WEEK}/info.csv ]; then
		  INFO="`grep ${FILER} ${WEEK}/info.csv|awk -F\; '{print $2}'`"
		  if [ "${INFO}" != "" ]; then
	  	    SPAN="<SPAN title=\"${INFO}\">[?]</SPAN>"
            UPCOL="lightblue"
	  	  fi  # SPAN
	    else
	      UPCOL="red"
	    fi  # comments
	  fi
	  if [ ${UPTIMEDAYS} -eq 0 ]; then
	    UPCOL="pink"
        if [ "${INFO}" != "" ]; then
	      SPAN="<SPAN title=\"${INFO}\">[?]</SPAN>"
          UPCOL="lightblue"
	    fi  # SPAN
      fi
	  if [ ${UPTIMEDAYS} -gt 365 ]; then
	    UPCOL="yellow"
	  fi
	  if [ ${UPTIMEDAYS} -gt 730 ]; then
	    UPCOL="orange"
	  fi

	fi  # UPTIMEDAYS != ""

#    echo "   <TD BGCOLOR=${UPCOL}><FONT face='verdana' size=1> ${UPTIMEDAYS} </TD> " >> ${PAGE}
    echo "   <TD BGCOLOR=${UPCOL}><FONT face='verdana' size=1>${UPTIMEDAYS}
	${SPAN}</TD> " >> ${PAGE}
  done  # ls -1dr

    echo "</TR>" >> ${PAGE}
  done  # DBREAD

fi  # database

# Footer
echo "<TR>" >> ${PAGE}
echo -n "# Filer ; Uptime;" >> ${TMP}
echo "  <TD> <FONT face='verdana' size=1> <B>SerNr:</B> </TD> " >> ${PAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Name:</B> </TD> " >> ${PAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Last ASUP:</B> </TD> " >> ${PAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Model:</B> </TD> " >> ${PAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>OS version:</B> </TD> " >> ${PAGE}
cd ${BASEDIR}/data/uptime/
ls -1dr 20*|head -n ${NRWEEKS}| while read WEEK
do
  echo -n "${WEEK};" >>  ${TMP}
  echo "  <TD> <FONT face='verdana' size=1> <B>${WEEK}</B> </TD> " >> ${PAGE}
done  # ${WEEK}
echo "" >> ${TMP}
echo "</TR>" >> ${PAGE}



# Count nr filers / week
# No count of filers since 0.15. Does not work with CSV``
if [ -d /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database ]; then
  echo "<TR>" >> ${PAGE}
  echo "  <TD> <FONT face='verdana' size=1><B>System count:</B></TD> " >> ${PAGE}
  cd /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database
  CNT=`ls -1 *.asc|wc -l`
  echo "  <TD> <FONT face='verdana' size=1> ${CNT} </TD> " >> ${PAGE}
  echo "" >> ${TMP}
  echo "</TR>" >> ${PAGE}
fi  # DB found



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

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

echo "  <TABLE cellspacing='0'>" >> ${PAGE}
echo "    <TR>" >> ${PAGE}
echo "      <TD><FONT face= 'verdana' size=2><B>Legenda:</B></TD>" >> ${PAGE}
echo "    </TR>" >> ${PAGE}
echo "    <TR>" >> ${PAGE}
echo "      <TD><FONT face= 'verdana' size=2>Last ASUP: </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=red> <FONT face= 'verdana' size=2>Not this year</FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=orange> <FONT face= 'verdana' size=2>This year</FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=yellow> <FONT face= 'verdana' size=2>This month</FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=green> <FONT face= 'verdana' size=2>This day</FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=lightblue> <FONT face= 'verdana' size=2>No information</FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=purple> <FONT face= 'verdana' size=2>UTC / GMT in date. Maybe wrong</FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=${DASHBOARDASUPCOL}> <FONT face= 'verdana' size=2>DASHBOARDASUPCOL=${DASHBOARDASUPCOL}</FONT> </TD>" >> ${PAGE}
echo "    </TR>" >> ${PAGE}
echo "    <TR>" >> ${PAGE}
echo "      <TD BGCOLOR=lightblue> <FONT face= 'verdana' size=2> Has (mouse)hover-over information </FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=pink> <FONT face= 'verdana' size=2>some error? (0 days or the same as other week)</FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=red> <FONT face= 'verdana' size=2> <14 days </FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=orange> <FONT face= 'verdana' size=2> <21 days </FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=yellow> <FONT face= 'verdana' size=2> <28 days </FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=lightgreen> <FONT face= 'verdana' size=2> <365 days </FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=yellow> <FONT face= 'verdana' size=2> >365 days </FONT> </TD>" >> ${PAGE}
echo "      <TD BGCOLOR=orange> <FONT face= 'verdana' size=2> >730 days </FONT> </TD>" >> ${PAGE}
echo "    </TR>" >> ${PAGE}
echo "  </TABLE>" >> ${PAGE}
echo "</TR>" >> ${PAGE}

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

echo "<TABLE BORDER=0 WIDTH='100%' cellspacing='0'>" >> ${PAGE}
echo "<TR WIDTH=100% > " >> ${PAGE}
echo "  <TD bgColor=#0066A1 > " >> ${PAGE}
echo "    <FONT COLOR=white face='Verdana' size='1'>" >> ${PAGE}
echo "      <CENTER>" >> ${PAGE}
echo "Contact: |Content Owner: <A HREF="mailto:Maarten.deBoer@Atos.net">Maarten de Boer</A> |Last Update: `date`<BR>" >> ${PAGE}
echo "For internal use (c) Atos S.A. `date +%Y` all rights reserved. Reproduction in whole or in part is prohibited without the written consent of Atos SA." >> ${PAGE}
echo "      </CENTER>" >> ${PAGE}
echo "    </FONT>" >> ${PAGE}
echo "  </TD>" >> ${PAGE}
echo "</TR>" >> ${PAGE}
echo "</TABLE>" >> ${PAGE}

echo "</BODY>" >> ${PAGE}
echo "</HTML>" >> ${PAGE}

##cat ${TMP}

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

