#!/bin/bash
#
# chkconfig: 2345 95 15
# description: Starts and stops the FreeNX service
# processname: nxserver

### BEGIN INIT INFO
# Provides:          freenx_server
# Required-Start:    sshd
# Required-Stop:     sshd
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: FreeNX Server
# Description:       Cleanup FreeNX Server session database at boot time
### END INIT INFO

# Read the config file
. $(PATH=$(cd $(dirname $0) && pwd):$PATH which nxloadconfig) --

SERVNAME=`basename $0`
AUTH_NAME=$NX_HOME_DIR/.ssh/$SSH_AUTHORIZED_KEYS
LOCKFILE=/var/lock/$SERVNAME
OUTFORMAT=/etc/init.d/outformat
[ -x $OUTFORMAT ] || OUTFORMAT=/usr/share/misc/$SERVNAME.outformat
if which tput >/dev/null && test -x $OUTFORMAT ; then
        . $OUTFORMAT
else
        MOVE_TO_COL(){ :; }
        SETCOLOR_SUCCESS(){ :; }
        SETCOLOR_FAILURE(){ :; }
        SETCOLOR_WARNING(){ :; }
        SETCOLOR_NORMAL(){ :; }
fi

success()
{
        MOVE_TO_COL
        echo -n '[ '
        SETCOLOR_SUCCESS
        echo -n 'DONE'
        SETCOLOR_NORMAL
        echo ' ]'
}

failure()
{
        MOVE_TO_COL
        echo -n '['
        SETCOLOR_FAILURE
        echo -n 'FAILED'
        SETCOLOR_NORMAL
        echo ']'
}

passed()
{
        MOVE_TO_COL
        echo -n '['
        SETCOLOR_WARNING
        echo -n 'PASSED'
        SETCOLOR_NORMAL
        echo ']'
}

start()
{
	#check for first run
	[[ ! ( -e "$AUTH_NAME" ) && ! ( -e "$AUTH_NAME.disabled" ) ]] && $PATH_BIN/nxsetup --install --setup-nomachine-key --auto
	echo -n $"Starting $SERVNAME service: "
	if [ -e $LOCKFILE ] ; then
		passed
		exit 1
	fi
		[ ! -d "/tmp/.X11-unix" ] && mkdir -m1777 /tmp/.X11-unix/
		$PATH_BIN/nxserver --cleanup > /dev/null 2>&1
		$PATH_BIN/nxserver --start > /dev/null 2>&1
		#status_cmd
		ret=`$PATH_BIN/nxserver --status | grep 'run' | wc -l`
		if [ $ret -eq 1 ] ; then
		    touch $LOCKFILE
		    success
		else
		    failure
		fi
}

stop()
{
	echo -n $"Stopping $SERVNAME service: "
	if [ -e $LOCKFILE ] ; then
		$PATH_BIN/nxserver --stop > /dev/null 2>&1
		$PATH_BIN/nxserver --cleanup > /dev/null 2>&1
		ret=`$PATH_BIN/nxserver --status | grep 'run' | wc -l`
		if [ $ret -eq 0 ] ; then
		    rm -f $LOCKFILE
		    success
		else
		    failure
		fi
	else
		passed
	fi
}

case "$1" in
	start)
		start
	;;
	stop)
		stop
	;;
	restart)
	    stop
	    start
	;;
	condrestart)
	    if [ -e $LOCKFILE ] ; then
		stop
		start
	    fi
	;;
	condstop)
	    if [ -e $LOCKFILE ] ; then
		stop
	    fi
	;;
	status)
	    $PATH_BIN/nxserver --status
	;;
	setup)
	    $PATH_BIN/nxsetup --install
	;;
	check)
	    $PATH_BIN/nxsetup --test
	;;
	*)
		echo "Usage: $0 <start|stop|restart|condrestart|condstop|status|setup|check>"
	;;
esac
