#!/bin/sh
#
# template	Summary of the service.
#
# chkconfig: - 90 10
# description:	multi-line \
#		description \
#		of the service.
# processname: xrdp
# config: /etc/xrdp/.ini
# pidfile1: /var/run/xrdp.pid
# pidfile2: /var/run/sesman.pid

# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=

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

XRDP=xrdp
SESMAN=sesman
STARTWM=/etc/X11/xdm/Xsession
RUNDIR=/usr/lib/xrdp
#RUNDIR=/usr/bin
LOG=/dev/null

SESMAN_PIDFILE=/var/run/$SESMAN.pid
XRDP_PIDFILE=/var/run/$XRDP.pid
SESMAN_LOCKFILE=/var/lock/subsys/$SESMAN
XRDP_LOCKFILE=/var/lock/subsys/$XRDP
RETVAL=0

test -x $RUNDIR/$XRDP ||  echo "$XRDP is not executable"
test -x $RUNDIR/$SESMAN || echo "$SESMAN is not executable"

if ! test -x $STARTWM; then
	failure "$STARTWM is not executable"
  	exit 1
fi

is_xrdp_running()
{
    test -f "$XRDP_PIDFILE" && checkpid `cat $XRDP_PIDFILE 2>/dev/null`
    return $?
}

is_sesman_running()
{
    test -f "$SESMAN_PIDFILE" && checkpid `cat $SESMAN_PIDFILE 2>/dev/null`
    return $?
}

start()
{
#	is_yes "$NETWORKING" || return 0

    echo -n "Starting xrdp services: "
    if is_sesman_running; then
	RETVAL=0
	echo 
    else
        start-stop-daemon --start --quiet --exec $RUNDIR/$XRDP --pidfile $XRDP_PIDFILE --
        RETVAL=$?
    fi
    
    echo -n "Starting sesman services: "
    if is_sesman_running; then
	RETVAL2=0
	echo
    else
        start-stop-daemon --start --quiet --exec $RUNDIR/$SESMAN --pidfile $SESMAN_PIDFILE -- >/dev/null
        RETVAL2=$?
    fi

    if [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] ; then
	success "xrdp startup"
	touch "$XRDP_LOCKFILE"
	touch "$SESMAN_LOCKFILE"
    else
	RETVAL=1
	failure "xrdp startup"
    fi
    echo
    return $RETVAL
}

stop()
{
    stop_daemon --pidfile "$XRDP_PIDFILE" --lockfile "$XRDP_LOCKFILE" -- $RUNDIR/$XRDP --kill
    RETVAL=$?

    stop_daemon --pidfile "$SESMAN_PIDFILE" --lockfile "$SESMAN_LOCKFILE" -- $RUNDIR/$SESMAN --kill
    RETVAL2=$?

    if [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] ; then
	success "xrdp stopped"
    else
	RETVAL=1
	failure "xrdp stopped"
    fi
    echo

    return $RETVAL
}

restart()
{
    stop
    start
}

reload()
{
    restart
} 

check_status()
{
    status --pidfile "$XRDP_PIDFILE" $RUNDIR/$XRDP --
    RET=$?
    status --pidfile "$SESMAN_PIDFILE" $RUNDIR/$SESMAN --
    RET2=$?
    [ $RET -eq 0 -a $RET2 -eq 0 ] && return 0 || return 1
}

# See how we were called.
case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	reload)
		reload
		;;
	restart)
		restart
		;;
	condstop)
		if [ -e "$LOCKFILE" ]; then
			stop
		fi
		;;
	condrestart)
		if [ -e "$LOCKFILE" ]; then
			restart
		fi
		;;
	condreload)
		if [ -e "$LOCKFILE" ]; then
			reload
		fi
		;;
	status)
		check_status
		RETVAL=$?
		;;
	*)
		msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|condreload|status}"
		RETVAL=1
esac

exit $RETVAL
