
#!/bin/sh
# File	: chk_site-vers.sh
# By	: MaartenDeBoer, 2018-03-16
# Subject	: Script to check WP-websites & update webpage
#(0.2),180316	: Added URL at SITE
#(0.3),230505	: Some mod's
#(0.4),230519	: Copies from chk_websites
#(0.5),230522	: From chk_site-vers.sh Add BCK's
#(0.6),230531	: Added USAGE + CONFIG
#(0.7),230619	: Added -m
#(0.8),230619	: Added DATA & last versions
#(0.9),230828	: Mod. for agrarix.it
#(0.10),230905  : Add. --all | -a
#(0.11),230907	: Mod. WP_V
PGM="`basename $0|cut -d\. -f1`"
VER="0.11"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
HOSTNAME=`hostname |cut -d\. -f1`

WEBSITEBASE="chk-wp-sites.agrarix.net"
CONFIG=""
PAGEDIR="/mnt/nas/WWW/domains/${WEBSITEBASE}/pages/${CONFIG}"
PAGE="${PAGEDIR}/index.html"
TITLE="${PGM}"
BORDER=""
#RCFILE="${HOME}/etc/${CONFIG}.rc"
RCFILE="${HOME}/etc/${PGM}.rc"
SITES="${HOME}/etc/${PGM}.sites"
MAILTO="maarten@agrarix.it"
MAIL=""
VERSIONS="${HOME}/data/${PGM}.versions"
USE_ALL=""


LOOP()
{
  cat ${SITES}|sort|grep -v ^#|grep ";"|while read LINE
    do
    SITE_URL=`echo "${LINE}"|awk -F\; '{print $1}'`
    PHP_URL=`echo "${LINE}"|awk -F\; '{print $2}'`
    FTP_FILTER=`echo "${LINE}"|awk -F\; '{print $3}'`
    echo "  SITE_URL=${SITE_URL} PHP_URL=${PHP_URL} FTP_FILTER=${FTP_FILTER}"
    cp /dev/null ${TMP}.site
    WP_VER=""
    if [ "${SITE_URL}" != "" ]; then
      /bin/time -o ${TMP}.t wget -O ${TMP}.site ${SITE_URL} 
      GEN_STR=`grep generator ${TMP}.site|grep content`
      WP_V=`grep generator ${TMP}.site|grep content|grep -i wordpress|awk -F\\" '{print $4}'|cut -d" " -f2`
      WP_VER=`echo ${WP_V}|sed 's/[A-z]//g'|sed 's/ //g'`
      WP_VER1=`echo ${WP_VER}|cut -d\. -f1`
      WP_VER2=`echo ${WP_VER}|cut -d\. -f1-2`
      echo "  GEN_STR=${GEN_STR} WP_V=${WP_V} WP_VER=${WP_VER} WP_VER1=${WP_VER1} WP_VER2=${WP_VER2}"
    else
      cp /dev/null ${TMP}.site
    fi
    PHP_VER=""
    PHP_VER1=""
    PHP_VER2=""
    if [ "${PHP_URL}" != "" ]; then
      /bin/time -o ${TMP}.t wget -O ${TMP}.php ${PHP_URL} 
      PHP_STR=`grep -i php ${TMP}.php|grep -i version|tail -1`
      PHP_VER=`echo ${PHP_STR}|cut -d\> -f5|cut -d\< -f1|sed 's/ //g'`
      PHP_VER1=`echo ${PHP_VER}|cut -d\. -f1`
      PHP_VER2=`echo ${PHP_VER}|cut -d\. -f1-2`
    else
      cp /dev/null ${TMP}.php
    fi

    FTP_BCK_CNT=""
    if [ "${FTP_FILTER}" != "" ]; then
      FTP_BCK_CNT=`ls -1 ${FTP_FILTER}|wc -l`
    fi  # FTP_FILTER

# Colors
    PHP_BGC="lightblue"
    if [ "${PHP_VER2}" = "${LAST_PHP_V}" ]; then
      PHP_BGC="lightgreen"
    fi
    if [ "${PHP_VER2}" = "${LAST2_PHP_V}" ]; then
      PHP_BGC="yellow"
    fi
    if [ "${PHP_VER2}" = "${LAST3_PHP_V}" ]; then
      PHP_BGC="orange"
    fi
    if [ "${PHP_URL}" != "" ] && [ "${PHP_VER1}" -lt 8 ]; then
      PHP_BGC="orange"
    fi
    if [ "${PHP_VER}" = "" ]; then
      PHP_BGC=""
    fi

    SITE_BGC="lightblue"
    if [ "${WP_VER2}" = "${LAST_WP_V}" ]; then
      SITE_BGC="lightgreen"
    fi
    if [ "${WP_VER2}" = "${LAST2_WP_V}" ]; then
      SITE_BGC="yellow"
    fi
    if [ "${WP_VER2}" = "6.0" ]; then
      SITE_BGC="yellow"
    fi
    if [ "${WP_VER1}" != "" ] && [ ${WP_VER1} -lt 6 ]; then
      SITE_BGC="orange"
    fi
    if [ "${WP_VER}" = "" ]; then
      SITE_BGC=""
    fi
  
    echo "  PHP_VER=${PHP_VER}| PHP_VER1=${PHP_VER1} PHP_VER2=${PHP_VER2} PHP_BGC=${PHP_BGC} "
    echo "  WP_VER=${WP_VER}| WP_VER1=${WP_VER1} WP_VER2=${WP_VER2} SITE_BGC=${SITE_BGC} "
sleep 1
  
    if [ "${SITE_URL}" != "" ]; then
      echo "PHP:${PHP_VER}" >> ${VERSIONS}
      echo "WP:${WP_VER}" >> ${VERSIONS}
      echo "   <TR> " >> ${PAGE}
      echo "    <TD> <A HREF=\"//${SITE_URL}\" target="_blank"> ${SITE_URL} </A> </TD> " >> ${PAGE}
      echo "    <TD BGCOLOR=${PHP_BGC}>${PHP_VER}</TD> " >> ${PAGE}
      echo "    <TD BGCOLOR=${SITE_BGC}>${WP_VER}</TD> " >> ${PAGE}
      echo "    <TD >${FTP_BCK_CNT}</TD> " >> ${PAGE}
      echo "    <TD >${CONFIG}</TD> " >> ${PAGE}
      echo "   </TR> " >> ${PAGE}
    fi  # SITE_URL

  done  # cat
}


USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options              :"
  echo "    -a | --all         : use ALL configs etc/ "
  echo "    -c | --config      : change Config (${CONFIG}) in etc/ "
  echo "    -d                 : create pageDir (${PAGEDIR})"
  echo "    -h | --help        : this help"
  echo "    -m | --mail        : send a Mail"
  echo "     --mailto          : change MAILTO-address (${MAILTO})"
  echo "    -V                 : Version"
  echo "    -x                 : set -x"
}

if [ -f ${RCFILE} ]; then
  echo "  Reading RCfile (${RCFILE})"|tee -a ${LOG}
  . ${RCFILE}
fi
while [ ${#} -ge 1 ]
  do
  case ${1} in
    -c | --config) 
      CONFIG=${2}; 
      SITES="${HOME}/etc/${PGM}_${CONFIG}.sites"
#      RCFILE="${HOME}/etc/${PGM}_${CONFIG}.rc"
#      if [ -f ${RCFILE} ]; then
#        echo "  Reading RCfile (${RCFILE})"|tee -a ${LOG}
#        . ${RCFILE}
#      else
#        echo "  Config(RC)file (${RCFILE}) does NOT exist. Exiting ..."|tee -a ${LOG}
#        exit 3
#      fi
      shift 
      ;;
    -d) mkdir -p ${PAGEDIR} ;;
    -a | --all) CONFIG="all" ; USE_ALL=1 ;;
    -m | --mail) MAIL=1 ;;
    --mailto) MAILTO="${2}"; MAIL=1 ; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 2 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done

WEBSITE="${WEBSITEBASE}/${CONFIG}"
TITLE="Check ${CONFIG} WordPress sites"
PAGEDIR="/mnt/nas/WWW/domains/${WEBSITEBASE}/pages/${CONFIG}"
PAGE="${PAGEDIR}/index.html"

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "  CONFIG=${CONFIG}"
echo "  PAGEDIR=${PAGEDIR}"
echo "  PAGE=${PAGE}"
echo "  WEBSITE=${WEBSITE}"
sleep 1
if [ ! -d ${PAGEDIR} ]; then
  echo "  Pagedir PAGEDIR (${PAGEDIR}) does NOT exist (use option -d). Exiting ..."|tee -a ${LOG}
  exit 5
