
#!/bin/sh
# File	: proc_mailing.sh
# By	: Maarten.deBoer@Atos.net, 190923 
# Subject	: Script to process mail-aliases (for NetApp at Atos) and place it in (mail)/etc/aliases (option -m) and on Webpage (option -w)
#(0.2),190925	: Added -f|--filter (MFILTER)
#(0.3),190925	: Added -d|--datafile (alias-datafile)
#(0.4),190925	: Added: Check WEBDIR
#(0.5),190526	: Some upd's
#(0.6),191002	: Added EXTWEBURL
#(0.7),191002	: Added COUNTRY
#(0.8),191003	: Added ext. files (mailing-list). Renamed from proc_mail-aliases.sh
#(0.9),191003	: Added --patch-release, EXTMAILTO, WEBDIR: /mail-aliases/ -> /mailing/, SUBJECT
#(0.10),191030	: Changing atos_ -> netapp_.._mgr & _eng
#(0.11),191119	: Added MAILRISKS
#(0.12),191119	: Added COUNTRY in text
#(0.13),191209	: Add options MAIL(INGLIST)TEXTFILE (-t) & SUBJECT (-s)
# 		: So -p & -r are gone
#		: Added GBU to it & .asc -> html & .asc -> html
#
PGM=`basename $0|cut -d\. -f1`
VER="0.13"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
RCFILE="${HOME}/etc/${PGM}.rc"
UPDWEBPAGE=""
WEBDIR="/appl/netapp/html/mailing"
PAGE="${WEBDIR}/index.html"
DATADIR="${HOME}/data/mailing"
MAILINGLISTALIASES=""
AFILTER="@atos.net"
WEBURL="http://nlxnetapp02.bcklan.ao-srv.com/mailing"
MAILINGLIST=""
MFILTER="[?]*"
FROM="Maarten de Boer <maarten.deboer@atos.net>"
REPLYTO="Maarten de Boer <maarten.deboer@atos.net>"
ADDDATAFILE=""
MAILTO="maarten.deboer@atos.net"
DATI="`date +%Y%m%d%H%M%S`"
EXTMAILTO="atos@agrarix.it"
BCKSUBJ="html:${DATI}"
EXTWEBURL="http://atos.agrarix.it/${DATI}.html"
COUNTRY="[?]*"
MAILTEXTFILE=""
PATCHRELEASE=""
SUBJECT="NetApp-CC: mailing"
MAILRISKS=""
MAILTOLIST=""
LISTFILEFILTER="[?]*"
COUNTRY2GBU="${DATADIR}/country-gbu.csv"

#
NETAPPCCREADME="https://sp2013.myatos.net/ms/gd/cloud/cs_rsd/IaaS%20Storage%20and%20Backup/NetApp%20Competence%20Center/NetApp-CC_README.txt"

SAMREPORTS="https://sp2013.myatos.net/ms/gd/cloud/cs_rsd/IaaS%20Storage%20and%20Backup/Forms/AllItems.aspx?RootFolder=%2Fms%2Fgd%2Fcloud%2Fcs%5Frsd%2FIaaS%20Storage%20and%20Backup%2FNetApp%20Competence%20Center%2FGlobal%20SAM%20presentations%20and%20reports#InplviewHashe1fd3198-2033-4e7f-a78b-7f47efaadf5b=RootFolder%3D%252Fms%252Fgd%252Fcloud%252Fcs%255Frsd%252FIaaS%2520Storage%2520and%2520Backup%252FNetApp%2520Competence%2520Center%252FGlobal%2520SAM%2520presentations%2520and%2520reports-SortField%3DModified-SortDir%3DDesc"


USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options                :"
  echo "    -c | --country       : Country-filter (${COUNTRY}) to /etc/aliases"
  echo "    -a | --aliases       : process mailaddresses (in ${DATADIR}) to /etc/aliases"
  echo "    -d | --datafile      : add aliases-datafile (from ${DATAFILE}) to the mail"
  echo "    -h | --help          : this help"
  echo "    -l | --list          : mail List-members (from ${DATADIR}) about this list"
  echo "    -m | --mail          : Mail the members"
  echo "    -s | --subject       : Subject (${SUBJECT}) of the mail"
  echo "    -t | --textfile      : mail the Textfile (${MAILTEXTFILE}) (from ${DATADIR})"
