#!/bin/bash
#
# send_test_counter
#
# Speichert logginginformationen in der Loggingdatenbank ueber einen httpget-Aufruf
#
# Aufruf:
#
# send_test_counter [-h hostname] [-s access]
#                   section teststep details date time [mode [wert]]
#
###################################################################################
#
if [[ -f /etc/uls/uls.conf ]]
 then
  . /etc/uls/uls.conf
fi
#
if [[ -z "$ULSSERVER" ]]
 then
  ULSSEND="STORE"
else
  ULSSEND="$ULSSERVER"
fi
#
#
ACC="all"
if [[ ${LC_CTYPE:-$LANG} == *8 ]]
 then
  CHARSET="utf8"
else
  CHARSET="latin1"
fi
#
while getopts c:d:h:s:? op
 do
  case "$op" in
    c) CHARSET="$OPTARG";;
    d) ULS_TMP_PATH=$(readlink -f "$OPTARG")
       ULSSEND='STORE';;
    h) ULSHOSTNAME="$OPTARG";;
    s) ACC=$OPTARG;;
    *) echo "usage: `basename $0` [-c charset] [-d storepath] [-h hostname] [-s access] section teststep detail date time [mode [value]]"
       exit 1;;
  esac
done
shift $(( $OPTIND - 1))
#
#
if [[ $# -lt 5 ]]
 then
  echo "usage: `basename $0` [-c charset] [-d storepath] [-h hostname] [-s access] section teststep detail date time [mode [value]]"
  exit 1
fi
#
if [[ -z "$ULSHOSTNAME" ]]
 then
  ULSHOSTNAME=`hostname`
fi
#
if [[ "$ULSSEND" != "STORE" ]]
 then
  if STATUS=`httpget -tc 10 $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
  S=$(sed 's/?/%3f/g;s/#/%23/g;s/!/%21/g;s/\$/%24/g;s/&/%26/g;s/'"'"'/%27/g;s/(/%28/g;s/)/%29/g;s/\*/%2a/g;s/+/%2b/g;s/,/%2c/g;s/=/%3d/g;s/ /%20/g' <<<"$1")
  T=$(sed 's/?/%3f/g;s/#/%23/g;s/!/%21/g;s/\$/%24/g;s/&/%26/g;s/'"'"'/%27/g;s/(/%28/g;s/)/%29/g;s/\*/%2a/g;s/+/%2b/g;s/,/%2c/g;s/=/%3d/g;s/ /%20/g' <<<"$2")
  D=$(sed 's/?/%3f/g;s/#/%23/g;s/!/%21/g;s/\$/%24/g;s/&/%26/g;s/'"'"'/%27/g;s/(/%28/g;s/)/%29/g;s/\*/%2a/g;s/+/%2b/g;s/,/%2c/g;s/=/%3d/g;s/ /%20/g' <<<"$3")
  DA=$4
  TI=$5
  #
  RET=`httpget $SFLAGS -c -u logging -p lgput -s $ULSSERVER "put_test_counter.s2w?hostname=$ULSHOSTNAME&section=$S&teststep=$T&details=$D&access=$ACC&date=$DA&time=$TI&wert=$7&mode=$6&charset=$CHARSET"`
  if [[ "$RET" = "OK" ]]
   then
    exit 0
  fi
fi
#
ULSDAT=dat-`id -u`.uls
if [[ -z "$ULS_TMP_PATH" ]]
 then
  ULS_TMP_PATH=/var/tmp/uls
fi
if cd "$ULS_TMP_PATH" 2>/dev/null
 then
  test -f $ULSDAT || touch $ULSDAT && chmod 600 $ULSDAT
else
  mkdir -m 1777 -p "$ULS_TMP_PATH"
  if cd "$ULS_TMP_PATH" 2>/dev/null
   then
    touch $ULSDAT && chmod 600 $ULSDAT
  else
    echo "Kann Lokales ULS-Verzeichnis: $ULS_TMP_PATH nicht anlegen!"
    exit 1
  fi
fi
#
S="`echo \"$1\" | sed 's/\\([\"\\;\\\\]\\)/\\\\\\1/g'`"
T="`echo \"$2\" | sed 's/\\([\"\\;\\\\]\\)/\\\\\\1/g'`"
D="`echo \"$3\" | sed 's/\\([\"\\;\\\\]\\)/\\\\\\1/g'`"
M="`echo \"$6\" | sed 's/\\([\"\\;\\\\]\\)/\\\\\\1/g'`"
W="`echo \"$7\" | sed 's/\\([\"\\;\\\\]\\)/\\\\\\1/g'`"
echo "L;;;;;;$CHARSET
C;$4 $5;$ULSHOSTNAME;$S;$T;$D;$M;$W;$ACC" >>$ULSDAT
exit 0
