
#!/bin/sh
# File	: rpt_e-bladmuziek.sh
# By	: MaartenDeBoer.nl, 200617
# Subject	: Script to report about (the usage) of e-bladmuziek
#(0.2),200715	: Mod.RPT_HTPWD. Add. RPT_TITLES
#(0.3),200716	: Added USAGE
#(0.4),200907	: Mod. USAGE & Check SRCDIR, DATE added to CSV
#
PGM=`basename $0|cut -d\. -f1`
VER="0.4"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
MAILTO="vijos@e-bladmuziek.nl"
MAILTO="maarten@agrarix.nl"
MAIL=""
HOSTNAME=`hostname | cut -d\. -f1`
RCFILE="${HOME}/etc/${PGM}.rc"
ASC="/tmp/${PGM}.asc"
IFILTER="[?]*"
TFILTER="[?]*"
BFILTER="[?]*"
TOEGANGDIR="/toegang"
CSV="/tmp/${PGM}_partijen_`date +%Y-%m-%d`.csv"

APPLDIR="${HOME}/e-bladmuziek"
RPT_HTPWD=""
RPT_TITLES=""

HTPWDDIR="${APPLDIR}/htpwd"
SRCDIR="/mnt/nas/DATA/e-bladmuziek/src"

USAGE()                                                                                                                                       
{                                                                                                                                             
  echo "Usage: ${PGM} <options>"
  echo "Options             : "
  echo "     -h | --help    : This help"
  echo "     -f | --force   : Force process of PDF-files"
  echo "     -m | --mail    : Mail the reports"
  echo "     -r | -rc       : change RCfile (${RCFILE}) (used after options)"
  echo "     --htpwd        : report on HTPassWorDs"
  echo "     --titles       : report on Titles"
  echo "     --mailto       : change MAILTO address (${MAILTO})"
  echo "     -V             : Version"
}                                                            
# If no options, then exit
if [ ${#} -lt 1 ]; then
  USAGE; exit 1
fi
while [ ${#} -gt 0 ]
do 
  case "${1}" in
    -h|--help)  USAGE; exit 1 ;;
    -m|--mail)  MAIL=1 ;;
    --mailto)  MAIL=1; MAILTO="${2}";shift ;;
    --htpwd)  RPT_HTPWD=1 ;;
    --titles)  RPT_TITLES=1 ;;
    -r|--rc)  RCFILE="${2}";shift ;;
    -x)  set -x ;;
    -V)  echo "Version=${VER}"; exit 0 ;;
    *) echo "Option ${1} not found." ; USAGE; exit 2 ;;
  esac
  shift
done


echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}                                                                                           
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. So, reading ..."|tee -a ${LOG}
  . ${RCFILE}
  sleep 1
fi  # RCFILE 

echo "RCFILE=${RCFILE}"
echo "HTPWDDIR=${HTPWDDIR}"
echo "MAIL=${MAIL}"
echo "MAILTO=${MAILTO}"
echo "SRCDIR=${SRCDIR}"
echo "RPT_HTPWD=${RPT_HTPWD}"
echo "RPT_TITLES=${RPT_TITLES}"

sleep 1

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

touch ${TMP}

if [ ${RPT_HTPWD} ]; then
  echo "# Rapportage van htpassword-files en gebruikers namen:" |tee ${TMP}|tee -a ${LOG} 
  cd ${HTPWDDIR}
  ls -1 htpasswd.*| while read FNAME REST
  do
    echo "  ${FNAME}:"|tee -a ${TMP}
    echo -n "    "|tee -a ${TMP}
    cat ${FNAME}|grep -v ^#|cut -d\: -f1 | while read UNAME REST
    do
      echo -n "${UNAME}, "|tee -a ${TMP}
    done  # UNAME
    echo ""|tee -a ${TMP}
  done  # ls -1

  echo "" >> ${TMP}
  echo "# Generated at `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${TMP}

# When MAIL and someting in TMP-file, then send a mail
  if [ ${MAIL} ] && [ -s ${TMP} ]; then
    cp ${TMP} ${ASC}
    date | mailx -A ${ASC} -s "e-bladmuziek: HTPWD en gebruikersname rapport [${PGM} v${VER}]" ${MAILTO}
    echo "  Send HTPWD-report to ${MAILTO}"|tee -a ${LOG}
  fi  # MAIL
fi  # RPT_HTPWD

if [ ${RPT_TITLES} ]; then
  echo "Rapportage over partijen" |tee -a ${LOG}
  echo "# Band;Intrument;Titel;Partij;" >> ${TMP}
  cd ${SRCDIR}
  ls -1d */|egrep -i "${BFILTER}"|grep -v ${TOEGANGDIR}|sed 's|/||g'|while read BAND
  do
    DEST_BAND=`echo ${BAND}|sed 's/ /_/g'`
    echo "  B:${BAND} (${DEST_BAND})"
    cd "${SRCDIR}/${BAND}"
    ls -1d */|sed 's|/||g'|grep -i "${IFILTER}"|grep -v ".htm"|while read INSTR
    do
      DEST_INSTR=`echo ${INSTR}|sed 's/ /_/g'`
      echo "    I:${INSTR} (${DEST_INSTR})"
      cd "${SRCDIR}/${BAND}/${INSTR}"
      ls -1d */|sed 's|/||g'|grep -i "${TFILTER}"|grep -v ".htm"|while read TITLE
      do
        DEST_TITLE=`echo ${TITLE}|sed 's/ /_/g'`
        echo "      T:${TITLE} (${DEST_TITLE})"

        cd "${SRCDIR}/${BAND}/${INSTR}/${TITLE}"
# PDF's
        ls -1 *.[Pp][Dd][Ff] 2>/dev/null |while read TITLEFILE
        do
          DEST_TITLEFILE=`echo ${TITLEFILE}|sed 's/ /_/g'`
          echo "        P:${TITLEFILE} (${DEST_TITLEFILE})"
          echo "${BAND};${INSTR};${TITLE};${TITLEFILE};" >> ${TMP}
        done  # TITLEFILE

# MP3's
        ls -1 *.[Mm][Pp][3] 2>/dev/null |while read TITLEFILE
        do
          DEST_TITLEFILE=`echo ${TITLEFILE}|sed 's/ /_/g'`
          echo "        M:${TITLEFILE} (${DEST_TITLEFILE})"
          echo "${BAND};${INSTR};${TITLE};${TITLEFILE};" >> ${TMP}
        done  # TITLEFILE

      done  # TITLE

    done  # INSTR

  done  # BAND

# When MAIL and someting in TMP-file, then send a mail
  if [ ${MAIL} ] && [ -s ${TMP} ]; then
    echo "" >> ${TMP}
    echo "# Processed at `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${TMP}
    cp ${TMP} ${CSV}
    date | mailx -A ${CSV} -s "e-bladmuziek: Partijen rapport [${PGM} v${VER}]" ${MAILTO}
    echo "  Mail de rapportage naar ${MAILTO}"|tee -a ${LOG}
  fi  # MAIL
fi # RPT_HTPWD


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

