#!/bin/bash
#ver_num:105
# start and stop all application of the Exlibris
cd `dirname $0`

oracle_proc () {
echo ""
echo "Oracle $1"
echo ""

_LINE=$2 
ORACLE_OWNER=`echo $_LINE | awk -F: '{print $3}' -`
ORACLE_HOME=`echo $_LINE | awk -F: '{print $4}' -`
export ORACLE_HOME

case "$1" in
'start')
#/bin/su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start >& $ORACLE_HOME/lsnrc"
/bin/su - $ORACLE_OWNER -c "bash $ORACLE_HOME/bin/dbstart $ORACLE_HOME"

;;
'stop')
/bin/su - $ORACLE_OWNER -c "bash $ORACLE_HOME/bin/dbshut $ORACLE_HOME"
/bin/su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
;;
esac

}
#verde
verde_proc () {

echo ""
echo "$3 $1"
echo ""

os=`/bin/uname`

if [ "$os" = "Linux" ] ; then
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
  suff="-f"
else
  suff=""
fi

_LINE=$2
EXLIBRIS_OWNER=`echo $_LINE | awk -F: '{print $3}' -`
start_ut=`echo $_LINE | awk -F: '{print $5}' -`
stop_ut=`echo $_LINE | awk -F: '{print $6}' -`
IGNORE=Y
verde_dev=`echo $_LINE | awk -F: '{print $4}' -`

case "$1" in
'start')
/bin/su $suff $EXLIBRIS_OWNER -c "nohup ${verde_dev}/home/system/bin/${start_ut}  >& ${verde_dev}/log/${start_ut}.log"
;;
'stop')
/bin/su $suff $EXLIBRIS_OWNER -c "nohup ${verde_dev}/home/system/bin/${stop_ut} >& ${verde_dev}/log/${stop_ut}.log"
;;
esac

}

#metalib dtl aleph ill 
exlibris_proc () {

echo ""
echo "$3 $1"
echo ""

os=`/bin/uname`

if [ "$os" = "Linux" ] ; then
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
  suff="-f"
else
 suff=""
fi

_LINE=$2
prod=$3
start_ut=`echo $_LINE | awk -F: '{print $5}' -`
stop_ut=`echo $_LINE | awk -F: '{print $6}' -`

EXLIBRIS_OWNER=`echo $_LINE | awk -F: '{print $3}' -`
IGNORE=Y
alephe_dev=`echo $_LINE | awk -F: '{print $4}' -`
export IGNORE

if [ "$prod" = "metalib" ] ; then
   metalib_dev=$alephe_dev
   export metalib_dev
   alephe_root=metalib_conf
fi
if [ "$prod" = "arc" ] ; then
   arce_dev=$alephe_dev
   export arce_dev
   alephe_root=arce
fi
if [ "$prod" = "primo" ] ; then
   primoe_dev=$alephe_dev
   export primoe_dev
   alephe_root=primoe
fi
if [ "$prod" = "dtl" ] ; then
   dtle_dev=$alephe_dev
   export dtle_dev
   alephe_root=dtle
fi
if [ "$prod" = "dps" ] ; then
   dps_dev=$alephe_dev
   export dps_dev
   alephe_root=profile
fi
if [ "$prod" = "aleph" -o "$prod" = "ill" ] ; then
   export alephe_dev
   alephe_root=alephe
fi

case "$1" in
'start')
/bin/su $suff $EXLIBRIS_OWNER -c "nohup ${alephe_dev}/${alephe_root}/${start_ut} >& ${alephe_dev}/${alephe_root}/${start_ut}.log"
;;
'stop')
/bin/su $suff $EXLIBRIS_OWNER -c "nohup ${alephe_dev}/${alephe_root}/${stop_ut}  >& ${alephe_dev}/${alephe_root}/${stop_ut}.log"
;;
esac

}



