This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch feature/openbox in repository live-build-x2go. commit 32e735a85801112856c7834c8ebabf91886a8063 Author: Stefan Baur (BAUR-ITCS) <kontakt@baur-itcs.de> Date: Thu Feb 8 00:56:16 2018 +0100 adapted 2280-x2go-getportableappsessions to work more like 2270-getsshclientkeysfrommedia --- .../live/config/2280-x2go-getportableappsessions | 123 +++++++++++++++++---- 1 file changed, 102 insertions(+), 21 deletions(-) diff --git a/config/includes.chroot/lib/live/config/2280-x2go-getportableappsessions b/config/includes.chroot/lib/live/config/2280-x2go-getportableappsessions index be9c641..873345b 100755 --- a/config/includes.chroot/lib/live/config/2280-x2go-getportableappsessions +++ b/config/includes.chroot/lib/live/config/2280-x2go-getportableappsessions @@ -3,26 +3,107 @@ X2GoGetPortableAppSessions () { -# Output startup message -# -echo -n " x2go-getportableappsessions" - -# This script is for using the iso-hybrid image along with the "second partition" patch -# it allows you to share a configuration between X2GoClient for Windows in portable -# mode and the X2Go-ThinClientEnvironment on the same USB media using different partitions - -if [ -L /dev/disk/by-label/PORTABLEAPP ]; then - mkdir -p /media/PORTABLEAPP && \ - mount -o sync /dev/disk/by-label/PORTABLEAPP /media/PORTABLEAPP - if [ -s /media/PORTABLEAPP/x2goclient/sessions ] ; then - ln -sf /media/PORTABLEAPP/x2goclient/sessions /etc/x2go/x2gothinclient_sessions - elif [ -s /media/PORTABLEAPP/x2goclient/.x2goclient/sessions ] ; then - ln -sf /media/PORTABLEAPP/x2goclient/.x2goclient/sessions /etc/x2go/x2gothinclient_sessions - else - true - fi -else - true -fi + # Output startup message + # + echo -n " x2go-getportableappsessions" + + ( + # This script is for using the iso-hybrid image along with the "second partition" patch + # it allows you to share a configuration between X2GoClient for Windows in portable + # mode and the X2Go-ThinClientEnvironment on the same USB media using different partitions + + check_for_config (){ + if [ -s /media/PORTABLEAPP/x2goclient/sessions ] ; then + ln -sf /media/PORTABLEAPP/x2goclient/sessions /etc/x2go/x2gothinclient_sessions + elif [ -s /media/PORTABLEAPP/x2goclient/.x2goclient/sessions ] ; then + ln -sf /media/PORTABLEAPP/x2goclient/.x2goclient/sessions /etc/x2go/x2gothinclient_sessions + else + true + fi + + } + + while ! [ -c /dev/tty8 ] ; do + echo -n "\n$(date +'%F | %T | ')'$0' is waiting for tty8 to become available." + sleep 2 + done + + # always wait for getsshhostkeysfrommedia (config/opensshkeys) + while ! [ -e /var/lib/live/config/opensshkeys ] ; do + echo -n "\n$(date +'%F | %T | ')'$0' is waiting for getsshhostkeysfrommedia to finish." + sleep 2 + done + + # if copysecring is set, also wait for getsshclientkeysfrommedia (config/opensshclientkeys) + if grep -q "\W*copysecring\W*" /proc/cmdline ; then + while ! [ -e /var/lib/live/config/opensshclientkeys ] ; do + echo -n "\n$(date +'%F | %T | ')'$0' is waiting for getsshclientkeysfrommedia to finish." + sleep 2 + done + + fi + + # list devices (and mountpoints, if present) + LABELMPLIST=$(lsblk -oLABEL,NAME,MOUNTPOINT,HOTPLUG -ln) + + # search for our magic label + X2GOTCELIVELABELS=$(echo "$LABELMPLIST" | awk '$3~/^[^\/]/ && $3="" ; $1=="X2GO-TCE-LIVE" { print $2 " " $3 " " $4}') + + # support for second label value (for dual-mode media where keys are stored on the windows-readable partition) + PORTABLEAPPLABELS=$(echo "$LABELMPLIST" | awk '$3~/^[^\/]/ && $3="" ; $1=="PORTABLEAPP" { print $2 " " $3 " " $4}') + + # block device list, removable first (we want USB media to be able to override keys on fixed disks) + BLOCKDEVS="$(echo "$X2GOTCELIVELABELS\n$PORTABLEAPPLABELS" | awk '$3 == "1" {print $2}') $(echo "$X2GOTCELIVELABELS\n$PORTABLEAPPLABELS" | awk '$3 == "0" {print $2}')" + + # for every block device in our list, do ... + for BLOCKDEV in $BLOCKDEVS; do + # check if it also appears in the list of devices carrying our magic label + # this should always be the case since we changed how BLOCKDEVS is assembled + NEXTDEVICE=$(echo "$X2GOTCELIVELABELS\n$PORTABLEAPPLABELS" | grep "$BLOCKDEV") + if [ -n "$NEXTDEVICE" ] ; then + # now figure out the mountpoint + MNTPT=$(echo $NEXTDEVICE | awk '{print $2}') + # and the device name? Wait, this is the magic label instead. + NEXTDEVICE=$(echo $NEXTDEVICE | awk '{print $1}') + echo -n "\n$(date +'%F | %T | ')'$0' Checking status of Device '$NEXTDEVICE' for BLOCKDEV '$BLOCKDEV'." | tee -a /dev/tty8 + if [ -n "$MNTPT" ] ; then + # If the mountpoint variable isn't empty, it means the device is already mounted. + echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is mounted at: '$MNTPT'" | tee -a /dev/tty8 + # so let's check if we have a config directory at that mountpoint. + if check_for_config $MNTPT ; then + # if we managed to pull a config off of it (or save one on it), we make a note of this ... + touch /var/lib/live/config/opensshclientkeys + # and quit right here. + exit 0 + fi + else + # So there's no active mount for the device with our magic label ... + echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is not mounted." | tee -a /dev/tty8 + # let's see if this is a fixed disk. + if grep -q "^0$" /sys/block/$BLOCKDEV/removable ; then + # yes, it is, so let's go ahead and try to mount it ... + echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is a fixed disk, mounting ..." | tee -a /dev/tty8 + # obviously, we need a mountpoint for it ... + mkdir -p /media/fixeddisks/$NEXTDEVICE + # and now we can try to mount it. Let's do it in readonly mode, just to play it safe. + mount -o ro /dev/$NEXTDEVICE /media/fixeddisks/$NEXTDEVICE + if check_for_config /media/fixeddisks/$NEXTDEVICE ; then + # we umount, then make a note that we succeeded ... + umount /media/fixeddisks/$NEXTDEVICE + touch /var/lib/live/config/opensshclientkeys + # and quit right here. + exit 0 + fi + # If we didn't succeed in pulling a config, we still need to umount what we mounted. + umount /media/fixeddisks/$NEXTDEVICE + else + # If a removable disk hasn't been mounted by the automounter, something's amiss and we shouldn't try to meddle with it. + # So let's make a note of this and move on. + echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is a removable disk, not mounted by automounter, skipping." | tee -a /dev/tty8 + fi + fi + fi + done + ) & } X2GoGetPortableAppSessions -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/live-build-x2go.git