#!/bin/ksh
#set -x

#Variable to hold Program Directory
PROG_DIR=
USE_NC=0

# getdir: identify the path to the program and set
#         it as PROG_DIR
# Params: program-name and $0 from call
getdir() {
  prog="$1"
  call="$2"
  if [ -z "$prog" ]
  then
    return
  fi
  #   newdir=${0%/*}
  newdir=`echo "${call}"|sed "s/${prog}$//"`
  if [ -z "$newdir" ]
  then
    whichstr=`which ${prog}|grep -v "no ${prog}"`
    newdir=`echo "$whichstr"|sed "s/${prog}$//"`
    if [ -z "$newdir" ]
    then
      return
    fi
  fi
  if [ -d "$newdir" ]
  then
    PROG_DIR="$newdir"
  fi
}

usage () {
  echo "Usage: boomindi (a|application)=<appl> [(g|group)=<indication group>] [(o|object)=<obj>] [(s|severity)=(normal|warning|minor|major|critical)] [(h|host)=<hostname>] [<variable name=value>]* (t|text)=<\"text\">"
}

if [ $# -lt 2 ]
then
 usage
 exit 1
fi

if [ -z "$BOOM_AGENT_PORT" ]
then
  if [ -z "$BOOM_ROOT" ]
  then
    echo "To avoid negative performance impacts please set the BOOM_ROOT variable"
    getdir boomindi "$0"
    if [ -z "$PROG_DIR" ]
    then
      echo "Failed to identify the path for BOOM_ROOT."
      echo "Please set the BOOM_ROOT variable to the Agent directory!"
      echo "The script continues with default values."
      PORT=23021
    else
      PORT=`cd "${PROG_DIR}"; grep "^AGENT_PORT.*" ../conf/agent.conf | cut -d"=" -f2`
    fi
  else
    PORT=`cd "${BOOM_ROOT}"; grep "^AGENT_PORT.*" ./conf/agent.conf | cut -d"=" -f2`
  fi
else
  PORT="$BOOM_AGENT_PORT"
fi

if [ -z "$PORT" ]; then
  PORT=23021
fi

if [ -f netcat.sh ]; then
 . ./netcat.sh
fi

SUBMITSTR=""
while [ "$1" != "" ]; do
  p1=$(echo $1 | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' | sed 's/\([^=]*\)=\(.*\)/\1=\"\2\"/')
  shift
  if [ "$1" != "" ]; then
    SUBMITSTR=${SUBMITSTR}${p1}" "
  else
    SUBMITSTR=${SUBMITSTR}${p1}
  fi
done

if [ "$USE_NC" -eq 1 ]; then
  RETV=$(echo "E${SUBMITSTR}" | nc 127.0.0.1 ${PORT})
else
  if [ "$USE_NC" -eq 2 ]; then
    RETV=$(echo "E${SUBMITSTR}" | netcat 127.0.0.1 ${PORT})
  else
#   use telnet
#   Fetch the leading lines from telnet client and the result
#
    osname=`uname`
    case "$osname" in
      HP*)
        {   telnet 127.0.0.1 ${PORT} 2>/dev/null <<EOF
E${SUBMITSTR}
EOF
        } |  while read -r RETV; do echo $RETV >/dev/null;done
        ;;
      *)
        telnet 2>/dev/null |&
        print -p "o 127.0.0.1 ${PORT}"
        print -p "E${SUBMITSTR}"
        sleep 1
        print -p "quit" 2>/dev/null
        while read -p RETV; do
          RETVOLDOLD=$RETVOLD
          RETVOLD=$RETV
          echo $RETV >/dev/null
        done
        ;;
    esac
  fi
fi

if [ "$RETV" != "T" -a "$RETVOLD" != "TConnection closed."  -a "$RETVOLDOLD" != "TConnection closed." ]
then
  echo "Error submitting the Indication"
  usage
  exit 2
else
  echo "OK"
fi
exit 0

