#! /sbin/sh
#
#
USER_NAME_FILE=/usr/CMW/CMWuser-name
USER_MAC_FILE=/usr/CMW/CMWuser-mac
USER_CAP_FILE=/usr/CMW/CMWuser-cap
USER_SITECHECK=/usr/CMW/CMWuser-sitecheck
USER_PASSWD=/usr/CMW/CMWuser-passwd
USER_FILES="$USER_NAME_FILE $USER_MAC_FILE $USER_CAP_FILE \
	    $USER_SITECHECK $USER_PASSWD"

CMWSESSION=/usr/bin/X11/CMWsession
CMWLOGIN=/usr/bin/X11/CMWlogin
XINIT=/usr/bin/X11/xinit
MACLBLDEVS=/usr/sbin/maclbldevs
CMWUID=cmwlogin
LOGINCAPS=CAP_XTCB,CAP_PRIV_PORT,CAP_AUDIT_WRITE+pi
XSHM=0x000009a4

SU=/sbin/su
SH=/sbin/sh
RM=/sbin/rm
CAT=/sbin/cat
ECHO=/sbin/echo
SAT_ECHO=/usr/bin/sat_echo
IPCRM=/usr/sbin/ipcrm
CONSOLE=/dev/null

# Don't start CMWlogin on systems without graphics
if /sbin/chkconfig windowsystem ; then
	:
else
	exit 0
fi

while true
do
	#
	# Be sure the CMW directory is clean.
	# Set up device attributes.
	#
	$RM -f $USER_FILES > $CONSOLE 2>&1
	$MACLBLDEVS $CMWUID dblow
	$IPCRM -M $XSHM
	#
	# Figure out who to be....
	#
	$XINIT $SH -c "$SU - $CMWUID -C $LOGINCAPS -c $CMWLOGIN" > $CONSOLE 2>&1

	if [ -f $USER_NAME_FILE -a -f $USER_MAC_FILE -a -f $USER_CAP_FILE ]
	then
		USER_NAME=`$CAT $USER_NAME_FILE`
		USER_MAC=`$CAT $USER_MAC_FILE`
		#
		# Start user's session
		#
		$ECHO "Successful CMW Login" | \
		    $SAT_ECHO -S sat_ae_identity > $CONSOLE 2>&1
		$MACLBLDEVS $USER_NAME $USER_MAC
		$IPCRM -M $XSHM
		$XINIT $SH -c \
		    "$SU - $USER_NAME -M $USER_MAC -S -c $CMWSESSION" > \
		    $CONSOLE 2>&1
		$ECHO "Successful CMW Logout" | \
		    $SAT_ECHO -S sat_ae_identity > $CONSOLE 2>&1
	else
		#
		# Looks like the login failed.
		#
		$ECHO "Failed CMW Login" | \
			$SAT_ECHO -F sat_ae_identity > $CONSOLE 2>&1
	fi
done
