#!/bin/ksh
#
# send_test_values
#
# Speichert logginginformationen in der Loggingdatenbank ber einen httpget-Aufruf
#
# Aufruf:
#
# echo sect tststep detail date time wert einheit | send_test_values [-d storepath] [-S] [-h host] [-n|-u]
#
# mit dieser Mimik knnen mehrere Zeilen gleichzeitig ans ULS geschickt werden
# Werte mit Leerzeichen oder dem Zeichen '$' mssen durch '...' eingeschlossen werden
######################################################################################
#
if [ -f /etc/uls/uls.conf ]
 then
  . /etc/uls/uls.conf
fi
if [ -z "$ULSHOSTNAME" ]
 then
  ULSHOSTNAME=`hostname`
fi
#
if [ -z "$ULSSERVER" ]
 then
  ULSSERVER="STORE"
fi
#
#
ULSSEND="STORE"
NODUP=""
ACC="all"
MODE="V"
#
while getopts d:Sh:nN:us:? op
 do
  case "$op" in
    d) LOKALER_TEST_PFAD="$OPTARG";;
    S) ULSSEND="$ULSSERVER";;
    h) ULSHOSTNAME=$OPTARG;;
    N) ELAP="&elapsed=$OPTARG"
       NODUP="_nodup"
       MODE="E$OPTARG";;
    n) NODUP="_nodup"
       MODE="N";;
    u) NODUP="_unique"
       MODE="U";;
    s) ACC=$OPTARG;;
    *) echo "usage: $0 [-d storepath] [-S] [-h hostname] [-n|-N HH:MM|-u] [-s access]"
       exit 1;;
  esac
done
shift $(( $OPTIND - 1))
#
if [ "$ULSSEND" != "STORE" ]
 then
  if STATUS=`/usr/local/bin/httpget $SFLAGS -u logging -p lgput -s $ULSSERVER get_status.s2w?hostname=$ULSHOSTNAME`
   then
    if [ "$STATUS" != "OK" ]
     then
      ULSSEND="STORE"
    fi
  else
    ULSSEND="STORE"
  fi
fi
#
if [ "$ULSSEND" = "STORE" ]
 then
  ULSDAT=dat-`id -u`.uls
  if [ -z "$LOKALER_TEST_PFAD" ]
   then
    LOKALER_TEST_PFAD=/tmp/uls
  fi
  if cd "$LOKALER_TEST_PFAD" 2>/dev/null
   then
    test -f $ULSDAT || touch $ULSDAT && chmod 600 $ULSDAT
  else
    mkdir -m 1777 -p "$LOKALER_TEST_PFAD"
    if cd "$LOKALER_TEST_PFAD" 2>/dev/null
     then
      touch $ULSDAT && chmod 600 $ULSDAT
    else
      echo "Kann Lokales ULS-Verzeichnis: $LOKALER_TEST_PFAD nicht anlegen!"
      exit 1
    fi
  fi
fi
#
if [ "$ULSSEND" = "STORE" ]
 then
  while read s t d da ti w e
   do
    echo "$MODE;$da $ti;$s;$t;$d;$w;$e;$ACC >>$ULSDAT
  done
  exit 0
else
  RET=`while read x
       do
        if [ ! -z "$x" ]
         then
          eval set $x
          if [ $# -ne 7 ]
           then
            echo "Fehlerhafte Zeile: $x" 1>&2
          else
            S=`/usr/local/bin/code_http "$1"`
            T=`/usr/local/bin/code_http "$2"`
            D=`/usr/local/bin/code_http "$3"`
            DA=$4
            TI=$5
            W=`/usr/local/bin/code_http "$6"`
            E=`/usr/local/bin/code_http "$7"`
            echo "put_test_value$NODUP.s2w?hostname=$ULSHOSTNAME&section=$D&teststep=$T&details=$D&access=$ACC&date=$DA&time=$TI&wert=$W&einheit=$E"
          fi
        fi
      done | /usr/local/bin/httpget $SFLAGS -i -u logging -p lgput -s $ULSSERVER | tail -n 1`
  test "$RET" != "OK"
fi
