I thought why not just use the tftp client to pull the script from the TFTP server instead. Turns out this is quite easy to do. I added the following script to the screen.d directory, and called it "tftp" (which was just based on one of the existing init scripts):
#!/bin/shNow in lts.conf I can do somthing like:
#
#full path to file (excluding /var/lib/tftpboot)
filepath=$1
file=`basename $filepath`
if [ -n "$SERVER" ]; then
script_temp=$(mktemp)
tftp "$SERVER" -c get ${filepath} $script_temp
# only execute if it has non-zero size.
if [ -s "$script_temp" ]; then
mv "$script_temp" /usr/share/ltsp/screen.d/${file}
chmod 777 /usr/share/ltsp/screen.d/${file}
exec /bin/bash /usr/share/ltsp/screen.d/${file}
else
rm "$script_temp"
sleep 15
exec /bin/bash --login
fi
fi
SCREEN_01 = tftp /ltsp-trusty/amd64/firefox
Now I have built the "/var/lib/tftpboot/ltsp-trusty/amd64/firefox" script on the TFTP server and it can easily/quickly customized as needed.
Here is an example (requires "apt-get install firefox openbox" in the ltsp-chroot image):
#!/bin/sh
. /usr/share/ltsp/screen-x-common
export HOME="${HOME:-/root}" USER="${USER:-root}"
COMMAND="openbox-session"
mkdir -p /root/.config/openbox
echo "/usr/bin/firefox http://somesite.biz" >> /root/.config/openbox/autostart
chmod 755 /root/.config/openbox/autostart
# The following logic is described at the top of xinitrc.
if [ -x /usr/share/ltsp/xinitrc ]; then
xinit /usr/share/ltsp/xinitrc "$COMMAND" -- "$DISPLAY" "vt${TTY}" $X_ARGS >/dev/null
else
eval "xinit $COMMAND -- $DISPLAY vt${TTY} $X_ARGS >/dev/null"
fi
if [ $? -ne 0 ]; then
echo "Xserver failed, falling back to a text shell" >&2
exec /bin/bash --login
fi
So simple things like having one thin-client launch firefox and another launch NX player, is easy thru lts.conf and script manipulation - no rebuilding of images required (apart from package installation of course).
No comments:
Post a Comment