#!/bin/sh

Usage()
{
    echo "Usage: $1 -s [hostname] [classcode] [typecode]"
    echo "       $1 -u [hostname] [-d]"
    echo "       "
    echo "       where, "
    echo "       -s    subscribe"
    echo "       -u    unsubscribe"
    echo "       -d    delete entries from data tables also"
    exit 1
}

UnSubscribe()
{
    SYSID=`echo "select sys_id from system where hostname like '$1%';" | mysql ssdb | tail -1`
    if [ "$SYSID" = "" ] ; then
	echo "$TAB1 Can't find System Information for $1"
	exit 1
    fi
    echo "$TAB1 Generating SQL Statement for SYSTEM Table "
    echo "delete from system where sys_id = '$SYSID';" >> $TMPFILENAME
    echo "$TAB1 Generating SQL Statement for event_type Table "
    echo "delete from event_type where sys_id = '$SYSID';" >> $TMPFILENAME
    if [ "$2" = "" ] ; then
	YN=""
	while true
	do
	    if [ "$YN" = "" ] ; then
		echo -n "$TAB1 Do you want to delete data from data tables ? "
		read YN
	    else
		break
	    fi
	done

	if [ "$YN" = "Y" -o "$YN" = "y" ] ; then
	    DELETEENTRIES=Y
	else
	    DELETEENTRIES=N
	fi
    else
	if [ "$2" = "-d" ] ; then
	    DELETEENTRIES=Y
	else
	    DELETEENTRIES=N
	fi
    fi

    if [ "$DELETEENTRIES" = "Y" ] ; then
	echo "$TAB1 Generating SQL Statement for system_data table"
        echo "delete from system_data where sys_id = '$SYSID';" >> $TMPFILENAME
	echo "$TAB1 Generating SQL Statement for event table"
        echo "delete from event where sys_id = '$SYSID';" >> $TMPFILENAME
    fi

    AutoUpdate
}

AutoUpdate()
{
    YN=""
    while true
    do
        if [ "$YN" = "" ] ; then
	    echo -n "$TAB1 Do you want to update SSDB automatically ? "
	    read YN
        else
	    break;
        fi
    done

    if [ "$YN" = "Y" -o "$YN" = "y" ] ; then
        mysql ssdb < $TMPFILENAME
        rm -f $TMPFILENAME
    else
        echo "$TAB1 Please use the following for manual updates "
        echo "$TAB3 mysql ssdb < $TMPFILENAME"
        echo "$TAB3 rm -f $TMPFILENAME"
    fi
}

TMPFILENAME=/usr/tmp/sgmsql.$$
TAB1="\t-->"
TAB2="\t    o"
TAB3="\t      o "

if [ k$1 = "k" ] ; then
    Usage $0
fi

if [ k$1 = "k-h" ] ; then
    Usage $0
fi

if [ $1 = "-s" ] ; then
    echo "--------------------------------------------------------------"
    echo "            System Group Manager - Subscription"
    echo "--------------------------------------------------------------"
else
    echo "--------------------------------------------------------------"
    echo "            System Group Manager - UnSubscription"
    echo "--------------------------------------------------------------"
fi


if [ k$2 = "k" ] ; then
    HOSTNAME=""
else
    HOSTNAME=$2
fi

if [ k$3 = "k" ] ; then
    CLASS=""
else
    CLASS=$3
fi

if [ k$4 = "k" ] ; then
    TYPEFROM=""
else
    TYPEFROM=$4
fi

while true
do
    if [ "$HOSTNAME" = "" ] ; then 
	echo -n "$TAB1 Enter Hostname : "
	read HOSTNAME
    else
	break;
    fi
done

echo  "$TAB1 Gathering variables for $HOSTNAME"

if [ $1 = "-u" ] ; then
    UnSubscribe $HOSTNAME $CLASS
    exit 0
fi

NOHOSTS=`cat /etc/hosts | grep -v ^# | grep -v '^ '| grep $HOSTNAME | wc -l| awk '{print $1}'`

if [ $NOHOSTS -eq 0 ] ; then
    echo "$TAB1 No hosts match your query in /etc/hosts."
    exit 1
fi

if [ $NOHOSTS -gt 1 ] ; then
    echo "$TAB1 More than one host ($NOHOSTS) match your query. Please be specific"
    exit 1
fi


HOSTIPADDR=`cat /etc/hosts | grep -v ^# | grep -v '^ '| grep $HOSTNAME|awk '{print $1}'` 
HOSTNAMEFULL=`cat /etc/hosts | grep -v ^# | grep -v '^ '| grep $HOSTNAME|awk '{print $2}'` 

#
# Get System Information
#

