#!/bin/sh
#
# vtund startup script 
#
# chkconfig: 2345 90 10
#
# description: starts vtund with options from %_sysconfdir/sysconfig/vtund
# for more details see vtund(8) and vtund.conf(5)
#
# Peter V. Saveliev <peet@altlinux.ru> 20040111
# Peter V. Saveliev <peet@altlinux.ru> 20040527 - explicit session denotation


# Source function library.
. /etc/init.d/functions

SourceIfNotEmpty /etc/sysconfig/vtund_server

NAME="vtund"
VTUND="/usr/sbin/vtund"
CONFDIR="/etc/sysconfig/vtund"
WRAPPER="/usr/lib/vtund/bug4231.sh"
PIDFILE="/var/run/vtund.pid"
LOCKFILE="/var/lock/subsys/vtund"

[ ! -x "$VTUND" ] && exit 1

calculate_sessions() {
  SESSIONS="server"
  [ -d "$CONFDIR" ] && {
    pushd "$CONFDIR" &>/dev/null
    for i in *; do {
	  [ -f "$i" ] && SESSIONS="$SESSIONS $i"
	} done
  }
}

start() {
  for i in $1; do {
    SESSION="$i"
    case $SESSION in
      server)
        # check if there is need in server:
        [ -z "$SERVER" ] || {
          case $SERVER in
            enable|standalone)
              SOPTIONS="-s"
              ;;
            inetd)
              SOPTIONS="-i"
              ;;
            *)
              ;;
          esac
          SOPTIONS="-n $SOPTIONS $OPTIONS"
        }
        ;;
      *)
        # start client sessions
        [ -d "$CONFDIR" ] && {
	      k="$CONFDIR/$SESSION"
          [ -f "$k" ] && {
            # merge client options
            . $k
            SOPTIONS="$OPTIONS"
            [ -z "$PERSISTENT" ] || SOPTIONS="$SOPTIONS -p"
            [ -z "$TIMEOUT" ]    || SOPTIONS="$SOPTIONS -t $TIMEOUT"
            SOPTIONS="-n $SOPTIONS $SESSION $SERVER"
          }
        }
	    ;;
    esac
    echo -ne "Starting $NAME session [ $SESSION ]\t"
    [ -z "$SOPTIONS" ] || start_daemon --no-announce --name "$NAME" --pidfile "$PIDFILE.$SESSION" --lockfile "$LOCKFILE.$SESSION" --expect-user root -- $WRAPPER -s "$SESSION" -p "$PIDFILE" -d "$VTUND" -- "$SOPTIONS"
  } done
}

stop() {
  for i in $1; do
    SESSION="$i"
    echo -ne "Stopping $NAME session [ $SESSION ]...\t"
    stop_daemon --no-announce --name "$NAME" --pidfile "$PIDFILE.$SESSION" --lockfile "$LOCKFILE.$SESSION" --expect-user root $VTUND
  done
}

restart() {
  stop "$1"
  start "$1"
}

if [ -z "$2" ]; then {
  calculate_sessions
} else {
  SESSIONS="$2"
} fi

case "$1" in
  start)
    start "$SESSIONS"
    ;;

  stop)
    stop "$SESSIONS"
    ;;

  restart)
    restart "$SESSIONS"
    ;;

  status)
    for i in $SESSIONS; do
	  echo -ne "Status $NAME session [ $i ]:\t"
      status --pidfile "$PIDFILE.$i" --expect-user root $VTUND
	done
    ;;

  condstop)
    for i in $SESSIONS; do
      [ -e "$LOCKFILE.$i" ] && stop "$i"
	done
    ;;

  condrestart)
    for i in $SESSIONS; do
      [ -e "$LOCKFILE.$i" ] && restart "$i"
	done
    ;;

  *)
    echo $"Usage: $0 {start|stop|restart|condrestart|condstop|status} [session]"
    exit 1
esac

exit 0