fi
if [ ! -f ${VERSIONS} ]; then
  echo "  File VERSIONS (${VERSIONS}) does NOT exist . Exiting ..."|tee -a ${LOG}
  exit 6
fi

touch ${TMP} ${PAGE}

echo "<HTML>" > ${PAGE}
echo "  <HEAD>" >> ${PAGE}
echo "    <TITLE> ${TITLE} </TITLE>" >> ${PAGE}
echo "    <META NAME=\"generator\" content=\"${PGM} v${VER}\"  />" >> ${PAGE}
echo "  </HEAD>" >> ${PAGE}
echo "  <BODY>" >> ${PAGE}

echo "<H2> ${TITLE} </H2>" >> ${PAGE}

echo "  <TABLE BORDER=${BORDER}>" >> ${PAGE}

echo "   <TR> " >> ${PAGE}
echo "    <TD><B>SITE</B></TD> " >> ${PAGE}
echo "    <TD><B>PHP v</B></TD> " >> ${PAGE}
echo "    <TD><B>WP v</B></TD> " >> ${PAGE}
echo "    <TD><B>rem BCK</B></TD> " >> ${PAGE}
echo "    <TD><B>CONFIG</B></TD> " >> ${PAGE}
echo "   </TR> " >> ${PAGE}

# ==== Last versions
LAST_PHP_V=`grep "^PHP" ${VERSIONS}|cut -d\: -f2|cut -d\. -f1-2|sort -un|tail -1|sed 's/ //g'`
LAST2_PHP_V=`grep "^PHP" ${VERSIONS}|cut -d\: -f2|cut -d\. -f1-2|sort -un|tail -2|head -1|sed 's/ //g'`
LAST3_PHP_V=`grep "^PHP" ${VERSIONS}|cut -d\: -f2|cut -d\. -f1-2|sort -un|tail -3|head -1|sed 's/ //g'`
LAST_WP_V=`grep "^WP" ${VERSIONS}|cut -d\: -f2|cut -d\. -f1-2|sort -un|tail -1|sed 's/ //g'`
LAST2_WP_V=`grep "^WP" ${VERSIONS}|cut -d\: -f2|cut -d\. -f1-2|sort -un|tail -2|head -1|sed 's/ //g'`
echo "  LAST_PHP_V=${LAST_PHP_V}|"
echo "  LAST2_PHP_V=${LAST2_PHP_V}|"
echo "  LAST3_PHP_V=${LAST3_PHP_V}|"
echo "  LAST_WP_V=${LAST_WP_V}|"
echo "  LAST2_WP_V=${LAST2_WP_V}|"
sleep 1

# ==== loop ===

if [ ${USE_ALL} ]; then
  cd ${HOME}/etc/
  ls -1 ${PGM}_*.sites|cut -d\_ -f3|cut -d\. -f1|while read CONFIG
  do
    echo "  CONFIG=${CONFIG}"
    SITES="${HOME}/etc/${PGM}_${CONFIG}.sites"
    LOOP
  done  # ls -1
else
  if [ ! -f ${SITES} ]; then
    echo "  File SITES (${SITES}) does NOT exist. Exiting ..."|tee -a ${LOG}
    exit 4
  fi
  LOOP  
fi  # USE_ALL


echo "  </TABLE>" >> ${PAGE}
echo "  <BR>" >> ${PAGE}
echo "<H6> Last update `date` ${PGM} v${VER} </H6>" >> ${PAGE}

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

if [ ${MAIL} ]; then
  echo "Updated ${PGM} (v${VER}) with config ${CONFIG} at ${HOSTNAME}. See ${WEBSITE}."| mailx -s "Check WordPress sites [${PGM} v${VER}]" ${MAILTO}
  echo "  Mailed to ${MAILTO}"|tee -a ${LOG}
fi  # MAIL

# Clean-up VERSIONS
cat ${VERSIONS} |sort -u > ${TMP}.versions
mv ${TMP}.versions ${VERSIONS}

echo "  See: ${WEBSITE}"

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