#  echo "    -p | --patch-release : mail members (from ${DATADIR}) about Patch & Release sheet"
#  echo "    -r | --risks         : mail about the risks (mailing-risks.asc) ( (from ${DATADIR})"
  echo "    -w | --webpage       : update Webpage and mail to ${MAILTO}"
  echo "    -V                   : Version"
  echo "    -x                   : set -x"
}
while [ ${#} -ge 1 ]
  do
  case ${1} in
    -h | --help) USAGE; exit 1 ;;
    -c | --country) COUNTRY="${2}"; shift ;;
    -d | --datafile) ADDDATAFILE=1 ;;
    -a | --aliases) MAILINGLISTALIASES=1 ;;
    -f | --filter) MFILTER="${2}"; shift ;;
    -s | --subject) SUBJECT="${2}"; shift ;;
    -t | --textfile) MAILTEXTFILE="${2}"; shift ;;
    -l | --list) MAILINGLIST=1 ;;
    -m | --mail) MAILTOLIST=1 ;;
#    -p | --patch-release) PATCHRELEASE=1 ;;
#    -r | --risks) MAILRISKS=1 ;;
    -w | --webpage) UPDWEBPAGE=1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done  # while

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

echo "ADDDATAFILE=${ADDDATAFILE}"
echo "AFILTER=${AFILTER}"
echo "EXTMAILTO=${EXTMAILTO}"
echo "COUNTRY=${COUNTRY}"
echo "DATADIR=${DATADIR}"
echo "FROM=${FROM}"
echo "LISTFILEFILTER=${LISTFILEFILTER}"
echo "MAILTEXTFILE=${MAILTEXTFILE}"
#echo "MAILRISKS=${MAILRISKS}"
echo "MAILINGLIST=${MAILINGLIST}"
echo "MAILINGLISTALIASES=${MAILINGLISTALIASES}"
echo "MFILTER=${MFILTER}"
echo "PAGE=${PAGE}"
echo "PGM=${PGM}"
echo "PATCHRELEASE=${PATCHRELEASE}"
echo "REPLYTO=${REPLYTO}"
echo "SUBJECT=${SUBJECT}"
echo "UPDWEBPAGE=${UPDWEBPAGE}"
echo "VER=${VER}"
echo "WEBDIR=${WEBDIR}"
echo "WEBURL=${WEBURL}"
sleep 1

if [ ! -d ${WEBDIR} ]; then
  echo "  Web-Dir. (${WEBDIR}) NOT found. Exiting "|tee -a ${LOG}
  exit 3
fi

if [ ${MAILINGLISTALIASES} ]; then
  echo "  Process mail-addresses (in dir. ${DATADIR}) to /etc/aliases ..."|tee -a ${LOG}
  cd ${DATADIR}
  ls -1 netapp_*|while read FNAME
  do
    echo -n "${FNAME}:		"|tee -a ${TMP}
# Read addresses, check it on (@atos) AFILTER and not " " (space) and put them on 1 line
    cat ${FNAME}|sort -u|grep -v ^#|grep "${AFILTER}"|grep -v " "|while read ADDRESS
    do
      echo -n "${ADDRESS}," >> ${TMP}
    done  # cat ${FNAME}
    echo "" |tee -a ${TMP}

  done  # ls -1
  echo ""
  echo "  /etc/aliases:"
  /usr/bin/sudo /bin/cp /etc/aliases /etc/aliases_old
  cat /etc/aliases | grep -v ^netapp > /tmp/aliases
  cat ${TMP}|sort -u >> /tmp/aliases
  /usr/bin/sudo /bin/cp /tmp/aliases /etc/aliases
  /usr/bin/sudo /usr/bin/newaliases
fi  # MAILALIASES


if [ ${UPDWEBPAGE} ]; then
  echo "  Updating Webpage (${PAGE}) ..."|tee -a ${LOG}
  echo "<HTML>" > ${PAGE}
  echo "<HEAD>" >> ${PAGE}
  echo "<META NAME='generator' content='${PGM} v${VER}' /> ">> ${PAGE}
  echo "<META NAME='up-date' content='`date +%Y-%m-%d-%H-%M-%S`' /> ">> ${PAGE}
  echo "<title>NetApp-CC:mailing</title> ">> ${PAGE}

  echo "<BODY aLink=red bgColor=#D3D0D3 link=red text=#000000 vLink=red>" >> ${PAGE}
  echo "<TABLE BORDER=0 WIDTH='100%'>" >> ${PAGE}
  echo "<TR HEIGHT=40px>" >> ${PAGE}
  echo "  <TD bgColor=#0066A1>" >> ${PAGE}
  echo "    <FONT COLOR=white face='verdana' size='5'> <B>Atos mail-addresses involved in managing NetApp-systems in countries (and GBUs)<BR> </FONT>" >> ${PAGE}
  echo "  <TD>" >> ${PAGE}
  echo "</TR>" >> ${PAGE}
  echo "</TABLE>" >> ${PAGE}

  echo "  <TABLE BORDER=1 WIDTH='100%'>" >> ${PAGE}
  echo "    <TR>" >> ${PAGE}
  echo "      <TD>" >> ${PAGE}
  echo "        <FONT COLOR=black face='verdana' size='5'>" >> ${PAGE}
  echo "<B>Country" >> ${PAGE}
  echo "      </TD>" >> ${PAGE}
  echo "      <TD>" >> ${PAGE}
  echo "        <FONT COLOR=black face='verdana' size='5'>" >> ${PAGE}
  echo "<B>GBU" >> ${PAGE}
  echo "      </TD>" >> ${PAGE}
  echo "      <TD>" >> ${PAGE}
  echo "        <FONT COLOR=black face='verdana' size='5'>" >> ${PAGE}
  echo "<B>(accountable) managers mail-addresses" >> ${PAGE}
  echo "      </TD>" >> ${PAGE}
  echo "      <TD>" >> ${PAGE}
  echo "        <FONT COLOR=black face='verdana' size='5'>" >> ${PAGE}
  echo "<B>(responsible) engineers mail-addresses" >> ${PAGE}
  echo "      </TD>" >> ${PAGE}
  echo "    </TR>" >> ${PAGE}
  cd ${DATADIR}
