#!/bin/sh
#
# Copyright (c) 2000-2002 by Sun Microsystems, Inc.
# All rights reserved.
#
#  Sun StorEdge(tm) Configuration Service
#
#  relocation-sensitive mofreg script.
#
#ident	"@(#)mofreg	1.3 02/05/30"

# We do not want to exit while doing something.
#
trap 'echo QUIT to exit' 1 2 15

ECHO=/bin/echo
GREP=/usr/bin/grep
CP=/usr/bin/cp

RELOCFLG=
RELOC=${RELOC}
if [ -n "${RELOC}" ] ; then
    RELOCFLG="-r ${RELOC}"
fi

JAVA_HOME=
export JAVA_HOME

BASEDIR=
export BASEDIR

list=`/bin/pkginfo $RELOCFLG -l SUNWwbcor* \
			| grep PKGINST | sed -e "s/PKGINST://"`
if pkginfo ${RELOCFLG} -q SUNWdm
then
    _BASEDIR=`/bin/pkgparam $RELOCFLG SUNWdm BASEDIR 2> /dev/null`
    _PARENTDIR=`/bin/pkgparam $RELOCFLG SUNWdm PARENTDIR 2> /dev/null`
    REL=${_BASEDIR}/${_PARENTDIR}
    foundpkg=
    JAVA_HOME=${RELOC}/${REL}/j2se

    for pkg in $list ; do
	BASEDIR=`/bin/pkgparam $RELOCFLG $pkg BASEDIR 2>/dev/null`
	if [ "$BASEDIR" = "$REL" ] ; then
	    foundpkg=$pkg
	    break
	fi
    done

    if [ -z "$foundpkg" ] ; then
	$ECHO $0: ERROR: could not found installed version of WBEM Services >&2
	exit 2
    fi
else
    $ECHO "$0: ERROR: Configuration Service package <SUNWdm> not found." >&2
    exit 2
fi

# Get the path to sadm directory
#
SADMDIR=${BASEDIR}/usr/sadm

USRLIB=${SADMDIR}/lib
WBSERLIB=${SADMDIR}/lib/wbem
WBSERBIN=${SADMDIR}/bin

JAVACMD=
#
setJavaPath() {
    if [ -z "$JAVA_HOME" ]; then
	$ECHO "$0: ERROR: could not determine valid JAVA_HOME" >&2
	exit 2
    fi
    JAVAPATH=${JAVA_HOME}/bin
    JAVALIBS=${JAVA_HOME}/lib
    PATH=${JAVAPATH}:${PATH}:$OLDPATH
    LD_LIBRARY_PATH=${JAVALIBS}:${LD_LIBRARY_PATH}
    export PATH
    export LD_LIBRARY_PATH
    JAVACMD="java -DBaseDir=${BASEDIR} -Djavax.wbem.rmiport=8181"
}
# --------- end setJavaPath


OLDPATH=$PATH
PATH=${JAVA_HOME}/bin:/usr/sbin:/sbin:/usr/bin:${WBSERLIB}:${WBSERBIN}

LD_LIBRARY_PATH=${WBSERLIB}:${LD_LIBRARY_PATH}
CLASSPATH=${WBSERLIB}:${WBSERLIB}/jdk1.4_xtra.jar:${WBSERLIB}:${USRLIB}/wbem.jar:${WBSERLIB}/cimom.jar:${USRLIB}/xml.jar:${WBSERLIB}/extension:${WBSERLIB}/sunwbem.jar

export PATH
export LD_LIBRARY_PATH
export CLASSPATH

WBEMLOGROOT=${BASEDIR}/var/sadm/wbem/logr
REGDIRROOT=${WBEMLOGROOT}/preReg
UNREGDIRROOT=${WBEMLOGROOT}/preUnreg

USERID=`/usr/bin/id | $GREP '^uid=0(root)'`
if [ -z "$USERID" ]; then
    if [ "$1" != "-s" ]
    then
	$ECHO "You must be root to run this command"
	exit 1
    fi
fi

usage() {
    $ECHO "Usage: $0 { -r tag file | -u tag [file] | -s }"
    exit 1
}

checkTag() {
    if [ -z "$TAG" ]
    then
	usage
    fi
    CHECKUNREG=`echo $TAG | $GREP '.*\.unreg$'` 
    if [ -n "$CHECKUNREG" ]
    then
	    $ECHO Tag cannot end with unreg
	    exit 1
    fi
}

case "$1" in
'-r')
	TAG="$2"
	checkTag
	FILE="$3"
	if [ -z "$FILE" ]
	then
	    usage
	fi
	if [ ! -f "$FILE" ]
	then
	    $ECHO $FILE does not exist
	    exit 1
	fi
	mkdir -p ${REGDIRROOT}/${TAG}
	cp $FILE ${REGDIRROOT}/${TAG}
	;;

'-u')
	TAG="$2"
	checkTag
	FILE="$3"
	if [ ! -z "$FILE" ] && [ ! -f "$FILE" ]
	then
	    $ECHO $FILE does not exist
	    exit 1
	fi
	mkdir -p ${UNREGDIRROOT}/${TAG}
	if [ ! -z "$FILE" ]
	then
	    cp $FILE ${UNREGDIRROOT}/${TAG}
	fi
	;;

-s)
	setJavaPath
	$JAVACMD CIMOMMofReg localhost root
	EXITVAL=$?
	$ECHO
	if [ $EXITVAL -ne 0 ]; then
	    $ECHO Mofreg failure
	else
	    $ECHO Mofreg success
	fi
	exit $EXITVAL
	;;

*)
	usage
	;;
esac
exit 0
