#!/bin/sh
# Copyright 2008 Hewlett-Packard Development Company, L.P.
#

export LANG=C

CLEARSCREEN=$(/usr/bin/tput clear)
PIDOF=$(which pidof)

get_tty() 
{
   # $1 contains the ENV for tty
   # Return 0 when succeed
   TMP=/dev/tty
   <$TMP >/dev/null 2>&1
   if [ $? = 0 ]; then
      eval $1="$TMP"
      return 0
   fi
   eval $1=""
   return 1
}

get_installmode() 
{
   # $1 contains the ENV for installation mode
   # $2 contains the ENV for tty
   # Always return 0 with install mod: (INTERACTIVE or SILENT)
 
   #HPHTTPSERVEROVERWRITE=`echo $HPHTTPSERVEROVERWRITE | tr [a-z] [A-Z]`
   CMASILENT=$(echo $CMASILENT | tr '[a-z]' '[A-Z]')
   CMAFDTNSILENT=$(echo $CMAFDTNSILENT | tr '[a-z]' '[A-Z]')
   if [ "$CMASILENT" = "YES" -o "$CMAFDTNSILENT" = "YES" ]; then
      eval $1="SILENT"
      eval $2=""
      return 0
   fi

   HPLSPINSTALL=$(echo $HPLSPINSTALL | tr '[a-z]' '[A-Z]')
   HPPSPINSTALL=$(echo $HPPSPINSTALL | tr '[a-z]' '[A-Z]')
   if [ "$HPLSPINSTALL" = "TRUE" -o "$HPPSPINSTALL" = "TRUE" ]; then
      eval $1="LSP"
      eval $2=""
      return 0
   fi

   get_tty TMPTTY
   if [ ! -z "$TMPTTY" ]; then
      eval $1="INTERACTIVE"
      eval $2="$TMPTTY"
   else
      eval $1="SILENT"
      eval $2=""
   fi
   return 0
}

env_manager () 
{
   # $1: opcode - INIT, ENVUSED, ENVREJECTED, PRINT
   # $2: environment variable name
   case "$1" in
      INIT)
         ENVUSEDLIST=""
         ENVREJECTEDLIST=""
      ;;
      ENVUSED)
         ENVUSEDLIST="$ENVUSEDLIST $2"
      ;;
      ENVREJECTED)
         ENVREJECTEDLIST="$REJECTEDLIST $2"
      ;;
      PRINT)
         if [ ! -z "$ENVUSEDLIST" ]; then
            echo
            echo "Following environment variables were used to configure snmpd/agents: "
            for i in $ENVUSEDLIST; do
               echo "    $i"
            done
            echo
         fi
         if [ ! -z "$ENVREJECTEDLIST" ]; then
            echo "Following environment variables contain invalid data: "
            for i in $ENVREJECTEDLIST; do
               echo "    $i"
            done
         fi
      ;;
   esac
   return 0
}

validate_data () 
{
   # $1 contains Data
   # $2 contains NOBLANK or BLANKOK
   # $3 contains NOSPACE or SPACEOK or YESNO
   [ $2 = "NOBLANK" -a -z "$1" ] && return 1
   if [ $3 = "NOSPACE" ]; then
      echo $ANS | egrep ' |       ' >/dev/null 2>&1
      [ $? = 0 ] && return 2
   fi
   if [ $3 = "YESNO" ]; then
      if [ ! -z "`echo $ANS | tr -d 'yn'`" ]; then
         return 3
      fi
   fi
   return 0
}

get_userinput () 
{
   # $1 contains the user prompt
   # $2 contains the TTY device node
   # $3 contains NOBLANK or BLANKOK
   # $4 contains NOSPACE or SPACEOK
   # $5 contains ECHO or NOECHO
   # $6 contains CLSCR or NOCLSCR
   # Always return 0
   if [ "$CMAINSTALL" = "yes" ]; then
      echo "" > $2
      CMAINSTALL=""
   fi
   if [ "$5" = NOECHO ]; then
      stty -F $2 -echo
#    echo "NOTE: keyboard input echo has been turned off." > $2
   fi
   while true; do
      while true; do
         if [ "$6" != "NOCLSCR" ]; then
            echo "$CLEARSCREEN" > $2
         fi
         printf "$1" "" > $2
         read ANS < $2
         [ "$5" = NOECHO ] && echo "" > $2
         validate_data "$ANS" "$3" "$4"
         case "$?" in
            1)
                continue
            ;;
            2)
                echo -n "ERROR: Space and tab are not allowed, press ENTER to continue ..." > $2
                read ANS < $2
                [ "$5" = NOECHO ] && echo "" > $2
                continue
            ;;
            3)
               echo -n "ERROR: You must type 'y' or 'n', press ENTER to continue ..." > $2
               read ANS < $2
               [ "$5" = NOECHO ] && echo "" > $2
               continue
         esac
      break
      done
      [ ! "$5" = NOECHO ] && break
      [ -z "$ANS" ] && break
      echo -n "Re-enter the same input to confirm: " > $2
      read ANS1 < $2
      echo "" > $2
      if [ "$ANS1" = "$ANS" ]; then
         printf "ACCEPTED: inputs match!\n\n" > $2
         break
      fi
      echo "ERROR: inputs mismatch! Press ENTER to try again." > $2
      read ANS < $2
   done
   if [ "$5" = NOECHO ]; then
      stty -F $2 echo
#    echo "NOTE: keyboard input echo has been turned on." > $2
   fi
   echo $ANS
   return 0
}