# Only CONTRIES (2 Chars) on Web-Site. Rest NOT on Website
# And only the 1st part (without _mgr & _eng)
  ls -1 netapp_??_*|cut -d\_ -f1-2|sort -u|while read F1NAME
  do
    echo "  ${F1NAME} .."
    echo "    <TR>" >> ${PAGE}
# 1st Col. = Country
    echo "      <TD>" >> ${PAGE}
# CountryNAME
    CNAME=`echo ${F1NAME}|cut -d\_ -f2|tr [:lower:] [:upper:]`
    echo "        <FONT COLOR=black face='verdana' size='4'>" >> ${PAGE}
    echo "        <A NAME=\"${CNAME}\" > " >> ${PAGE}
    echo "${CNAME}:" >> ${PAGE}
    echo "        </FONT>" >> ${PAGE}
    echo "      </TD>" >> ${PAGE}
# 2nd Col. = GBU
    if [ -f ${COUNTRY2GBU} ]; then
# Check from 1st char & with ;
    GBUNAME=`grep -i "^${CNAME};" ${COUNTRY2GBU}|awk -F\; '{print $2}'|tr [:lower:] [:upper:]|sort -u|head -1`
    else
      GBUNAME="??"
    fi
    if [ "${GBUNAME}" = "" ]; then
      GBUNAME="?"
    fi
    echo "      <TD>" >> ${PAGE}
    echo "        <FONT COLOR=black face='verdana' size='4'>" >> ${PAGE}
    echo "${GBUNAME}:" >> ${PAGE}
    echo "      </TD>" >> ${PAGE}
# 3rd Col. = Mgr
    echo "      <TD>" >> ${PAGE}
    echo "        <FONT COLOR=black face='verdana' size='3'>" >> ${PAGE}
# Select filename with _mgr
    F2NAME="${F1NAME}_mgr"
    cd ${DATADIR}
    if [ -f ${F2NAME} ]; then
      cat ${F2NAME}|sort -u|grep -v ^#|grep "${AFILTER}"|grep -v " "|while read ADDRESS
      do
        echo "${ADDRESS} "
        echo "${ADDRESS} <BR> " >> ${PAGE}
      done  # cat ${F2NAME}
    else
      echo "NO ${F2NAME} <BR> " >> ${PAGE}
    fi  # ${F2NAME}_mgr
    echo "      </TD>" >> ${PAGE}
