|
|
|
@ -7,13 +7,28 @@ TTYNUM=${2:-7}
|
|
|
|
|
# number of virtual console
|
|
|
|
|
DISPLAYNUM=${3:-\:0}
|
|
|
|
|
# write pid for init.d/xdm (detect X for this xautologin)
|
|
|
|
|
( pgrep -f "X ${DISPLAYNUM} vt${TTYNUM}" ||
|
|
|
|
|
pgrep -f "X*vt${TTYNUM}" ) >/var/run/xinit.pid
|
|
|
|
|
echo $BASHPID >/var/run/bash.pid
|
|
|
|
|
|
|
|
|
|
# rerun x session for XUSER
|
|
|
|
|
while true
|
|
|
|
|
MAINLOOP=1
|
|
|
|
|
killXserver()
|
|
|
|
|
{
|
|
|
|
|
KILLXPID=$XPID
|
|
|
|
|
XPID=
|
|
|
|
|
MAINLOOP=
|
|
|
|
|
kill -9 $KILLXPID &>/dev/null
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trap killXserver SIGTERM SIGINT SIGQUIT
|
|
|
|
|
|
|
|
|
|
# rerun x session for XUSER while not shutdown and bash not receivce TERM
|
|
|
|
|
while id $XUSER &>/dev/null &&
|
|
|
|
|
[[ -n $MAINLOOP ]] &&
|
|
|
|
|
[[ "$(rc-status -r)" != "shutdown" ]]
|
|
|
|
|
do
|
|
|
|
|
# perform user profile setting up
|
|
|
|
|
X ${DISPLAYNUM} vt${TTYNUM} &
|
|
|
|
|
XPID=$!
|
|
|
|
|
export DISPLAY=${DISPLAYNUM}
|
|
|
|
|
env USER=${XUSER} /usr/share/calculate/xdm/xdm --login || break
|
|
|
|
|
# write pam enviroment for pam_ck_connector
|
|
|
|
|
cat >/home/${XUSER}/.pam_environment <<EOF
|
|
|
|
@ -37,11 +52,14 @@ EOF
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
# run script start xsession
|
|
|
|
|
source /usr/bin/startx'
|
|
|
|
|
source /usr/bin/startx' &
|
|
|
|
|
# wait for right work trap SIGTERM
|
|
|
|
|
wait $!
|
|
|
|
|
# remove user from utmp and wtmp
|
|
|
|
|
sessreg -d -l ${DISPLAYNUM} ${XUSER}
|
|
|
|
|
# perform logout scripts for user
|
|
|
|
|
env USER=${XUSER} /usr/share/calculate/xdm/xdm --logout
|
|
|
|
|
[[ -n $XPID ]] && kill -9 $XPID
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
exit 0
|
|
|
|
|