# Add minimum configuration required by HP Insight Management Agents
rancomm () {
  RANCOMM=""
  RANCOMMLEN=""
  COUNTER=0
  while true; do
    COUNTER=`expr $COUNTER + 7`
    DATE=`date 2>/dev/null`
    HOSTNAME=`hostname 2>/dev/null`
    IFCONFIG=`ifconfig 2>/dev/null`
    PROCSTAT=`cat /proc/stat 2>&1`
    if [ -z "$RANCOMMLEN" ]; then
      EXPR=`echo $COUNTER $DATE $HOSTNAME $IFCONFIG $PROCSTAT $COUNTER | md5sum | \
        sed 's/^[^4567]*\([4567]\).*\([4567]\)[^4567]*$/expr \1 + \2/'`
      [ ${#EXPR} -lt 10 ] && continue
      RANCOMMLEN=`$EXPR 2>/dev/null`
      continue
    fi
    MAXLEN=`expr $RANCOMMLEN - ${#RANCOMM}`
    RANCOMM=${RANCOMM}`echo $COUNTER $DATE $HOSTNAME $IFCONFIG $PROCSTAT $COUNTER | md5sum | \
      awk 'BEGIN { MAXLEN='$MAXLEN'
                   A["30"]="0"; A["31"]="1"; A["32"]="2"; A["33"]="3";
                   A["34"]="4"; A["35"]="5"; A["36"]="6"; A["37"]="7";
                   A["38"]="8"; A["39"]="9"
                   A["41"]="A"; A["42"]="B"; A["43"]="C"; A["44"]="D";
                   A["45"]="E"; A["46"]="F"; A["47"]="G"; A["48"]="H";
                   A["49"]="I"; A["4a"]="J"; A["4b"]="K"; A["4c"]="L";
                   A["4d"]="M"; A["4e"]="N"; A["4f"]="O"; A["50"]="P";
                   A["51"]="Q"; A["52"]="R"; A["53"]="S"; A["54"]="T";
                   A["55"]="U"; A["56"]="V"; A["57"]="W"; A["58"]="X";
                   A["59"]="Y"; A["5a"]="Z"; A["61"]="a"; A["62"]="b";
                   A["63"]="c"; A["64"]="d"; A["65"]="e"; A["66"]="f";
                   A["67"]="g"; A["68"]="h"; A["69"]="i"; A["6a"]="j";
                   A["6b"]="k"; A["6c"]="l"; A["6d"]="m"; A["6e"]="n";
                   A["6f"]="o"; A["70"]="p"; A["71"]="q"; A["72"]="r";
                   A["73"]="s"; A["74"]="t"; A["75"]="u"; A["76"]="v";
                   A["77"]="w"; A["78"]="x"; A["79"]="y"; A["7a"]="z";
           }
           {
             LEN=length($0)
             for (i=0; i< LEN-1 && MAXLEN > 0; i=i+2) {
               HEX=substr($0,i,2)
               if (HEX in A) {
                 printf "%s", A[HEX];
                 MAXLEN--;
               }
             }
           }'`
    RANCOMM=`echo $RANCOMM | sed 's/^[0-9]*//'`
    [ ${#RANCOMM} -ge $RANCOMMLEN ] && break;
  done

  echo "$RANCOMM"
  return 0
}


which_snmpd_conf() 
{
   CMACONFFILE=/opt/hp/hp-snmp-agents/cma.conf

   SNMPDCONFDEFPATH="/etc/snmp:/etc:/usr/share/snmp:/usr/lib/snmp:~/.snmp"
   if [ -d /etc/snmp/ ]; then
      SNMPDCONFFILE="/etc/snmp/snmpd.conf"
   else
      SNMPDCONFFILE="/etc/snmpd.conf"
   fi
}

get_configs () 
{
   SNMPDCONF=snmpd.conf
   SNMPDCONFUSED=""
   [ -z "$SNMPCONFPATH" ] && SNMPCONFPATH=$SNMPDCONFDEFPATH
   TMPPATH=`echo $SNMPCONFPATH | sed 's/:/ /g'`
   for i in $TMPPATH; do
      #echo "$i/$SNMPDCONF"
      [ -f "$i/$SNMPDCONF" ] && SNMPDCONFUSED="$SNMPDCONFUSED $i/$SNMPDCONF"
      [ -f "$i/ucd$SNMPDCONF" ] && SNMPDCONFUSED="$SNMPDCONFUSED $i/ucd$SNMPDCONF"
      [ -f "$i/net$SNMPDCONF" ] && SNMPDCONFUSED="$SNMPDCONFUSED $i/net$SNMPDCONF"
   done

   SNMPDLOCALWRITECOMMUSED=""
   SNMPDLOCALREADCOMMUSED=""
   SNMPDNONLOCALWRITECOMMUSED=""
   SNMPDNONLOCALREADCOMMUSED=""
   SNMPDTRAPDEFCOMM=""
   SNMPDTRAPDESTANDCOMM=""
   SNMPDSYSCONTACT=""
   SNMPDXLOCATION=""
   SNMPDLOCATION=""
   SNMPDAGENTAEXCLUDE=""

   # bail if no snmp conf file found.
   if [ -z "$SNMPDCONFUSED" ]; then
      return
   fi

   TMPPATH=/tmp/tmp$$

   egrep -h '^[  ]*rwcommunity[  ].*$' $SNMPDCONFUSED > $TMPPATH
   while read TEMPSTR1 TEMPSTR2 TEMPSTR3; 
   do
      if [ -z "$TEMPSTR3" ]; then
         SNMPDLOCALWRITECOMMUSED="${SNMPDLOCALWRITECOMMUSED}rwcommunity $TEMPSTR2 localhost\\n"
         SNMPDNONLOCALWRITECOMMUSED="${SNMPDNONLOCALWRITECOMMUSED}rwcommunity $TEMPSTR2\\n"
         continue
      fi
      if [ "$TEMPSTR3" = "127.0.0.1" -o "$TEMPSTR3" = "localhost" ]; then
         SNMPDLOCALWRITECOMMUSED="${SNMPDLOCALWRITECOMMUSED}rwcommunity $TEMPSTR2 $TEMPSTR3\\n"
      else
         SNMPDNONLOCALWRITECOMMUSED="${SNMPDNONLOCALWRITECOMMUSED}rwcommunity $TEMPSTR2 $TEMPSTR3\\n"
      fi
   done < $TMPPATH

   egrep -h '^[  ]*rocommunity[  ].*$' $SNMPDCONFUSED > $TMPPATH

   while read TEMPSTR1 TEMPSTR2 TEMPSTR3; do
      if [ -z "$TEMPSTR3" ]; then
         SNMPDLOCALREADCOMMUSED="${SNMPDLOCALREADCOMMUSED}rocommunity $TEMPSTR2 localhost\\n"
         SNMPDNONLOCALREADCOMMUSED="${SNMPDNONLOCALREADCOMMUSED}rocommunity $TEMPSTR2\\n"
         continue
      fi
      if [ "$TEMPSTR3" = "127.0.0.1" -o "$TEMPSTR3" = "localhost" ]; then
         SNMPDLOCALREADCOMMUSED="${SNMPDLOCALREADCOMMUSED}rocommunity $TEMPSTR2 $TEMPSTR3\\n"
      elif [ "$TEMPSTR3" = "default    -V systemonly" ]; then
         SNMPDNONLOCALREADCOMMUSED="${SNMPDNONLOCALREADCOMMUSED}"
      else
         SNMPDNONLOCALREADCOMMUSED="${SNMPDNONLOCALREADCOMMUSED}rocommunity $TEMPSTR2 $TEMPSTR3\\n"
      fi
   done < $TMPPATH

   SNMPDTRAPDEFCOMM=`egrep -h '^[        ]*trapcommunity.*$' $SNMPDCONFUSED | sed -e 's/$/\\\\n/' | tr -d '\n'`

   SNMPDTRAPDESTANDCOMM=`egrep -h '^[    ]*trapsink.*$' $SNMPDCONFUSED | sed -e 's/$/\\\\n/' | tr -d '\n'`

   SNMPDSYSCONTACT=`egrep -h '^[         ]*syscontact' $SNMPDCONFUSED | sed -e 's/$/\\\\n/' | tr -d '\n'`

   SNMPDXLOCATION=`egrep -h '^[   ]*dlmod[        ]*cmaX' $SNMPDCONFUSED | sed -e 's/$/\\\\n/' | tr -d '\n'`

   SNMPDLOCATION=`egrep -h '^[   ]*syslocation' $SNMPDCONFUSED | sed -e 's/$/\\\\n/' |  tr -d '\n'`

   SNMPDAGENTEXCLUDE=""
   [ -f $CMACONFFILE ] && SNMPDAGENTEXCLUDE="`egrep -h '^exclude.*$' $CMACONFFILE >/dev/null| sed -e 's/$/\\\\n/'`"

   [ -f $CMACONFFILE ] && SNMPDNOTAINTEDKERNEL="`egrep -h '^notaint' $CMACONFFILE >/dev/null| awk '{print $1}'`"

   return 0
}

configure_snmp() {
SNMP_INTRO="This configuration script will configure SNMP to integrate with the HP SIM and\nthe HP System Management Homepage by editting the snmpd.conf file. The HP-SNMP-Agents can also exist in a more secure\nSNMP environment (e.g. VACM) that you have previously configured. See the\nhp-snmp-agents(4) man page for specific details on how to configure the VACM entries\nin the 'snmpd.conf' file. You may press <ctrl+c> now to exit now if needed."

TEMPSTR1=""
if [ ! -z "$CMASKIPSNMPCONFIG" ]; then
   validate_data "$CMASKIPSNMPCONFIG" NOBLANK YESNO
   TEMPSTR1=$?
else
   CMASKIPSNMPCONFIG="n"
fi
if [ "$TEMPSTR1" = "0" ]; then
   env_manager ENVUSED CMASKIPSNMPCONFIG
else
   [ ! -z "$TEMPSTR1" ] && env_manager ENVREJECTED CMASKIPSNMPCONFIG
   if [ "$INSTMODE" = "INTERACTIVE" ]; then
      TEMPSTR1=`get_userinput "$SNMP_INTRO\n\nDo you wish to use an existing snmpd.conf (y/n) (Blank is n): " $TTY BLANKOK YESNO ECHO CLSCR`
      if [ ! -z "$TEMPSTR1" ]; then
         CMASKIPSNMPCONFIG=$TEMPSTR1
      else
         CMASKIPSNMPCONFIG="n"
      fi
   fi
fi
}

get_comm_string() {
   SNMP_INTRO="You will now be asked a series of SNMP configuration questions.  How you answer\nthese question will affect the way SNMP behaves.  Configuring SNMP could have\nsecurity implications on your system. If you are not sure how to answer a\nquestion, you can abort by pressing <Ctrl-c> and no changes will be made to\nyour SNMP configuration."
   
   TEMPSTR1=""
   if [ ! -z "$CMALOCALHOSTRWCOMMSTR" ]; then
      validate_data "$CMALOCALHOSTRWCOMMSTR" NOBLANK NOSPACE
      TEMPSTR1=$?
   fi
   if [ "$TEMPSTR1" = "0" ]; then
      env_manager ENVUSED CMALOCALHOSTRWCOMMSTR
      echo "rwcommunity  $CMALOCALHOSTRWCOMMSTR  127.0.0.1" >>$TMPFILE
      LINES=`expr $LINES + 1`
   else
      [ ! -z "$TEMPSTR1" ] && env_manager ENVREJECTED CMALOCALHOSTRWCOMMSTR
      if [ "$INSTMODE" = "INTERACTIVE" ]; then
         if [ ! -z "$SNMPDLOCALWRITECOMMUSED" ]; then
	    if [ "$CMAAUTO" = "n" ]; then
            	TEMPSTR1=`get_userinput "$SNMP_INTRO\n\nLocalhost SNMP Read/Write community strings are already known.\nDo you wish to change it (y/n) (Blank is n): " $TTY BLANKOK YESNO ECHO CLSCR`
	    else
		TEMPSTR1="y"
	    fi
	    [ "$TEMPSTR1" = "y" ] &&  SNMPDLOCALWRITECOMMUSED=
         fi
         if [ -z "$SNMPDLOCALWRITECOMMUSED" ]; then
	    if [ "$CMAAUTO" = "n" ]; then
	            TEMPSTR1=`get_userinput "$SNMP_INTRO\n\nEnter the localhost SNMP Read/Write community string\n(one word, required, no default): " $TTY NOBLANK NOSPACE NOECHO CLSCR`
	    else
		    TEMPSTR1=$AUTO_CMALOCALHOSTRWCOMMSTR
	    fi
            if [ ! -z "$TEMPSTR1" ]; then
               SNMPDLOCALWRITECOMMUSED="rwcommunity $TEMPSTR1 127.0.0.1\\n"
               CMALOCALHOSTRWCOMMSTR=$TEMPSTR1
            fi
         fi
      fi
      if [ ! -z "$SNMPDLOCALWRITECOMMUSED" ]; then
         printf "$SNMPDLOCALWRITECOMMUSED" >>$TMPFILE
         LINES=`expr $LINES + 1`
      else
         # Performs minimum configuration with random community string
         # but only if no env variable was passed in.
         RWCOMMSTRING=`rancomm`
         echo "rwcommunity  $RWCOMMSTRING  127.0.0.1" >>$TMPFILE
         LINES=`expr $LINES + 1`
      fi
   fi

   TEMPSTR1=""
   if [ ! -z "$CMALOCALHOSTROCOMMSTR" ]; then
      validate_data "$CMALOCALHOSTROCOMMSTR" NOBLANK NOSPACE
      TEMPSTR1=$?
   fi
   if [ "$TEMPSTR1" = "0" ]; then
      env_manager ENVUSED CMALOCALHOSTROCOMMSTR
      echo "rocommunity  $CMALOCALHOSTROCOMMSTR  127.0.0.1" >>$TMPFILE
      LINES=`expr $LINES + 1`
   else
      [ ! -z "$TEMPSTR1" ] && env_manager ENVREJECTED CMALOCALHOSTROCOMMSTR
      if [ "$INSTMODE" = "INTERACTIVE" ]; then
         if [ ! -z "$SNMPDLOCALREADCOMMUSED" ]; then
	    if [ "$CMAAUTO" = "n" ]; then
	            TEMPSTR1=`get_userinput "Localhost SNMP Read Only community strings are already known.\nDo you wish to change it (y/n) (Blank is n): " $TTY BLANKOK YESNO ECHO NOCLSCR`
	    else
		    TEMPSTR1="y"		    
	    fi			
            [ "$TEMPSTR1" = "y" ] &&  SNMPDLOCALREADCOMMUSED=
         fi
         if [ -z "$SNMPDLOCALREADCOMMUSED" ]; then
	    if [ "$CMAAUTO" = "n" ]; then
 	           TEMPSTR1=`get_userinput "Enter localhost SNMP Read Only community string\n(one word, Blank to skip): " $TTY BLANKOK NOSPACE NOECHO NOCLSCR`
	    else
		   TEMPSTR1=$AUTO_CMALOCALHOSTROCOMMSTR
	    fi
            if [ ! -z "$TEMPSTR1" ]; then
               SNMPDLOCALREADCOMMUSED="rocommunity $TEMPSTR1 127.0.0.1\\n"
               CMALOCALHOSTROCOMMSTR=$TEMPSTR1
            fi
         fi
      fi
      if [ ! -z "$SNMPDLOCALREADCOMMUSED" ]; then
         printf "$SNMPDLOCALREADCOMMUSED"  >>$TMPFILE
         LINES=`expr $LINES + 1`
      fi
   fi
}

get_mgmt_station_comm_string() 
{
   # READ WRITE COMMUNITIES
   #Backward compatibility
   if [ ! -z "$CMAMGMTSTATIONRWIPORDNS" ]; then
      CMAMGMTSTATIONIPORDNS="$CMAMGMTSTATIONRWIPORDNS"
   fi

   I=0
   for TEMPSTR1 in $CMAMGMTSTATIONIPORDNS; do
      I=`expr $I + 1`
      TEMPARRAY1[$I]="$TEMPSTR1"
   done
   J=0
   for TEMPSTR2 in $CMAMGMTSTATIONRWCOMMSTR; do
      J=`expr $J + 1`
      TEMPARRAY2[$J]="$TEMPSTR2"
   done

   if [ "$I" != "0" ]; then
      for J in `seq 1 $I`; do
         if [ ! -z "${TEMPARRAY2[$J]}" ]; then
            echo "rwcommunity  ${TEMPARRAY2[$J]} ${TEMPARRAY1[$J]}" >>$TMPFILE
            LINES=`expr $LINES + 1`
         fi
      done
      env_manager ENVUSED CMAMGMTSTATIONIPORDNS
      env_manager ENVUSED CMAMGMTSTATIONRWCOMMSTR
   else
      [ ! -z "$CMAMGMTSTATIONIPORDNS" ] && env_manager ENVREJECTED CMAMGMTSTATIONIPORDNS
      [ ! -z "$CMAMGMTSTATIONRWCOMMSTR" ] && env_manager ENVREJECTED CMAMGMTSTATIONRWCOMMSTR
      if [ "$INSTMODE" = "INTERACTIVE" ]; then
         # Read Write stuff
         if [ ! -z "$SNMPDNONLOCALWRITECOMMUSED" ]; then
	    if [ "$CMAAUTO" = "n" ]; then
	            TEMPSTR1=`get_userinput "SNMP Read/Write community strings are already set to\n${SNMPDNONLOCALWRITECOMMUSED}Do you wish to change them (y/n) (Blank is n): " $TTY BLANKOK YESNO ECHO NOCLSCR`
	    else
		    TEMPSTR1="y"
	    fi
            [ "$TEMPSTR1" = "y" ] &&  SNMPDNONLOCALWRITECOMMUSED=
         fi
         if [ -z "$SNMPDNONLOCALWRITECOMMUSED" ]; then
            while true; do
	       if [ "$CMAAUTO" = "n" ]; then
	               TEMPSTR1=`get_userinput "Enter Read/Write Authorized Management Station IP or DNS name\n(Blank to skip): " $TTY BLANKOK NOSPACE ECHO NOCLSCR`
	       else
		       TEMPSTR1=$AUTO_CMAMGMTSTATIONRWIPORDNS
	       fi	
               [ -z "$TEMPSTR1" ] && break
               if [ "$CMAAUTO" = "n" ]; then	
	               TEMPSTR2=`get_userinput "Enter SNMP Read/Write community string for Management Station \"$TEMPSTR1\"\n(one word, required, no default): " $TTY NOBLANK NOSPACE NOECHO NOCLSCR`
	       else
	       	       TEMPSTR2=$AUTO_CMAMGMTSTATIONRWCOMMSTR
	       fi
               if [ ! -z "$TEMPSTR2" ]; then
                  SNMPDNONLOCALWRITECOMMUSED="${SNMPDNONLOCALWRITECOMMUSED}rwcommunity  $TEMPSTR2 $TEMPSTR1\\n"
                  if [ -z "$CMAMGMTSTATIONRWIPORDNS" ]; then
                     CMAMGMTSTATIONRWIPORDNS="$TEMPSTR1"
                  else
                     CMAMGMTSTATIONRWIPORDNS="$CMAMGMTSTATIONRWIPORDNS $TEMPSTR1"
                  fi
                  if [ -z "$CMAMGMTSTATIONRWCOMMSTR" ]; then
                     CMAMGMTSTATIONRWCOMMSTR="$TEMPSTR2"
                  else
                     CMAMGMTSTATIONRWCOMMSTR="$CMAMGMTSTATIONRWCOMMSTR $TEMPSTR2"
                  fi
               fi
               break
            done
         fi
      fi
      if [ ! -z "$SNMPDNONLOCALWRITECOMMUSED" ]; then
         printf "$SNMPDNONLOCALWRITECOMMUSED" >>$TMPFILE
         LINES=`expr $LINES + 1`
      fi
   fi

   # READ ONLY COMMUNITIES
   I=0
   for TEMPSTR1 in $CMAMGMTSTATIONROIPORDNS; do
       I=`expr $I + 1`
       TEMPARRAY1[$I]="$TEMPSTR1"
   done
   J=0
   for TEMPSTR2 in $CMAMGMTSTATIONROCOMMSTR; do
      J=`expr $J + 1`
      TEMPARRAY2[$J]="$TEMPSTR2"
   done

   if [ "$I" != "0" ]; then
      for J in `seq 1 $I`; do
         if [ ! -z "${TEMPARRAY2[$J]}" ]; then
            echo "rocommunity  ${TEMPARRAY2[$J]} ${TEMPARRAY1[$J]}" >>$TMPFILE
            LINES=`expr $LINES + 1`
         fi
      done
      env_manager ENVUSED CMAMGMTSTATIONROIPORDNS
      env_manager ENVUSED CMAMGMTSTATIONROCOMMSTR
   else
      [ ! -z "$CMAMGMTSTATIONROIPORDNS" ] && env_manager ENVREJECTED CMAMGMTSTATIONROIPORDNS
      [ ! -z "$CMAMGMTSTATIONROCOMMSTR" ] && env_manager ENVREJECTED CMAMGMTSTATIONROCOMMSTR
      if [ "$INSTMODE" = "INTERACTIVE" ]; then
         # Read Only stuff
         if [ ! -z "$SNMPDNONLOCALREADCOMMUSED" ]; then
	    if [ "$CMAAUTO" = "n" ]; then
	            TEMPSTR1=`get_userinput "SNMP Read Only community strings are already set to\n${SNMPDNONLOCALREADCOMMUSED}Do you wish to change them (y/n) (Blank is n): " $TTY BLANKOK YESNO ECHO NOCLSCR`
	    else
		    TEMPSTR1="y"
	    fi
            [ "$TEMPSTR1" = "y" ] &&  SNMPDNONLOCALREADCOMMUSED=
         fi
         if [ -z "$SNMPDNONLOCALREADCOMMUSED" ]; then
            while true; do
	       if [ "$CMAAUTO" = "n" ]; then
	               TEMPSTR1=`get_userinput "Enter Read Only Authorized Management Station IP or DNS name\n(Blank to skip): " $TTY BLANKOK NOSPACE ECHO NOCLSCR`
	       else
			TEMPSTR1=$AUTO_CMAMGMTSTATIONROIPORDNS
	       fi
               [ -z "$TEMPSTR1" ] && break
	       if [ "$CMAAUTO" = "n" ]; then
	               TEMPSTR2=`get_userinput "Enter SNMP Read Only community string for Management Station \"$TEMPSTR1\"\n(one word, required, no default): " $TTY NOBLANK NOSPACE NOECHO NOCLSCR`
	       else
	       		TEMPSTR2=$AUTO_CMAMGMTSTATIONROCOMMSTR
	       fi
               if [ ! -z "$TEMPSTR2" ]; then
                  SNMPDNONLOCALREADCOMMUSED="${SNMPDNONLOCALREADCOMMUSED}rocommunity  $TEMPSTR2 $TEMPSTR1\\n"
                  if [ -z "$CMAMGMTSTATIONROIPORDNS" ]; then
                     CMAMGMTSTATIONROIPORDNS="$TEMPSTR1"
                  else
                     CMAMGMTSTATIONROIPORDNS="$CMAMGMTSTATIONROIPORDNS $TEMPSTR1"
                  fi
                     if [ -z "$CMAMGMTSTATIONROCOMMSTR" ]; then
                        CMAMGMTSTATIONROCOMMSTR="$TEMPSTR2"
                     else
                        CMAMGMTSTATIONROCOMMSTR="$CMAMGMTSTATIONROCOMMSTR $TEMPSTR2"
                     fi
               fi
               break
            done
         fi
      fi
      if [ ! -z "$SNMPDNONLOCALREADCOMMUSED" ]; then
         printf "$SNMPDNONLOCALREADCOMMUSED" >>$TMPFILE
         LINES=`expr $LINES + 1`
      fi
   fi
}
get_trap_comm_string() 
{
   # TRAP COMMUNITY
   TEMPSTR1=""
   if [ ! -z "$CMADEFTRAPCOMMSTR" ]; then
      validate_data "$CMADEFTRAPCOMMSTR" NOBLANK NOSPACE
      TEMPSTR1=$?
   fi
   if [ "$TEMPSTR1" = "0" ]; then
      echo "trapcommunity $CMADEFTRAPCOMMSTR" >>$TMPFILE
      LINES=`expr $LINES + 1`
      env_manager ENVUSED CMADEFTRAPCOMMSTR
   else
      [ ! -z "$CMADEFTRAPCOMMSTR" ] && env_manager ENVREJECTED CMADEFTRAPCOMMSTR
      if [ "$INSTMODE" = "INTERACTIVE" ]; then
         if [ ! -z "$SNMPDTRAPDEFCOMM" ]; then
	    if [ "$CMAAUTO" = "n" ]; then
	            TEMPSTR1=`get_userinput "The SNMP trap community strings are set up like this:\n${SNMPDTRAPDEFCOMM}Do you wish to change this (y/n) (Blank is n): " $TTY BLANKOK YESNO ECHO NOCLSCR`
	    else
		    TEMPSTR1="y"
	    fi 
            [ "$TEMPSTR1" = "y" ] &&  SNMPDTRAPDEFCOMM=
         fi
         if [ -z "$SNMPDTRAPDEFCOMM" ]; then
	    if [ "$CMAAUTO" = "n" ]; then
	            TEMPSTR1=`get_userinput "Enter default SNMP trap community string\n(One word; Blank to skip): " $TTY BLANKOK NOSPACE ECHO NOCLSCR`
	    else
		    TEMPSTR1=$AUTO_CMADEFTRAPCOMMSTR
	    fi
            if [ ! -z "$TEMPSTR1" ]; then
               SNMPDTRAPDEFCOMM="trapcommunity $TEMPSTR1\\n"
               CMADEFTRAPCOMMSTR=$TEMPSTR1
            fi
         fi
      fi
      if [ ! -z "$SNMPDTRAPDEFCOMM" ]; then
         printf "$SNMPDTRAPDEFCOMM" >>$TMPFILE
         LINES=`expr $LINES + 1`
      fi
   fi
}

get_trap_sink_string() 
{

   # TRAP SINKS

   I=0
   for TEMPSTR1 in $CMATRAPDESTINATIONIPORDNS; do
      I=`expr $I + 1`
      TEMPARRAY1[$I]="$TEMPSTR1"
   done
   J=0
   for TEMPSTR2 in $CMATRAPDESTINATIONCOMMSTR; do
      J=`expr $J + 1`
      TEMPARRAY2[$J]="$TEMPSTR2"
   done

   if [ "$I" != "0" ]; then
      for J in `seq 1 $I`; do
         if [ ! -z "${TEMPARRAY2[$J]}" ]; then
            echo "trapsink ${TEMPARRAY1[$J]} ${TEMPARRAY2[$J]}" >>$TMPFILE
            LINES=`expr $LINES + 1`
         fi
      done
      env_manager ENVUSED CMATRAPDESTINATIONIPORDNS
      env_manager ENVUSED CMATRAPDESTINATIONCOMMSTR
   else
      [ ! -z "$CMATRAPDESTINATIONIPORDNS" ] && env_manager ENVREJECTED CMATRAPDESTINATIONIPORDNS
      [ ! -z "$CMATRAPDESTINATIONCOMMSTR" ] && env_manager ENVREJECTED CMATRAPDESTINATIONCOMMSTR
      if [ "$INSTMODE" = "INTERACTIVE" ]; then
         if [ ! -z "$SNMPDTRAPDESTANDCOMM" ]; then
            if [ "$CMAAUTO" = "n" ]; then
               TEMPSTR1=`get_userinput "Trap sinks are set up like this:\n${SNMPDTRAPDESTANDCOMM}Do you wish to change this (y/n) (Blank is n): " $TTY BLANKOK YESNO ECHO NOCLSCR`
            else
               TEMPSTR1="y"
            fi
            [ "$TEMPSTR1" = "y" ] &&  SNMPDTRAPDESTANDCOMM=
         fi
         if [ -z "$SNMPDTRAPDESTANDCOMM" ]; then
            while true; do
               if [ "$CMAAUTO" = "n" ]; then
                  TEMPSTR1=`get_userinput "Enter SNMP trap destination IP or DNS name\n(One word; Blank to skip): " $TTY BLANKOK NOSPACE ECHO NOCLSCR`
               else
                  TEMPSTR1=$AUTO_CMATRAPDESTINATIONIPORDNS
               fi
               [ -z "$TEMPSTR1" ] && break
               if [ "$CMAAUTO" = "n" ]; then
                  TEMPSTR2=`get_userinput "Enter trap community string for trap destination \"$TEMPSTR1\"\n(One word; Blank to skip): " $TTY BLANKOK NOSPACE ECHO NOCLSCR`
               else
                  TEMPSTR2=$AUTO_CMATRAPDESTINATIONCOMMSTR
               fi
               if [ ! -z "$TEMPSTR1" ]; then
                  SNMPDTRAPDESTANDCOMM="${SNMPDTRAPDESTANDCOMM}trapsink $TEMPSTR1 $TEMPSTR2\\n"
                  if [ -z "$CMATRAPDESTINATIONIPORDNS" ]; then
                     CMATRAPDESTINATIONIPORDNS="$TEMPSTR1"
                  else
                     CMATRAPDESTINATIONIPORDNS="$CMATRAPDESTINATIONIPORDNS $TEMPSTR1"
                  fi
                  if [ -z "$CMATRAPDESTINATIONCOMMSTR" ]; then
                     CMATRAPDESTINATIONCOMMSTR="$TEMPSTR2"
                  else
                     CMATRAPDESTINATIONCOMMSTR="$CMATRAPDESTINATIONCOMMSTR $TEMPSTR2"
                  fi
               fi
               break
            done
         fi
      fi
      if [ ! -z "$SNMPDTRAPDESTANDCOMM" ]; then
         printf "$SNMPDTRAPDESTANDCOMM" >>$TMPFILE
         LINES=`expr $LINES + 1`
      fi
   fi
}

get_sys_contact() 
{
   # Configure sysContact
   if [ ! -z "$CMASYSCONTACT" ]; then
      echo "syscontact  $CMASYSCONTACT" >>$TMPFILE
      LINES=`expr $LINES + 1`
      env_manager ENVUSED CMASYSCONTACT
   else
      if [ "$INSTMODE" = "INTERACTIVE" ]; then
         if [ ! -z "$SNMPDSYSCONTACT" ]; then
            if [ "$CMAAUTO" = "n" ]; then
               TEMPSTR1=`get_userinput "The system contact is set to\n${SNMPDSYSCONTACT}Do you wish to change it (y/n) (Blank is n): " $TTY BLANKOK YESNO ECHO NOCLSCR`
            else
               TEMPSTR1="y"
            fi
            [ "$TEMPSTR1" = "y" ] &&  SNMPDSYSCONTACT=
         fi
         if [ -z "$SNMPDSYSCONTACT" ]; then
            if [ "$CMAAUTO" = "n" ]; then
               TEMPSTR1=`get_userinput "Enter system contact information\n(Name, phone, room, etc; Blank to skip): " $TTY BLANKOK SPACEOK ECHO NOCLSCR`
            else
               TEMPSTR1=$AUTO_CMASYSCONTACT
            fi
            if [ ! -z "$TEMPSTR1" ]; then
               SNMPDSYSCONTACT="syscontact $TEMPSTR1\\n"
               CMASYSCONTACT=$TEMPSTR1
            fi
         fi
      fi
      if [ ! -z "$SNMPDSYSCONTACT" ]; then
         printf "$SNMPDSYSCONTACT" >>$TMPFILE
         LINES=`expr $LINES + 1`
      fi
   fi
}

get_sys_location() 
{
   # Configure sysLocation
   if [ ! -z "$CMASYSLOCATION" ]; then
      echo "syslocation  $CMASYSLOCATION" >>$TMPFILE
      LINES=`expr $LINES + 1`
      env_manager ENVUSED CMASYSLOCATION
   else
      if [ "$INSTMODE" = "INTERACTIVE" ]; then
         if [ ! -z "$SNMPDLOCATION" ]; then
            if [ "$CMAAUTO" = "n" ]; then
               TEMPSTR1=`get_userinput "The system location is set to\n${SNMPDLOCATION}Do you wish to change it (y/n) (Blank is n): " $TTY BLANKOK YESNO ECHO NOCLSCR`
            else
               TEMPSTR1="y"
            fi
            [ "$TEMPSTR1" = "y" ] &&  SNMPDLOCATION=
         fi
         if [ -z "$SNMPDLOCATION" ]; then
            if [ "$CMAAUTO" = "n" ]; then
               TEMPSTR1=`get_userinput "Enter system location information\n(Building, room, etc; Blank to skip): " $TTY BLANKOK SPACEOK ECHO NOCLSCR`
            else
               TEMPSTR1=$AUTO_CMASYSLOCATION
            fi
            if [ ! -z "$TEMPSTR1" ]; then
               SNMPDLOCATION="syslocation $TEMPSTR1"
               CMASYSLOCATION=$TEMPSTR1
            fi
         fi
      fi
      if [ ! -z "$SNMPDLOCATION" ]; then
         printf "$SNMPDLOCATION\\n" >>$TMPFILE
         LINES=`expr $LINES + 1`
      fi
   fi
}

snmp_conf_remove_hp() 
{
   if [ -f $SNMPDCONFFILE ]; then
      #remove any old HP entries
      sed '/\# Following entries were added by HP Insight Management Agents at/,/\# ---------------------- END --------------------/d' $SNMPDCONFFILE > $TMPSNMPDCONF
   fi
   cat  $TMPSNMPDCONF > $SNMPDCONFFILE
   rm -f $TMPSNMPDCONF
}

snmp_conf_add() 
{
   if [ $LINES -eq 0 ]; then
      return
   fi

   echo "# Following entries were added by HP Insight Management Agents at" >$TMPSNMPDCONF
   echo "#      `date`" >>$TMPSNMPDCONF
   cat $TMPFILE >> $TMPSNMPDCONF
   echo "# ---------------------- END --------------------" >>$TMPSNMPDCONF
   if [ -f $SNMPDCONFFILE ]; then

      # Filter out the stuff that we are about to add
      grep -v -e 'libcmaX' -e 'rwcommunity' -e 'rocommunity' -e 'trapcommunity' -e 'trapsink' -e 'syslocation' -e 'syscontact' $SNMPDCONFFILE >> $TMPSNMPDCONF

   else
       > $SNMPDCONFFILE
   fi

   cat  $TMPSNMPDCONF > $SNMPDCONFFILE

   echo
   echo "=============================================================================="
   echo "NOTE: New snmpd.conf entries were added to the top of $SNMPDCONFFILE"
   echo "=============================================================================="
   rm -f $TMPFILE
   rm -f $TMPSNMPDCONF
}

make_config() 
{
   CMAKERNELVERSION="`uname -r`"
   cat >/etc/hp-snmp-agents.conf <<EOF
# install mode
   export CMASILENT="YES"
# kernel version
   export CMAKERNELVERSION="$CMAKERNELVERSION"
#Decision to touch existing SNMP file
   export CMASKIPSNMPCONFIG="$CMASKIPSNMPCONFIG"
#local rw community string
   export CMALOCALHOSTRWCOMMSTR="$CMALOCALHOSTRWCOMMSTR"
#local ro community string
   export CMALOCALHOSTROCOMMSTR="$CMALOCALHOSTROCOMMSTR"
#rw authorized management stations (multiples allowed)
   export CMAMGMTSTATIONRWIPORDNS="$CMAMGMTSTATIONRWIPORDNS"
#rw authorized mangamane station community string (multiplies allowed)
   export CMAMGMTSTATIONRWCOMMSTR="$CMAMGMTSTATIONRWCOMMSTR"
#ro authorized management stations (multiples allowed)
   export CMAMGMTSTATIONROIPORDNS="$CMAMGMTSTATIONROIPORDNS"
#ro authorized management station community string (multiplies allowed)
   export CMAMGMTSTATIONROCOMMSTR="$CMAMGMTSTATIONROCOMMSTR"
#default trap community string
   export CMADEFTRAPCOMMSTR="$CMADEFTRAPCOMMSTR"
#trap recipients (multiples allowed)
   export CMATRAPDESTINATIONIPORDNS="$CMATRAPDESTINATIONIPORDNS"
#trap recipient community strings (multiples allowed)
   export CMATRAPDESTINATIONCOMMSTR="$CMATRAPDESTINATIONCOMMSTR"
#system contact
   export CMASYSCONTACT="$CMASYSCONTACT"
#system location
   export CMASYSLOCATION="$CMASYSLOCATION"
#agent exclusion on startup
   export CMAAGENTEXCLUDESTR="$CMAAGENTEXCLUDESTR"
EOF

}

snmp_restart() 
{
   # Restart snmpd
   if [ -x /etc/init.d/snmpd ]; then
      SNMPDSSCRIPT="/etc/init.d/snmpd"
   elif [ -x /etc/rc.d/init.d/snmpd ]; then
      SNMPDSSCRIPT="/etc/rc.d/init.d/snmpd"
   fi

   SNMP_ACTION="start"

   if [ -n "`$PIDOF snmpd 2> /dev/null`" ]; then
      SNMP_ACTION="restart"
   fi

   if [ -n "$SNMPDSSCRIPT" ]; then
      (cd /; $SNMPDSSCRIPT $SNMP_ACTION) < /dev/null >> $INSTALLLOG 2>&1
      sleep 2
      [ -z "`$PIDOF snmpd 2> /dev/null`" ] && sleep 2
      if [ -n "`$PIDOF snmpd 2> /dev/null`" ]; then
         echo "snmpd is started"
      else
         echo "failed to start snmpd"
      fi
   fi
}


usage_help()
{
   echo "$CLEARSCREEN"
   echo "USAGE: hpsnmpconfig [APPLICATION OPTIONS]"
   echo "OPTIONS:"
   echo
   echo "   --help                 -display this help message"
   echo "   --a                    -auto config" 
   echo "   --rws                  -read write community string"
   echo "   --ros                  -read only string"
   echo "   --rwmips               -read write management IP and string"
   echo "   --romips               -read only management IP and string"
   echo "   --tcs                  -trap community string"
   echo "   --tdips                -trap synk IP and string"
   echo "   --sci                  -system contact information"
   echo "   --sli                  -system location information"
   echo
   echo "MANDATORY APPLICATION OPTIONS:"
   echo "   --a                    -auto config"
   echo "   --rws                  -read write community string"
   echo "   --ros                  -read only string"
   echo
   echo "EXAMPLE"
   echo
   echo "The command:"
   echo
   echo "./hpsnmpconfig --a --rws public --ros public --rwmips 127.0.0.1 public --romips 127.0.0.1 public --tcs public --tdips 127.0.0.1 public --sci Linux --sli USA"
   echo
}


################################################
# MAIN
################################################

INSTALLLOG=/var/spool/compaq/cma.log
TMPFILE=/tmp/hpsnmpagent$$
TMPSNMPDCONF=/tmp/snmpdconf$$
LINES=0

if [ "$1" = "undo" ]; then
   which_snmpd_conf
   snmp_conf_remove_hp
   #restart snmpd if its already running
   [ -n "`$PIDOF snmpd 2> /dev/null`" ] && snmp_restart 
   exit 0
fi

if [ "$1" = "--help" ]; then
   echo "$CLEARSCREEN"
   usage_help
   exit 0
fi

if [ "$1" = "--a" ]; then
   CMAAUTO="y"
else
   if [ -f "$ROOT/etc/vmware-release" ] && \
        [ -x "$ROOT/usr/bin/vmware" ]; then
      if [ "$#" -ne "0" -a "$1" != "SILENT" ]; then
         usage_help
         exit 0
      fi
   else
      if [ "$#" -ne "0" ]; then
         usage_help
         exit 0
      fi
   fi
      CMAAUTO="n"
fi

get_installmode INSTMODE TTY
env_manager INIT

if [ "$CMAAUTO" = "n" ]; then
   configure_snmp
   if [ "$CMASKIPSNMPCONFIG" = "y" ]; then
      snmp_restart
      exit 0
   fi
fi

which_snmpd_conf

get_configs

PRESENT_M1=0
PRESENT_M2=0
PRESENT_M3=0

if [ "$CMAAUTO" = "y" ]; then
   while [ $# -gt 0 ]
   do
      case "$1" in
         --a)      shift; PRESENT_M1=1; continue;;
         --rws)    shift; PRESENT_M2=1; AUTO_CMALOCALHOSTRWCOMMSTR=$1 ;;
         --ros)    shift; PRESENT_M3=1; AUTO_CMALOCALHOSTROCOMMSTR=$1 ;;
         --rwmips) shift; AUTO_CMAMGMTSTATIONRWIPORDNS=$1
                   shift; AUTO_CMAMGMTSTATIONRWCOMMSTR=$1 ;;
         --romips) shift; AUTO_CMAMGMTSTATIONROIPORDNS=$1
                   shift; AUTO_CMAMGMTSTATIONROCOMMSTR=$1 ;;
         --tcs)    shift; AUTO_CMADEFTRAPCOMMSTR=$1 ;;
         --tdips)  shift; AUTO_CMATRAPDESTINATIONIPORDNS=$1
                   shift; AUTO_CMATRAPDESTINATIONCOMMSTR=$1 ;;
         --sci)   
                   while :
                   do
                      shift
                      if [ ! -n "$1" ]; then
                         break
                      else if [ "`expr substr $1 1 2`" = "--" ]; then
                              break
                           else
                              AUTO_CMASYSCONTACT=$AUTO_CMASYSCONTACT" "$1
                           fi
                      fi
                   done
                   ;;
         --sli)   
                   while :
                   do 
                      shift
                      if [ ! -n "$1" ]; then
                         break
                      else if [ "`expr substr $1 1 2`" = "--" ]; then
                              break
                           else
                              AUTO_CMASYSLOCATION=$AUTO_CMASYSLOCATION" "$1
                           fi
                      fi
                   done
                   ;;
         *) 	 echo " Missing Arguments "; usage_help; exit 0 ;;
      esac	
      if [ $# -gt 0 ]; then
      	 if [ "`expr substr $1 1 2`" != "--" ]; then
            shift
         fi
      fi
   done
   if [ "$PRESENT_M1" != "1" -o "$PRESENT_M2" != "1" -o "$PRESENT_M3" != "1" ]; then
      echo " Missing Arguments "
      usage_help
      exit 0
   fi
fi



CMAECHO="no"
if [ "$CMAECHO" = "yes" -o "$CMAFDTNECHO" = "yes" ]; then
   echo  "    INSTMODE=$INSTMODE"
   echo  "    SNMPDCONFUSED=$SNMPDCONFUSED"
   echo  "    SNMPDLOCALWRITECOMMUSED=$SNMPDLOCALWRITECOMMUSED"
   echo  "    SNMPDLOCALREADCOMMUSED=$SNMPDLOCALREADCOMMUSED"
   echo  "    SNMPDNONLOCALWRITECOMMUSED=$SNMPDNONLOCALWRITECOMMUSED"
   echo  "    SNMPDNONLOCALREADCOMMUSED=$SNMPDNONLOCALREADCOMMUSED"
   echo  "    SNMPDTRAPDEFCOMM=$SNMPDTRAPDEFCOMM"
   echo  "    SNMPDTRAPDESTANDCOMM=$SNMPDTRAPDESTANDCOMM"
   echo  "    SNMPDSYSCONTACT=$SNMPDSYSCONTACT"
   echo  "    SNMPDLOCATION=$SNMPDLOCATION"
   echo  "    SNMPDCOM2SECCOMM=$SNMPDCOM2SECCOMM"
   echo  "    CMASKIPSNMPCONFIG=$CMASKIPSNMPCONFIG"
   echo  "    CMALOCALHOSTRWCOMMSTR=$CMALOCALHOSTRWCOMMSTR"
   echo  "    CMAMGMTSTATIONIPORDNS=$CMAMGMTSTATIONIPORDNS"
   echo  "    CMAMGMTSTATIONRWIPORDNS=$CMAMGMTSTATIONRWIPORDNS"
   echo  "    CMAMGMTSTATIONROIPORDNS=$CMAMGMTSTATIONROIPORDNS"
   echo  "    CMAMGMTSTATIONRWCOMMSTR=$CMAMGMTSTATIONRWCOMMSTR"
   echo  "    CMAMGMTSTATIONROCOMMSTR=$CMAMGMTSTATIONROCOMMSTR"
   echo  "    CMADEFTRAPCOMMSTR=$CMADEFTRAPCOMMSTR"
   echo  "    CMATRAPDESTINATIONIPORDNS=$CMATRAPDESTINATIONIPORDNS"
   echo  "    CMATRAPDESTINATIONCOMMSTR=$CMATRAPDESTINATIONCOMMSTR"
   echo  "    CMASYSLOCATION=$CMASYSLOCATION"
   echo  "    CMASYSCONTACT=$CMASYSCONTACT"
   echo  "    CMAXLOCATION=$CMAXLOCATION"
fi

#Add the cmaX extension
if [ -e /usr/lib/libcmaX.so ]; then 
   echo "dlmod cmaX /usr/lib/libcmaX.so" >>$TMPFILE
else
   echo "dlmod cmaX /usr/lib64/libcmaX64.so" >>$TMPFILE
fi
LINES=`expr $LINES + 1`

#Get snmp stuff
get_comm_string
get_mgmt_station_comm_string
get_trap_comm_string
get_trap_sink_string
get_sys_contact
get_sys_location


if [ "$CMAAUTO" = "y" ]; then
   echo "$CLEARSCREEN"
   echo "Starting AUTO SNMP Configuration...."
   echo
   usleep 1000
   echo "Configured localhost SNMP Read/Write community string                    : $AUTO_CMALOCALHOSTRWCOMMSTR"
   echo "Configured localhost SNMP Read Only community string                     : $AUTO_CMALOCALHOSTROCOMMSTR"
   echo "Configured Read/Write Authorized Management Station IP or DNS name       : $AUTO_CMAMGMTSTATIONRWIPORDNS"
   echo "Configured SNMP Read/Write comm str for Mgmt Station $AUTO_CMAMGMTSTATIONRWIPORDNS           : $AUTO_CMAMGMTSTATIONRWCOMMSTR"
   echo "Configured Read Only Authorized Management Station IP or DNS name        : $AUTO_CMAMGMTSTATIONROIPORDNS"
   echo "Configured SNMP Read Only comm str for Mgmt Station $AUTO_CMAMGMTSTATIONROIPORDNS            : $AUTO_CMAMGMTSTATIONROCOMMSTR"
   echo "Configured default SNMP trap community string                            : $AUTO_CMADEFTRAPCOMMSTR"
   echo "Configured SNMP trap destination IP or DNS name                          : $AUTO_CMATRAPDESTINATIONIPORDNS"
   echo "Configured trap community string for trap dest $AUTO_CMATRAPDESTINATIONIPORDNS                 : $AUTO_CMATRAPDESTINATIONCOMMSTR"
   echo "Configured system contact information                                     : $AUTO_CMASYSCONTACT"
   echo "Configured system location information                                    : $AUTO_CMASYSLOCATION"
   echo
fi

#remove old hp entry if any
snmp_conf_remove_hp

#add snmp data
snmp_conf_add

#make a answer file
make_config

env_manager PRINT

#restart snmpd
snmp_restart
echo 
which dos2unix &>/dev/null
if [ $? = 0 ]; then
   dos2unix $INSTALLLOG 2>/dev/null
else
   tr -d '\r'  < $INSTALLLOG  > tmp.log
   mv -f tmp.log $INSTALLLOG
fi
exit
