#
# TLZ3950: /etc/init.d/textlib-z3950 lenyege
#

#:::::: Adatbazis nevenek kitalalasa
. /usr/share/tlz3950/tlzsetpar

#::::::: Fix beallitasok ::::::
PATH="/sbin:/bin:/usr/sbin:/usr/bin"

#:::::::: functions :::::::::::

# -- inditas --
tlz3950_start()
{
  echo -e "\n\n\n\n*** textlib-z3950$par $1 $2 $3 $4 $5 : `date`" >> $TLZ3950LOG

  if [ ! -x $TLMDIR/$SCRIPTNAME ]; then
     echo "Nincs futtathato $TLMDIR/$SCRIPTNAME" >> $TLZ3950LOG
     exit 5
  fi
  if [ ! -x $TLMDIR/$PROGNAME ]; then
     echo "Nincs futtathato $TLMDIR/$PROGNAME" >> $TLZ3950LOG
     exit 5
  fi

  echo -n "TextLib   Z3950$par: inditas ..."

  $TLMDIR/$SCRIPTNAME $par $1 $2 $3 $4 2>> $TLZ3950LOG &

  # nezzuk, elindult-e a program
  cnt=0
  PidRun $TLZ3950PID
  while [ $cnt -lt 5 -a ! -f $TLZ3950PID ]; do
      cnt=$[$cnt+1]; sleep 1;
      PidRun $TLZ3950PID
  done
  if [ $cnt -ge 5 ]; then
      echo " nem indult el"
      exit 1
  else
      echo " OK"
      touch $TLLOCKFILE 2> /dev/null
      chgrp textlib $TLLOCKFILE 2> /dev/null
      chmod g+rw $TLLOCKFILE 2> /dev/null
  fi
}

# -- leallitas --
tlz3950_stop()
{
   if [ ! -x $TLMDIR/g-tlkill.exe ]; then
       echo "Nincs futtathato $TLMDIR/g-tlkill.exe" >> $TLZ3950LOG
       exit 5
   fi

   echo -n "TextLib   Z3950$par: leallitas ..."

   $TLMDIR/g-tlkill.exe `cat $TLZ3950PID`

   # sikerult-e leallitani?
   cnt=0
   PidRun $TLZ3950PID
   while [ $cnt -lt 5 -a -f $TLZ3950PID ]; do
      cnt=$[$cnt+1];
      sleep 1;
      PidRun $TLZ3950PID
   done

   # Ha nem allt le, probaljuk a sima kill: ABRT es KILL
   PidRun $TLZ3950PID
   if [ -f $TLZ3950PID ]; then
      echo -n " ABRT"
      kill -ABRT `cat $TLZ3950PID` 2> /dev/null
      sleep 1
      PidRun $TLZ3950PID
      if [ -f $TLZ3950PID ]; then
        echo -n " KILL"
        kill -KILL `cat $TLZ3950PID` 2> /dev/null
        sleep 1
      fi
   fi

   # Na most mar leallt?
   PidRun $TLZ3950PID
   if [ -f $TLZ3950PID ]; then
      echo " leallitasa sikertelen."
      exit 1;
   else
      echo " OK"
      rm -f $TLLOCKFILE 2> /dev/null
   fi
}

# -- info ---
print_log()
{
   ## Mutassuk meg a TLZ3950LOG veget - ha mar van
   if [ -s $TLZ3950LOG ]; then
       tail -n 15 $TLZ3950LOG
   elif [ -s $TLZ3950LOG.0 ]; then
        tail -n 15 $TLZ3950LOG.0
   elif [ -s $TLZ3950LOG.1 ]; then
        tail -n 15 $TLZ3950LOG.1
   else
       echo "Nincs $TLZ3950LOG - A TLZ3950$par meg nem futott"
   fi
}

print_tlgw_log()
{
  echo "Nincs tlgw z3950-ben"
}

