#!/bin/sh
#
#
#  my.lizinfo.sh
#
#
#  Funktion    : Ueberwachen der Lizenzbelegung von FULL-/LIMITED-/MOBILE-/WEBSHOP-Lizenzen
#
#  Autor       : Ralf Billmaier <abas-rb>
#  Version     : 3.2
#  Stand       : 21.06.2022      
#
#
trap "" 2 3 15
#
# Usage-Meldung
#
usage()
{ echo "" 																																>&2
  echo "my.lizinfo.sh: Version 3.2" 																									>&2
  echo "--------------------------"             																						>&2
  echo "usage: `basename $0` [-s|d|m|y] -t {ZIEL-Verzeichnis} -h {s3-Home-Verzeichnis} [-a]" 			  								>&2
  echo "       Lizenzinformation"                                                				    									>&2
  echo "       * Option -s:  Einzelne Neben-Log-Datei pro Aufruf nach dem Format YYYYMMDDHHMMSS.LIZINFO.FULL" 							>&2
  echo "       * Option -d:  Einzelne Neben-Log-Datei pro Tag nach dem Format YYYMMDD.LIZINFO.FULL"           							>&2
  echo "       * Option -m:  Einzelne Neben-Log-Datei pro Monat nach dem Format YYYYMM.LIZINFO.FULL"          							>&2
  echo "       * Option -y:  Einzelne Neben-Log-Datei pro Jahr nach dem Format YYYY.LIZINFO.FULL"             							>&2
  echo "       * Option -t:  Zielverzeichnis fuer die LOG-Dateien Bsp. /mnt1/abas/s3/log/owlizinfo" 									>&2
  echo "       * Option -h:  s3-Home-Verzeichnis Bsp. /mnt1/abas/s3" 							    									>&2
  echo "       * Option -a:  Alle Informationen, Maschinen-Logins als auch Benutzer-Logins, ansonsten nur Maschinen-Logins"				>&2
  echo "" 																																>&2
  echo "       Die Haupt-Logdatei heisst immer MY.LIZINFO.LOG, sie enthaelt nur der Anzahl der FULL/LIMITED/MOBILE/WEBSHOP-Lizenzen." 	>&2
  echo "       Die Neben-Logdateien enthalten immer die komplette Lizenz-Uebersicht pro Aufruf."										>&2
  echo "" 																																>&2
  
  if [ -n "$1" ]; then
     echo "" 			>&2
     echo "Fehler: $1" 	>&2
  fi
  exit 1
}

[ "$#" == "0" ] && usage                        # Es wurden keine Optionen angegeben

# Interne Variablen initialisieren
DATETIME=`date "+%Y%m%d%H%M%S"`
DATEDAY=`date "+%Y%m%d"`
DATEMONTH=`date "+%Y%m"`
DATEYEAR=`date "+%Y"`

# Angegebene Optionen umladen
TOOPTION=0
ALLLOGIN=0
while (( "$#" ))
do
  case $1 in
	 -s) TOOPTION=1;;               # Einzelne Datei pro Aufruf
     -d) TOOPTION=2;;               # Einzelne Datei pro Tag
	 -m) TOOPTION=3;;               # Einzelne Datei pro Monat
	 -y) TOOPTION=4;;               # Einzelne Datei pro Jahr
	 -t) TARGETDIR=$2; shift  ;;	# Zielverzeichnis fuer die LOG-Dateien
	 -h) S3HOMEDIR=$2; shift  ;;	# Mailbenachrichtigung bei Fehler
	 -a) ALLLOGIN=1;;               # Alle Login-Varianten, ansonsten nur Maschinen-Logins
      *) usage                ;;    # s3-Home-Verzeichnis
  esac
  shift
done
shift

# S3-Verzeichnis prüfen
if [ ! -d "$S3HOMEDIR" ]; then
   usage "s3-Home-Verzeichnis $S3HOMEDIR fehlt oder nicht vorhanden !!"
fi

# Ziel-Verzeichnis prüfen
if [ ! -d "$TARGETDIR" ]; then
   usage "Zielverzeichnis $TARGETDIR fehlt oder nicht vorhanden !!"
fi

# Variablen füllen
S3HOMEDIR=${S3HOMEDIR%/}
TARGETDIR=${TARGETDIR%/}
LOGFILE1=$TARGETDIR/MY.LIZINFO.LOG
LOGFILE2=$TARGETDIR/$DATETIME.LIZINFO.FULL
TEMPFILE=$TARGETDIR/$DATETIME.LIZINFO.TEMP

case $TOOPTION in

  "2")
    LOGFILE2=$TARGETDIR/$DATEDAY.LIZINFO.FULL
    ;;

  "3")
    LOGFILE2=$TARGETDIR/$DATEMONTH.LIZINFO.FULL
    ;;
	
  "4")
    LOGFILE2=$TARGETDIR/$DATEYEAR.LIZINFO.FULL
    ;;	
esac