apache_proc () {
echo ""
echo "apache $1"
echo ""
os=`/bin/uname`

_LINE=$2

INITLOG_ARGS=""
EXLIBRIS_OWNER=`echo $_LINE | awk -F: '{print $3}' -`
http=`echo $_LINE | awk -F: '{print $4}' -`
alephe_dev=`echo $_LINE | awk -F: '{print $5}' -`
aleph_dev_a=`echo $_LINE | awk -F: '{print $6}' -`
aleph_dev=`echo "$alephe_dev"\/"$aleph_dev_a"`
apache_start=`echo $_LINE | awk -F: '{print $7}' -`
apache_stop=`echo $_LINE | awk -F: '{print $8}' -`

IGNORE=Y
export IGNORE
export aleph_dev
if [ "$EXLIBRIS_OWNER" = "root" ] ; then
   echo $alephe_dev  | grep metalib > /dev/null
   if [ "$?" = "0" ] ; then
      metalib_dev=$alephe_dev
      export metalib_dev
      http_root=$alephe_dev/apache
   fi
   echo $alephe_dev  | grep m2_ > /dev/null
   if [ "$?" = "0" ] ; then
      metalib_dev=$alephe_dev
      export metalib_dev
      http_root=$alephe_dev/apache
   fi
   echo $alephe_dev  | grep primo > /dev/null
   if [ "$?" = "0" ] ; then
      primo_dev=$alephe_dev
      export primo_dev
      http_root=$alephe_dev/primoe/apache
   fi
   echo $alephe_dev  | grep dps > /dev/null
   if [ "$?" = "0" ] ; then
      dps_dev=$alephe_dev
      export dps_dev
      http_root=$alephe_dev/pds/apache
   fi
   echo $alephe_dev  | grep arc > /dev/null
   if [ "$?" = "0" ] ; then
      arc_dev=$alephe_dev
      export arc_dev
      http_root=$alephe_dev/arce/apache
   fi
   echo $alephe_dev  | grep dtl > /dev/null
   if [ "$?" = "0" ] ; then
      dtl_dev=$alephe_dev
      export dtl_dev
      http_root=$alephe_dev/dtle/apache
   fi
   echo $alephe_dev  | grep aleph > /dev/null
   if [ "$?" = "0" ] ; then
      export alephe_dev
      http_root=$alephe_dev/alephe/apache
   fi
   echo $alephe_dev  | grep ill > /dev/null
   if [ "$?" = "0" ] ; then
      export alephe_dev
      http_root=$alephe_dev/alephe/apache
   fi
fi

if [ "$EXLIBRIS_OWNER" = "metalib" ] ; then
   metalib_dev=$alephe_dev
   export metalib_dev
   http_root=$alephe_dev/apache
fi

if [ "$EXLIBRIS_OWNER" = "primo" ] ; then
     primo_dev=$alephe_dev
     export primo_dev
     http_root=$alephe_dev/primoe/apache
fi

if [ "$EXLIBRIS_OWNER" = "dps" ] ; then
     dps_dev=$alephe_dev
     export dps_dev
     http_root=$alephe_dev/pds/apache
fi

if [ "$EXLIBRIS_OWNER" = "crn" ] ; then
     arc_dev=$alephe_dev
     export arc_dev
     http_root=$alephe_dev/arce/apache
fi

if [ "$EXLIBRIS_OWNER" = "dtl" ] ; then
     dtl_dev=$alephe_dev
     export dtl_dev
     http_root=$alephe_dev/dtle/apache
fi
if [ "$EXLIBRIS_OWNER" = "aleph" -o "$EXLIBRIS_OWNER" = "ill" ] ; then
     export alephe_dev
     http_root=$alephe_dev/alephe/apache
fi

RETVAL=0

case "$os" in
'SunOS' | 'AIX')
 suff=""
 suff_start=""
 case "$1" in
  start)
        if [ ${EXLIBRIS_OWNER} = "root" ] ; then
             ${http_root}/bin/${apache_start}
        else
             su ${suff} ${EXLIBRIS_OWNER} -c "$http_root/bin/${apache_start}"
        fi
        RETVAL=$?
        return $RETVAL
        ;;
  stop)
       ${http_root}/bin/${apache_stop} stop
       RETVAL=$?
       ;;
 esac
;;
'Linux')

 . /etc/rc.d/init.d/functions
 . /etc/sysconfig/network
 suff="-f"
 case "$1" in
  start)
        if [ ${EXLIBRIS_OWNER} = "root" ] ; then
             ${http_root}/bin/${apache_start} 
        else
             su ${suff} ${EXLIBRIS_OWNER} -c "$http_root/bin/${apache_start}"
        fi

        RETVAL=$?
        [ $RETVAL = 0 ] && touch /var/lock/subsys/${http}
        return $RETVAL
        ;;
  stop)
        ${http_root}/bin/${apache_stop} stop
        RETVAL=$?
        rm ${http_root}/logs/${http}.pid > /dev/null
        echo
 [ $RETVAL = 0 ] && rm -f /var/lock/subsys/${http}
        ;;
        esac
;;
esac

} 

run_proc () {
  name_app=$1
  proc_mode=$2

  for app in ${name_app}
  do

    cat $DATA_FILE | while read LINE
    do
      case $LINE in
        \#*)                ;;        #comment-line in oratab
        *)
#       Proceed only if third field is 'Y'.
        if [ "`echo $LINE | awk -F: '{print $2}' -`" = "${app}" ] ; then
          if [ "`echo $LINE | awk -F: '{print $1}' -`" = "Y" ] ; then
             case  ${app} in
               "oracle")  oracle_proc     $proc_mode $LINE ;;
               "aleph")   exlibris_proc   $proc_mode $LINE $app ;;
               "dtl")     exlibris_proc   $proc_mode $LINE $app ;;
               "dps")     exlibris_proc   $proc_mode $LINE $app ;;
               "verde")   verde_proc      $proc_mode $LINE $app ;;
               "primo")   exlibris_proc   $proc_mode $LINE $app ;;
               "arc")     exlibris_proc   $proc_mode $LINE $app ;;
               "metalib") exlibris_proc   $proc_mode $LINE $app ;; 
               "ill")     exlibris_proc   $proc_mode $LINE $app ;;
               "apache")  apache_proc     $proc_mode $LINE ;;
             esac 
            #echo $LINE
          fi
        fi
        ;;
      esac
    done

  done

  return 0

}

### begin
echo ""
DATA_FILE=./init.dat
#Set path if path not set (if called from /etc/rc)
case $PATH in
    "") PATH=/bin:/usr/bin:/etc
        export PATH ;;
esac
name_app_start="oracle apache aleph metalib dtl ill primo arc verde dps" 
name_app_stop="dtl metalib aleph ill primo arc dps verde apache oracle"

case "$1" in
'start')
        run_proc "$name_app_start" $1
        ;;

'stop')
        run_proc "$name_app_stop"  $1
        ;;

*)
        echo "Usage: $0 { start | stop }"
        ;;
esac
exit 0