print_pid()
{
  unset X
  ls /var/run/tlz3950*/*.pid 2> /dev/null > /dev/null
  if [ $? == 0 ]; then
    xxx=$(ls /var/run/tlz3950*/*.pid)
    xxx=${xxx//\/var\/run\/}
    xxx=${xxx//textlib\.}
    xxx=${xxx//textlib\/}
    xxx=${xxx//\.pid/}
    X="$X $xxx"
  fi
  ls /home/textlib/.textlib/tlz3950*.pid 2> /dev/null > /dev/null
  if [ $? == 0 ]; then
    xxx=$(ls /home/textlib/.textlib/tlz3950*.pid)
    xxx=${xxx//\/home\/textlib\/\.textlib\/}
    xxx=${xxx//\.pid/}
    X="$X $xxx"
  fi
  if [ "$X" != "" ]; then
    echo $X
  else
    echo "Nem fut egyetlen TLZ3950 sem"
  fi
}

#--- ---
print_ver()
{
   unset LOGFILE
   if [ -s $TLZ3950LOG ]; then
        LOGFILE=$TLZ3950LOG
   elif [ -s $TLZ3950LOG.0 ]; then
        LOGFILE=$TLZ3950LOG.0
   elif [ -s $TLZ3950LOG.1 ]; then
        LOGFILE=$TLZ3950LOG.1
   fi
   if [ "$LOGFILE" != "" ]; then
       grep 'Z39.50 Szerver' $LOGFILE | tail -n 1
   else
       echo "Log fajl nincs?"
   fi
}

#:::::::: Start :::::::::::::::

touch $TLZ3950LOG 2> /dev/null
# Ez sikerul minden textlib group tagnak.
chgrp textlib $TLZ3950LOG 2> /dev/null
# Ez csak a root-nak sikerul
chmod g+rw $TLZ3950LOG 2> /dev/null

PidRun $TLZ3950PID
case "$1" in
    start)
        if [ -f $TLZ3950PID ]; then
            echo "TextLib   Z3950$par: fut"
            exit 0
        fi
        if [ "$2" == "info" ]; then
            tlz3950_start $3 $4 $5 $6
            sleep 1
            print_log
        else
            tlz3950_start $2 $3 $4 $5
        fi;;


     restart|force-reload)
        if [ ! -f $TLZ3950PID ]; then
            echo "TextLib   Z3950$par: nem futott."
        else
          tlz3950_stop
          sleep 1
        fi
        if [ "$2" == "info" ]; then
            tlz3950_start $3 $4 $5 $6
            sleep 1
            print_log
        else
            tlz3950_start $2 $3 $4 $5
        fi;;


    reload)
        ;;


    stop)
        if [ -f $TLZ3950PID ]; then
           tlz3950_stop
        else
           echo "TextLib   Z3950$par: nem fut."
           rm -f $TLLOCKFILE 2> /dev/null
        fi
        if [ "$2" == "info" ]; then
           print_log
        fi;;

    stat|status)
        if [ -f $TLZ3950PID ]; then
           echo "TextLib   Z3950$par: fut."
        else
           echo "TextLib   Z3950$par: nem fut."
           rm -f $TLLOCKFILE 2> /dev/null
        fi;;

    info)
        if [ -f $TLZ3950PID ]; then
           echo "TextLib   Z3950$par: fut."
        else
           echo "TextLib   Z3950$par: nem fut."
           rm -f $TLLOCKFILE 2> /dev/null
        fi
        print_log
        ;;

    list)
        X=`ls -d /var/log/tlz3950*`
        X=${X//\/var\/log\//}
        echo $X
        ;;

    pid|run)
        print_pid
        ;;

    backup|naplo)
        ;;

    tlgw)
        print_tlgw_log
        ;;

    ver)
        print_ver
        ;;

    *)
        echo "tlzvezer [start] [stop] [restart] [info] [stat]"
        exit 1
        ;;
esac
exit 0
