#!/bin/ksh -p
#
# ident "@(#)utscconfig.ksh	1.2	06/12/06 SMI"
#
# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

PATH="/bin:/usr/bin"
PKGINFO="pkginfo"
PKG="SUNWsrcbp"
MKDIR="mkdir"
RM="rm -f"
LN="ln"

PROGRAM_ID=$(basename $0)
BASEDIR="$($PKGINFO -r $PKG)"
VAR_OPT_UT_DIR="/var/opt/SUNWut"
SRCOM_PCSC_DIR="$VAR_OPT_UT_DIR/srcom_pcsc"

SRCOM_MULTI_LIB="$BASEDIR/SUNWsrcbp/lib/libpcsc-srcomd.so.1"
SRCOM_SINGLE_LIB="$BASEDIR/SUNWsrcbp/lib/libpcsc-srcom.so.1"
USR_LIB_PCSCLITE_LIB="/usr/lib/libpcsclite.so"
USR_LOCAL_PCSCLITE_LIB="/usr/local/lib/libpcsclite.so"

Fatal() {
  print -u2 "$PROGRAM_ID: fatal, $1"
  exit 1
}

Usage() {
  print -u2 "Usage: $PROGRAM_ID $PROGRAM_OPTS"
  exit 1
}

CheckUidIsZero() {
  case "$(id)" in
	'uid=0('*) return 0;;  # uid is zero
	*)         Fatal "must be run as UID 0 (root)";;
  esac
}

DoConfig() {
  typeset STATUS=0

  if [[ ! -s $SRCOM_MULTI_LIB ]]; then
	print "\nPlease make sure SUNWsrcbp package installed correctly\n"
	return 1
  fi

  if [[ -s $USR_LIB_PCSCLITE_LIB ]]; then
	$RM $USR_LIB_PCSCLITE_LIB
  fi

  if [[ -s $USR_LOCAL_PCSCLITE_LIB ]]; then
	$RM $USR_LOCAL_PCSCLITE_LIB
  fi

  $LN -s $SRCOM_MULTI_LIB $USR_LIB_PCSCLITE_LIB
  $LN -s $SRCOM_MULTI_LIB $USR_LOCAL_PCSCLITE_LIB

#
  if [[ -d $VAR_OPT_UT_DIR ]]; then
	if [[ ! -d $SRCOM_PCSC_DIR ]]; then
		$MKDIR -m 755 $SRCOM_PCSC_DIR
	fi
	print "\nConfiguration Successful\n"
  else
	print "\nConfiguration Unsuccessful"
	print "Please make sure Sun Ray Server Software is installed\n"
  fi
  return $STATUS

}

DoUnconfig() {
  typeset STATUS=0

  if [[ ! -s $SRCOM_SINGLE_LIB ]]; then
	print "\nPlease make sure SUNWsrcbp package installed correctly\n"
	return 1
  fi

  if [[ -s $USR_LIB_PCSCLITE_LIB ]]; then
	$RM $USR_LIB_PCSCLITE_LIB
  fi

  if [[ -s $USR_LOCAL_PCSCLITE_LIB ]]; then
	$RM $USR_LOCAL_PCSCLITE_LIB
  fi

  $LN -s $SRCOM_SINGLE_LIB $USR_LIB_PCSCLITE_LIB
  $LN -s $SRCOM_SINGLE_LIB $USR_LOCAL_PCSCLITE_LIB

  print "\nUnconfiguration Successful\n"
  return $STATUS

}

#
# main
#

OPTSTR=":u"
PROGRAM_OPTS="[-u]"

MODE="configure"

while getopts $OPTSTR OPT; do
	case "$OPT" in
	   u) MODE="unconfigure";;
	   \?) Usage;;
	esac
done

shift $(($OPTIND - 1))
if (( $# != 0)); then
	Usage
fi

CheckUidIsZero

if [[ -d /var/adm/log ]] ; then
  LOG_DIR="/var/adm/log"
elif [[ -d /var/log/SUNWut ]] ; then
  LOG_DIR="/var/log/SUNWut"
else
  LOG_DIR="/var/log"
fi


LOGFILE="${LOG_DIR}/${PROGRAM_ID}.$(date '+%Y_%m_%d_%H:%M:%S').log"

case "$MODE" in
	configure)	DoConfig 2>&1 |tee -a $LOGFILE;;
	unconfigure)	DoUnconfig 2>&1 |tee -a $LOGFILE;;
esac


# end