SYSINFOVV=`rsh guest@$HOSTNAMEFULL sysinfo -vv 2>/dev/null`

if [ "$SYSINFOVV" = "" ] ; then
    echo -n "$TAB1 Can't log-in to the guest account of $HOSTNAMEFULL\n"
    TMPSYSID=""
    while true 
    do
	if [ "$TMPSYSID" = "" ] ; then
	    echo -n "$TAB2 Enter System ID (decimal)  : "
	    read TMPSYSID
	else
	    break;
	fi
    done
    SERIALNUM=""
    while true
    do 
	if [ "$SERIALNUM" = "" ] ; then
	    echo -n "$TAB2 Enter System Serial Number : "
	    read SERIALNUM
	else
	    break;
	fi
    done
    IPTYPE=""
    while true
    do
	if [ "$IPTYPE" = "" ] ; then
	    echo -n "$TAB2 Enter IP Type              : "
	    read IPTYPE
	else
	    break;
	fi
    done
else
    TMPSYSID=`echo $SYSINFOVV | awk '{print $1}'`
    SERIALNUM=`echo $SYSINFOVV | awk '{print $2}'`
    IPTYPE=`rsh guest@$HOSTNAMEFULL uname -m | cut -c 3-`
fi

SYSID=`printf "%X" $TMPSYSID`
MAXRECKEY=`echo "select max(rec_key) from system" | mysql ssdb 2>/dev/null | tail -1`
MAXRECKEY=${MAXRECKEY:=1000}
NEXTRECKEY=`expr $MAXRECKEY + 1`

#
# Confirmation of host details
#

echo -n "\n"
echo "$TAB1 The following variables will be entered in System Table: \n"
echo "$TAB2 Next Rec Key  : $NEXTRECKEY"
echo "$TAB2 System ID     : $SYSID"
echo "$TAB2 Serial Number : $SERIALNUM"
echo "$TAB2 Host Name     : $HOSTNAMEFULL"
echo "$TAB2 IP Address    : $HOSTIPADDR"
echo "$TAB2 IP Type       : $IPTYPE"
echo -n "\n"

YN=""

while true
do
    if [ "$YN" = "" ] ; then
	echo -n "$TAB2 Are there variables OK (Y/N) ? "
	read YN
    else 
	if [ "$YN" = "Y" -o "$YN" = "y" ] ; then
	    break
	else
	    exit 1
	fi
    fi
done

echo -n "\n"
echo "$TAB1 Generating SQL Statement for SYSTEM Table "
echo "insert into system values ($NEXTRECKEY,'$SYSID',$IPTYPE,'$SERIALNUM','$HOSTNAMEFULL','$HOSTIPADDR',1,0,`/var/adm/avail/amtime1970`);" > $TMPFILENAME

echo "$TAB1 Time to enter Classes & Types of Events to subscribe"

YN="Y"

while true
do
    if [ "$YN" = "Y" -o "$YN" = "y" ] ; then
	while true
	do
	    if [ "$CLASS" = "" ] ; then
		echo -n "$TAB3 Enter Class Code                  : "
		read CLASS
	    else
		break
	    fi
	done
	while true
	do
	    if [ "$TYPEFROM" = "" ] ; then
		echo -n "$TAB3 Enter Starting Type Code for $CLASS : "
		read TYPEFROM
	    else
		break
	    fi
	done
	TYPETO=$TYPEFROM
	        echo -n "$TAB3 Enter Ending Type Range for  $CLASS : "
	read TYPETO
	if [ "$TYPETO" = "" ] ; then
	    TYPETO=$TYPEFROM
	fi

	if [ $TYPETO -lt $TYPEFROM ] ; then
	    TMPTYPE=$TYPEFROM
	    TYPEFROM=$TYPETO
	    TYPETO=$TMPTYPE
	fi
	echo -n "\n"
	echo "$TAB1 Generating SQL Statements for EVENT_TYPE Table"
	while true
	do
	    if [ $TYPEFROM -le $TYPETO ] ; then
		echo -n "insert into event_type values('$SYSID', " >> $TMPFILENAME
		echo    "$TYPEFROM, $CLASS, ' ', 0, 0, 0, -1, 1);" >> $TMPFILENAME
		TYPEFROM=`expr $TYPEFROM + 1`
	    else
		break
	    fi
	done

	YN=""
	while true
	do
	    if [ "$YN" = "" ] ; then
		echo -n "$TAB1 Do you want to enter more classes ? "
		read YN
	    else
		CLASS=""
		TYPEFROM=""
		TYPETO=""
		break
	    fi
	done
    else
	break;
    fi
done

AutoUpdate

exit 0