# Eigene Exit-Methode
myexit()
{
  ret=$1
  echo -e "\nExitcode: $1    Fehler: $2"
  # Returncode setzen
  exit $ret
}

#echo DATETIME:  $DATETIME
#echo DATEDAY:   $DATEDAY
#echo DATEMONTH: $DATEMONTH
#echo DATEYEAR:  $DATEYEAR
#echo TOOPTION:  $TOOPTION
#echo TARGETDIR: $TARGETDIR
#echo S3HOMEDIR: $S3HOMEDIR
#echo LOGFILE1:  $LOGFILE1
#echo LOGFILE2:  $LOGFILE2

# Wechsel ins s3-Verzeichnis und check ob vorhanden
cd $S3HOMEDIR
[ -s ./denv.sh ] || myexit 1 "Inkorrektes s3-Verzeichnis: $S3HOMEDIR"
# Besorgen der richtigen Umgebung
eval `sh ./denv.sh`

# Logfile1 anlegen, falls nicht vorhanden
if [ ! -f "$LOGFILE1" ]; then
    echo -e "" >$LOGFILE1
fi

if [ ! -f "$LOGFILE1" ]; then
    myexit 2 "Das Haupt-Logfile $LOGFILE1 konnte nicht angelegt werden !!"
fi

if [ ! "$TOOPTION" = "0" ]; then
	if [ ! -f "$LOGFILE2" ]; then
		echo -e "" >$LOGFILE2
	fi

	if [ ! -f "$LOGFILE2" ]; then
		myexit 3 "Das Neben-Logfile $LOGFILE2 konnte nicht angelegt werden !!"
	fi
fi

if [ ! -f "$TEMPFILE" ]; then
    echo -e "" >$TEMPFILE
fi

if [ ! -f "$TEMPFILE" ]; then
    myexit 4 "Das Temporärfile $TEMPFILE konnte nicht angelegt werden !!"
fi

# abas-Version auslesen
YVERSION=$(cat $S3HOMEDIR/00VERSION | awk -Fr '{print $1}')
if [ -z "$YVERSION" ]
then
      YVERSION="2019"
fi

#echo $YVERSION

# Zum Testen hier stoppen
#exit

# und los gehts
$S3HOMEDIR/bin/lizinfo.sh -t# -a >$TEMPFILE
if [ "$ALLLOGIN" = "1" ]; then
    echo -e "++++++++++++++++++++" >>$TEMPFILE
    $S3HOMEDIR/bin/lizinfo.sh -t# -b >>$TEMPFILE
fi
#
# Ab der Version 2019 hat sich die Suche geändert !!
#
YVGLVERSION=2018
#if [ $YVERSION -ge $YVGLVERSION  ]; then
if let "$YVERSION > $YVGLVERSION"; then
	FULLLIZ=$(grep '##LIZ_300000001_FULL#' $TEMPFILE | awk -F# '{print $4}')
	MOBLIZ=$(grep '##LIZ_300000002_MOBILE#' $TEMPFILE | awk -F# '{print $4}')
	LIMLIZ=$(grep '##LIZ_300000003_LIMITED#' $TEMPFILE | awk -F# '{print $4}')
	WEBSLIZ=$(grep '##LIZ_300000005_WEBSHOP#' $TEMPFILE | awk -F# '{print $4}')
else
	FULLLIZ=$(grep '##FULL#' $TEMPFILE | awk -F# '{print $4}')
	LIMLIZ=$(grep '##LIMITED#' $TEMPFILE | awk -F# '{print $4}')
	MOBLIZ=$(grep '##MOBILE#' $TEMPFILE | awk -F# '{print $4}')
	WEBSLIZ=$(grep '##WEBSHOP#' $TEMPFILE | awk -F# '{print $4}')
fi

#
# Prüfen ob leer
if [ -z "$FULLLIZ" ]
then
      FULLLIZ="0"
fi

if [ -z "$LIMLIZ" ]
then
      LIMLIZ="0"
fi

if [ -z "$MOBLIZ" ]
then
      MOBLIZ="0"
fi

if [ -z "$WEBSLIZ" ]
then
      WEBSLIZ="0"
fi

# Ausgabe in Haupt-Log-File
echo -e "$DATETIME $FULLLIZ\t\t$LIMLIZ\t\t$MOBLIZ\t\t$WEBSLIZ" >>$LOGFILE1

if [ ! "$TOOPTION" = "0" ]; then
	echo -e "$DATETIME  ------------------------------" >>$LOGFILE2
	sed -r "s/##//g" $TEMPFILE | sed -r "s/#/\t/g" $TEMPFILE | awk -v DT=$DATETIME '{print DT "  " $0}' >>$LOGFILE2
	echo -e "$DATETIME  ------------------------------" >>$LOGFILE2
fi

# beseitigen der Temporärdatei
if [ -f "$TEMPFILE" ]; then
    rm -f $TEMPFILE
fi
#
#
exit 0