#!/bin/bash
# **********************************************************************
# * TEXTLIB WEB szerver indts - Linux alatt  V1.01
# *    Hasznlat: tl_www
# **********************************************************************
 
# Min. X masodpercet futtott, akkor indithatjuk ujra, ha elszallt.
TLWWWMINTIME=3
# Max. ennyiszer inditjuk ujra elszallas miatt.
TLWWWMAXNUM=15
# Hanyszor indult ujra
TLWWWNUM=0

# valtozok beallitasa
. /usr/share/tlwww/tlwsetpar

# Ha kell levelet kuldeni, akkor kuld.
SendErrMail()
{
  if [ "$MAILPROG" != "" ]; then
     if [ "$TLWWWMAILTO" == "" ]; then TLWWWMAILTO="graffz@infoker.hu"; fi
     tail -20 "$TLWWWLOG" | $MAILPROG -s "TLWWW kilep:$1" "$TLWWWMAILTO"
  fi
}

# van-e TLWWW program? Ha van adatbazishoz tartozo, akkor az...
if [ "$PROGNAME2" != "" -a "$PROGNAME2" != "$PROGNAME" ]; then
    if [ -x $TLWDIR/$PROGNAME2 ]; then
       echo "Dedikalt tlwww:$PROGNAME2"
       PROGNAME=$PROGNAME2
    fi
fi
# van-e tlwww program
[ -f $TLWDIR/$PROGNAME ] || \
    { echo "--- Nincs $PROGNAME!"  >> $TLWWWLOG ; exit 1; }

# Ne fusson a TLWWW - ezen az adatbazison
PidRun $TLWWWPID
if [ -f $TLWWWPID ]; then
  echo "!!! Fut mar a TLWWW$ext! ($TLWWWPID letezik)" >> $TLWWWLOG
  exit 1;
fi

# Corefile legyen, ha root futtatja
if [ -f $TLWCORERUN -a "$UID" == "0" ]; then
  ulimit -c unlimited >> $TLWWWLOG 2>> $TLWWWLOG
  ULIMIT=`ulimit -c`
  echo "*** ulimit -c: $ULIMIT" >> $TLWWWLOG
  echo "Coredump-os futas ($TLWCORERUN miatt): $TLWCOREPATH" >> $TLWWWLOG
  mkdir $TLWCOREPATH 2> /dev/null
  chmod 777 $TLWCOREPATH 2> /dev/null
  chgrp textlib $TLWCOREPATH/* 2> /dev/null
  chmod g+r $TLWCOREPATH/* 2> /dev/null
  chmod ug-s $TLWDIR/$PROGNAME
  echo "$TLWCOREPATH/%e-%t-%s.core" > /proc/sys/kernel/core_pattern
  echo "*** Inditas: Coredump ($TLWCOREPATH); S jog atallitva!" >> $TLWWWLOG
else
  if [ "$UID" == "0" ]; then
     chmod ug+s $TLWDIR/$PROGNAME
  fi
  echo "*** Inditas: normal szerver indul (UID: $UID)" >> $TLWWWLOG
fi			     

### itt indul tenylegesen
# g-tlwww futtatasa - ciklikusan a kilepesig
while [ 1 ]; do
    rm -f $TLWWWSOCK
    echo "--- `date` - TLWWW$par indul"  >> $TLWWWLOG
    TLWWWNUM=$(($TLWWWNUM+1))
    TLWWWSTART=`date +%s`
    $TLWDIR/$PROGNAME $par $TLWWWPAR $TLDBPAR $1 $2 $3 $4 >> $TLWWWLOG
    RET=$?
    TLWWWSTOP=`date +%s`
    TLWWWTIME=$(($TLWWWSTOP-$TLWWWSTART))
    echo "!!! `date` - TLWWW$par ret: $RET." >> $TLWWWLOG
    PidRun $TLWWWPID
    # 64 = kilepes, mert masik tlwww indult
    if (( RET == 64 )) ; then
         echo "!!! TLWWW/64 kilps volt, $TLWWWSOCK megmarad!" >> $TLWWWLOG
         SendErrMail $RET
    else
         rm -f $TLWWWSOCK
    fi
    # 139 = elszallas volt, pl. sigsegv
    #if (( RET == 139 || RET >= 224 )); then
    if (( RET == 139 )); then
      TIME_OK=$(($TLWWWTIME>=$TLWWWMINTIME || $TLWWWTIME<0 ));
      NUM_OK=$(($TLWWWNUM<$TLWWWMAXNUM));
      if [ "$TIME_OK" == "1" -a "$NUM_OK" == "1" ]; then
         echo "!!! Ujrainditas 5 mp mulva ($TLWWWNUM,$TLWWWTIME)" >> $TLWWWLOG
         if [ "$UID" == "0" ]; then
            chgrp textlib $TLWCOREPATH/* 2> /dev/null
            chmod g+r $TLWCOREPATH/* 2> /dev/null
         fi
         sleep 5
      else
        echo "!!! Ujrainditas nincs ($TLWWWNUM db,$TLWWWTIME sec)" >> $TLWWWLOG
        break;
      fi
      SendErrMail $RET
    else
       echo "--- `date` - TLWWW$par vege: $RET" >> $TLWWWLOG
       if [ "$UID" == "0" ]; then
         echo "S visszaallitasa" >> $TLWWWLOG
         chmod ug+s $TLWDIR/$PROGNAME
       fi   
       break;
    fi
done

#vege
