Group :: System/Servers
RPM: xrdp
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
#!/bin/sh
# xrdp control script
# Written : 1-13-2006 - Mark Balliet - posicat@pobox.com
# maintaned by Jay Sorg
# chkconfig: 2345 11 89
# description: starts xrdp
XRDP=xrdp
SESMAN=sesman
STARTWM=/etc/X11/xdm/Xsession
XRDP_DIR=/usr/lib/xrdp
#XRDP_DIR=.
LOG=/dev/null
cd $XRDP_DIR
# BUG: sesman generate core file when stopped
ulimit -Sc 0
test -x $XRDP_DIR/$XRDP || echo "$XRDP is not executable"
test -x $XRDP_DIR/$SESMAN || echo "$SESMAN is not executable"
if ! test -x $STARTWM; then
echo "$STARTWM is not executable"
exit 0
fi
xrdp_start()
{
echo -n "Starting: xrdp and sesman ..."
$XRDP_DIR/$XRDP >> $LOG
$XRDP_DIR/$SESMAN >> $LOG
echo "."
sleep 1
return 0;
}
xrdp_debugstart()
{
echo -n "Debug starting: xrdp and sesman ..."
$XRDP_DIR/$SESMAN >> $LOG
$XRDP_DIR/$XRDP -nodaemon
return 0;
}
xrdp_stop()
{
echo -n "Stopping: xrdp and sesman . . "
$XRDP_DIR/$XRDP --kill >> $LOG
$XRDP_DIR/$SESMAN --kill >> $LOG
echo "."
sleep 1
# BUG: sesman don`t stopped!!!!
# is_sesman_running && killall -9 $XRDP_DIR/$SESMAN
is_xrdp_running && killall -9 $XRDP_DIR/$XRDP
# sometime Special Linux fails with full path
is_sesman_running && killall -9 $SESMAN
killall -9 $XRDP_DIR/sessvc
killall -9 Xvnc
return 0;
}
is_xrdp_running()
{
ps ax --noheading | grep -v 'grep' | grep -q -i $XRDP_DIR/$XRDP && return 0 || return 1
}
is_sesman_running()
{
ps ax --noheading | grep -v 'grep' | grep -q -i $XRDP_DIR/$SESMAN && return 0 || return 1
}
check_up()
{
# Cleanup : If sesman isn't running, but the pid exists, erase it.
is_sesman_running || rm -f /var/run/sesman.pid 2>/dev/null
# Cleanup : If xrdp isn't running, but the pid exists, erase it.
is_xrdp_running || rm -f /var/run/xrdp.pid 2>/dev/null
return 0;
}
case "$1" in
start)
check_up
is_xrdp_running && echo "xrdp is already loaded"
is_sesman_running && echo "sesman is already loaded"
xrdp_start
;;
debug)
check_up
is_xrdp_running && echo "xrdp is already loaded"
is_sesman_running && echo "sesman is already loaded"
xrdp_debugstart
;;
stop|condstop)
check_up
is_xrdp_running || echo "xrdp is not loaded."
is_sesman_running || echo "sesman is not loaded."
xrdp_stop
;;
condrestart|restart|condreload)
check_up
echo "Restarting xrdp ..."
xrdp_stop
is_xrdp_running
while [ true ];
do
check_up
sleep 1
is_xrdp_running || break
done
xrdp_start
;;
status)
is_sesman_running && echo "SESMAN running" || echo "SESMAN NOT running"
is_xrdp_running && echo "XRDP running" || echo "XRDP NOT running"
;;
*)
echo "Usage: service xrdp {start|stop|restart|condrestart|condstop}"
exit 1
esac
exit 0