# 4th Col. = Eng
# Select filename with _eng
    echo "      <TD>" >> ${PAGE}
    echo "        <FONT COLOR=black face='verdana' size='3'>" >> ${PAGE}
    cd ${DATADIR}
    F2NAME="${F1NAME}_eng"
    if [ -f ${F2NAME} ]; then
      cat ${F2NAME}|sort -u|grep -v ^#|grep "${AFILTER}"|grep -v " "|while read ADDRESS
      do
        echo "${ADDRESS} "
        echo "${ADDRESS} <BR> " >> ${PAGE}
      done  # cat ${F2NAME}
    else
      echo "NO ${F2NAME} <BR> " >> ${PAGE}
    fi  # ${F2NAME}_eng
    echo "      </TD>" >> ${PAGE}

    echo "    </TR>" >> ${PAGE}
  done  # ls -1 *
  echo "  </TABLE>" >> ${PAGE}

  echo "<TABLE BORDER=0 WIDTH='100%'> " >> ${PAGE}
  echo "<TR>  " >> ${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` [${PGM} v${VER} ]" >> ${PAGE}
  echo " <A HREF=\"${EXTWEBURL}\">extweburl</A>" >> ${PAGE}
  echo "<BR> 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}
  BCKSUBJ="html:${DATI}"
  EXTWEBURL="http://atos.agrarix.it/${DATI}.html"
  echo "  Webpage ${WEBURL} has been updated. And external (${EXTWEBURL}) send to ${BCKMAIL}"|tee -a ${LOG}|mailx -s "NetApp-CC: mailing page updated [${PGM} v${VER}]" ${MAILTO}
  cat ${PAGE}| mailx -s "${BCKSUBJ}" ${EXTMAILTO}
  echo "EXTWEBURL=${EXTWEBURL}" > ${HOME}/etc/${PGM}.bckweburl
  echo "  Mailed to ${MAILTO} & ${EXTMAILTO}."|tee -a ${LOG}
fi  # UPDWEBPAGE


# Mail to the list members
# With text from TEXTFILE
if [ ${MAILTOLIST} ] && [ ${MAILTEXTFILE} != "" ]; then
  if [ ${MAILINGLIST} ]; then
    SUBJECT="NetApp-CC: mailinglist"
    MAILTEXTFILE="${DATADIR}/mailing-list.html"
    LISTFILEFILTER="netapp"
  fi
  echo "  Sending mail (${MAILTEXTFILE}) to list members (from ${DATADIR}) with LISTFILEFILTER=${LISTFILEFILTER} in ${COUNTRY} ..."|tee -a ${LOG}
  cd ${DATADIR}
  ls -1 netapp_*|grep ${COUNTRY}|grep ${LISTFILEFILTER}|while read FNAME
  do
# Check also for no " " (space)
# And filer on AFILTER (@atos.net) & MFILTER (<some_name>)
    cat ${FNAME}|sort -u|grep -v ^#|grep "${AFILTER}"|grep "${MFILTER}"|grep -v " "|while read ADDRESS
    do
      CNAME=`echo ${FNAME}|cut -d\_ -f2|tr [:lower:] [:upper:]`
      echo -n "  ${CNAME}"
     
      echo "From: ${FROM}" > ${TMP}.mail
      echo "To: ${ADDRESS}" >> ${TMP}.mail
      echo "Reply-to: ${REPLYTO}" >> ${TMP}.mail
      echo "Subject: ${SUBJECT}" >> ${TMP}.mail
      echo "Content-Type: text/html" >> ${TMP}.mail

      if [ -f ${MAILTEXTFILE} ]; then
        echo "  Reading MAILTEXTFILE (${MAILTEXTFILE}) ..."|tee -a ${LOG}
# when ${HOME}/etc/${PGM}.bckweburl, then change var into URL
        if [ -f ${HOME}/etc/${PGM}.bckweburl ]; then
          EXTWEBURL=`cat ${HOME}/etc/${PGM}.bckweburl|cut -d\= -f2`
# Update EXTWEBURL in mail-file
          cat ${MAILTEXTFILE}|grep -v ^#|sed -e "s,EXTWEBURL,${EXTWEBURL},g" |sed -e "s,NETAPPCCREADME,${NETAPPCCREADME},g"|sed -s "s,SAMREPORTS,${SAMREPORTS},g"|sed -s "s,CNAME,${CNAME},g" >> ${TMP}.mail
        else
          cat ${MAILTEXTFILE}|grep -v ^#|sed -e "s,NETAPPCCREADME,${NETAPPCCREADME},g"|sed -s "s,SAMREPORTS,${SAMREPORTS},g"|sed -s "s,CNAME,${CNAME},g" >> ${TMP}.mail
        fi  # -f EXTWEBURL
      else
        echo "  ${MAILTEXTFILE} NOT found. Mail probably empty"|tee -a ${LOG}
        rm ${TMP}.mail
      fi  # -f MAILTEXTFILE

      if [ -s ${TMP}.mail ]; then
# Works only when uuencode is "installed"
        if [ ${ADDDATAFILE} ]; then
          if [ -f /usr/bin/uuencode ]; then
            cat ${FNAME}|grep -v ^#|uuencode > ${TMP}.mail
          else
            echo "  /usr/bin/uuencode NOT found. Attachment can NOT be added."|tee -a ${LOG}
          fi
        fi
        cat ${TMP}.mail | /usr/sbin/sendmail -t
        echo "  Mailed to ${ADDRESS} "|tee -a ${LOG}
        rm ${TMP}.mail
      fi

    done  # cat ${FNAME}
  done  # ls -1 atos_*
fi  # MAILINGLIST



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

