#!/bin/bash
#
# send_message
#
# Meldung verschicken
#
# Aufruf: send_message <Server | Eventunit> <section teststep detail>
#             <domain / server / section / teststep / detail>
#             <sin / sernum / fqdn \n IP Location Contact>
#             <zielart> <zieladr> <level> <date time>
#             <Bedingung> <Meldungstext> <wid-num> <werteindizesid> <grafikflag> <subject>
#             <p1> <p2> <p3> <p4> <p5> <attachments> [<ticketlevel>]
###############################################################################
#
cd `dirname $0`
#
export LANG=en_US.UTF-8
#
###echo "$0, 1: $1, 2: $2, 3: $3, 4: $4, 5: $5, 6: $6, 7: $7, 8: $8, 9: $9, 10: ${10}, 11: ${11}."
#
if [[ -f /etc/ulsserver.conf ]]
 then
  . /etc/ulsserver.conf
fi
#
# MAILDUPFLAG auf 1, wenn zusaetzlich zu jedem Ticket eine Mail an MAILDUPADR
# gesendet werden soll
#
#
SERVER="$1"
SECTSTDET="$2"
DOMSRVSECTSTDET="$3"
SRVINFO="$4"
ZIELART="$5"
ZIELADR="$6"
ULSLEVEL="$7"
#
if [[ "$7" = "ERROR" ]]
 then
  LEVEL=${ERRORNAME:-ERROR}
  PRIO=${21:-3}
elif [[ "$7" = "WARN" ]]
 then
  LEVEL=${WARNNAME:-WARN}
  PRIO=${21:-4}
elif [[ "$7" = "INFO" ]]
 then
  LEVEL=${INFONAME:-INFO}
  PRIO=${21:-4}
elif [[ "$7" = "PREINFO" ]]
 then
  LEVEL=${INFONAME:-PREINFO}
  PRIO=${21:-4}
else
  LEVEL=${OKNAME:-OK}
  PRIO=0
fi
DATE="$8"
BEDINGUNG="$9"
MELDUNG="${10}"
ZEILE1=`echo "$MELDUNG" 2>/dev/null | head -1 | cut -c -120`
MELDID="${11}"
#
if [[ "${12:-0}" -gt 0 ]]
 then
  if [[ "${13:-0}" -gt 0 ]]
   then
    GR="grafik"
  else
    GR="dat"
  fi
  HTTP="${ULSURL:-${ULSHTTPMODE:-http}://${ULSHTTPNAME:-uls}:${ULSPORT:-11975}/}index.u2w?direct=loggingout_$GR.u2w&wids=${12}&dat=sinceyesterday&searchdate=1"
else
  HTTP=""
fi
#
SUBJECT="${14}"
P1="${15}"
P2="${16}"
P3="${17}"
P4="${18}"
P5="${19}"
#
if [[ "$MAILDUPFLAG" = "1" ]]
 then
  echo "ULS generierte eine Meldung an $ZIELART:$ZIELADR mit Text: $LEVEL: $DOMSRVSECTSTDET: $MELDUNG" | mail -s "ULS Meldung an $ZIELART:$ZIELADR" $MAILDUPADR
fi
#
export PATH=../wwwbin:$PATH
#
if [[ ! -z "$ULSTESTMELDFILE" ]]
 then
  echo "$DATE
Server: $SERVER
Serverinfo: $SRVINFO
Domain / Server / Section / Teststep / Detail: $DOMSRVSECTSTDET
Desttype: $ZIELART
Dest: $ZIELADR
Level: $LEVEL
Prio: $PRIO
Expression: $BEDINGUNG
Message: $MELDUNG
Msgdid: $MELDID
Subject: $SUBJECT
Att: ${20}
" >>"$ULSTESTMELDFILE"
  exit
fi
#
case $ZIELART in
  Mail*) ([[ -z "$SUBJECT" ]] && echo "$LEVEL: $DOMSRVSECTSTDET:"
          echo "$MELDUNG") | send_mail.sh "$ZIELADR" "${SUBJECT:-$LEVEL: $DOMSRVSECTSTDET: $BEDINGUNG}" "${20}"
         ;;
  SMS)   for i in `echo $ZIELADR | sed 's/,/ /g'`
          do
           echo "$MELDUNG" | mail -s "${SUBJECT:-$LEVEL: $DOMSRVSECTSTDET: $BEDINGUNG}" $i
         done
         ;;
  Pager) KT=$(echo $LEVEL: DOMSRVSECTSTDET: $MELDUNG | cut -c -79)
         for i in `echo $ZIELADR | sed 's/,/ /g'`
          do
           echo "" | mail -s "$KT" $i
         done
         ;;
  ZIS-TVM) if [[ "$ZIELADR" == *{*}* ]]
            then
             A="${ZIELADR%%\{*}"
             S="${ZIELADR#*\{}"
             B="${S#*\}*}"
             RES=$(echo $DOMSRVSECTSTDET | sed -n "${S%\}*}")
             KOMPONENTE="${SERVER}_$A$RES$B"
           else
             KOMPONENTE="${SERVER}_$ZIELADR"
           fi
           ./send_zis_tvm_mail.sh "$SERVER" "$DOMSRVSECTSTDET" "$SRVINFO" "$DATE $HTTP" "$ULSLEVEL" "$KOMPONENTE" "default" "${SUBJECT:-${ZEILE1:-$SECTSTDET: $BEDINGUNG}}" "$MELDUNG" "$MELDID"
           ;;
  ITSM2) KATEGORIE=`echo "$ZIELADR" | cut -d: -f 1`
         TYP=`echo "$ZIELADR" | cut -d: -f 2`
         KOMPONENTE=`echo "$ZIELADR" | cut -d: -f 3`
         GRP=`echo "$ZIELADR" | cut -d: -f 4`
         ALARMPFAD=`echo "$ZIELADR" | cut -d: -f 5`
         ./send_itsm_mail.sh "$SERVER" "$DOMSRVSECTSTDET" "$SRVINFO" "$DATE $HTTP" "$PRIO" "$KATEGORIE" "$TYP" "$KOMPONENTE" "$DATE" "$GRP" "${SUBJECT:-${ZEILE1:-$SECTSTDET: $BEDINGUNG}}" "$MELDUNG" "$MELDID" "${ALARMPFAD:-0}" "${12}"
         ;;
  ITSM)  KATEGORIE=`echo "$ZIELADR" | cut -d: -f 1`
         TYP=`echo "$ZIELADR" | cut -d: -f 2`
         KOMPONENTE=`echo "$ZIELADR" | cut -d: -f 3`
         GRP=`echo "$ZIELADR" | cut -d: -f 4`
         ALARMPFAD=`echo "$ZIELADR" | cut -d: -f 5`
         ./send_itsm_mail.sh "$SERVER" "$DOMSRVSECTSTDET" "$SRVINFO" "$DATE $HTTP" "$PRIO" "$KATEGORIE" "$TYP" "$KOMPONENTE" "$DATE" "$GRP" "${SUBJECT:-$SECTSTDET: $BEDINGUNG}" "$MELDUNG" "$MELDID" "${ALARMPFAD:-0}" "${12}"
         ;;
esac
