diff options
Diffstat (limited to 'core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/90_runscript.inc')
-rwxr-xr-x | core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/90_runscript.inc | 69 |
1 files changed, 57 insertions, 12 deletions
diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/90_runscript.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/90_runscript.inc index e5a7971b..f5ef0223 100755 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/90_runscript.inc +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/90_runscript.inc @@ -1,20 +1,65 @@ function runscript() { - logger "openslx sharemapper: runscript: looking for a script to run..." - if [ -f "$DISKMOUNTDIR/openslx.ini" ]; then - EXTENSION=$(grep scriptExt "$DISKMOUNTDIR/openslx.ini" | cut -f 2 -d "=") - [ -z "$EXTENSION" -o "$EXTENSION" = "bat" ] && \ - logger "openslx sharemapper: runscript: Script extension empty or \'bat\', trying anyway." - if [ -f "$DISKMOUNTDIR/runscript${EXTENSION}" ]; then - su -c "$DISKMOUNTDIR/runscript${EXTENSION}" "$LOCALUSER" - ERR=$? - if [ $ERR -eq 0 ]; then - logger "openslx sharemapper: runscript: runscript${EXTENSION} ok, errorlevel ${ERR}." + logger "openslx: runscript: looking for a script to run..." + ERR=0 + if [ -f "$SLXCONFIGFILE" ]; then + [ -z "$SCRIPTEXT" -o "$SCRIPTEXT" = "bat" ] && \ + logger "openslx utility: runscript: Script extension empty or \'bat\', trying anyway." + if [ -f "$DISKMOUNTDIR/runscript${SCRIPTEXT}" ]; then + logger "openslx utility: runscript: found script $DISKMOUNTDIR/runscript${SCRIPTEXT}." + + case "$SCRIPTUSER" in + 0) USERPART="" + ;; + 1) USERPART=" su -c - $LOCALUSER " + ;; + *) logger "openslx utility: runscript: Unknown script user or script user not set. Running as root." + USERPART="" + ;; + esac + + case "$SCRIPTVISIBILITY" in + 0) # 0=hidden + logger "openslx utility: runscript: Starting script hidden." + echo "$USERPART $DISKMOUNTDIR/runscript${SCRIPTEXT}" + $USERPART "$DISKMOUNTDIR/runscript${SCRIPTEXT}" & + ;; + 1) # 1=normal + logger "openslx utility: runscript: Starting script maximised." + get_xauthfile + DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART xterm "$DISKMOUNTDIR/runscript${SCRIPTEXT}" & + ;; + 2) # 2=minimized (xterm -iconic) + logger "openslx utility: runscript: starting script minimised." + get_xauthfile + + # warte auf Window manager... + while [[ "$(DISPLAY=:0.0 XAUTHORITY=${XAUTHORITY} xprop -root _NET_SUPPORTING_WM_CHECK)" =~ "no such atom" ]]; do + sleep 2 + done + + # Truly not the best way to wait until the desktop environment is ready, but there's no common way to + # check for DE readyness. Until then, we'll sleep. + sleep 20 + + DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART xterm -iconic "$DISKMOUNTDIR/runscript${SCRIPTEXT}" & + ;; + *) # *=? + logger "openslx utility: runscript: unkown scriptVisibility $SCRIPTVISIBILITY." + ;; + esac + + if [ "$ERR" -eq 0 ]; then + logger "openslx utility: runscript: runscript${SCRIPTEXT} ok, errorlevel ${ERR}." else - logger "openslx sharemapper: runscript: Script error ${ERR}." + logger "openslx utility: runscript: Script error ${ERR}." fi + else + logger "openslx utility: runscript: script $DISKMOUNTDIR/runscript${SCRIPTEXT} not found." fi else - logger "openslx sharemapper: runscript: Could not find $DISKMOUNTDIR/openslx.ini for script extension." + logger "openslx utility: runscript: Could not find $SLXCONFIGFILE." + exit 1 fi } + |