#!/bin/ksh
#set -x

#Variable to hold Program Directory
PROG_DIR=
USE_NC=0
FOUND="0"
RET_CODE=
RET_VAR=

# 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: boomremvar <var>..."
}

if [ $# -lt 1 ] || [[ $# -eq 1 && $1 = "-h" ]]
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="REMVAR "
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

#echo SUBMITSTR=$SUBMITSTR

if [ "$USE_NC" -eq 1 ]; then
  RET_VAR=$(echo "DBOOM_AGENT ${SUBMITSTR}" | nc 127.0.0.1 ${PORT})
else
  if [ "$USE_NC" -eq 2 ]; then
    RET_VAR=$(echo "DBOOM_AGENT ${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*)
        RET_VAR=`{   telnet 127.0.0.1 ${PORT} 2>/dev/null <<EOF
DBOOM_AGENT ${SUBMITSTR}
EOF
        }`
        ;;
      *)
        telnet 2>/dev/null |&
        print -p "o 127.0.0.1 ${PORT}"
#sleep 1
        print -p "DBOOM_AGENT ${SUBMITSTR}"
        sleep 1 
        print -p "quit" 2>/dev/null
        while read -p RETL
        do
          RET_VAR="$RET_VAR"'\n'"$RETL"
        done

        if [ "$RETL" != "" ]
        then
          RET_VAR="$RET_VAR"'\n'"$RETL"
        fi
        ;;
    esac
  fi
fi

echo ""

if [ "$USE_NC" -eq 1 ] || [ "$USE_NC" -eq 2 ]
then
  RET_CODE=`echo $RET_VAR | awk '{print substr($0,0,1)}'`
  RET_VAR=`echo "$RET_VAR" | awk '{print substr($0,2)}'`
  echo "$RET_VAR"
else
while read -r RETV
    do
      if [ "$FOUND" = "1" ]
      then
        RET_CODE=`echo $RETV | awk '{print substr($0,0,1)}'`
        RETV=`echo $RETV | awk '{print substr($0,2)}'`
        FOUND="2"
      fi

      if echo $RETV | grep "Escape character is" > /dev/null
      then
        FOUND="1"
      fi
      if [ "$FOUND" = "2" ]
      then
        echo $RETV
      fi
    done <<EOT
$(echo -e $"$RET_VAR")
EOT

fi

#echo RET_CODE=$RET_CODE

if [ "$RET_CODE" != "T" ]
then
  echo "Error executing command."
  usage
  exit 2
fi
exit 0

