From 19c74d4a56c353556c6f6b4f62e642c2bafc24e1 Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Tue, 25 Jun 2019 16:38:25 +0200 Subject: [run-virt] Linux scripts +adminrun --- .../vmchooser/data/linux/includes/90_runscript.inc | 99 ++++++++++++---------- 1 file changed, 52 insertions(+), 47 deletions(-) (limited to 'core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/90_runscript.inc') 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 2b291dfc..6536d9a5 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,9 +1,55 @@ function wait_for_wm() { # This just waits until there's a window manager. + logger "openslx utility: wait_for_wm: Waiting for window manager." while [[ "$(DISPLAY=:0.0 XAUTHORITY=${XAUTHORITY} xprop -root _NET_SUPPORTING_WM_CHECK)" =~ "no such atom" ]]; do sleep 2 done + logger "openslx utility: wait_for_wm: Window manager detected." +} + +function runscript_visibility() +{ + local SCRIPT="$1" + local USERPART="$2" + local VISIBILITY="$3" + + case "$VISIBILITY" in + 0) # 0=hidden + logger "openslx utility: runscript_visibility: Starting script $SCRIPT hidden(${VISIBILITY}): $USERPART" + $USERPART "$SCRIPT" + ;; + 1) # 1=normal + get_xauthfile + wait_for_wm + if [ -n "$USERPART" ]; then + logger "openslx utility: runscript_visibility: Starting script $SCRIPT maximised(${VISIBILITY}), no USERPART." + DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART "xterm $SCRIPT" + else + logger "openslx utility: runscript_visibility: Starting script $SCRIPT maximised(${VISIBILITY}), $USERPART." + DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART xterm "$SCRIPT" + fi + ;; + 2) # 2=minimized (xterm -iconic) + logger "openslx utility: runscript_visibility: starting script $SCRIPT minimised(${VISIBILITY}). $USERPART" + get_xauthfile + wait_for_wm + + # Truly not the best way to wait until the desktop environment is ready, but there's no common way to + # check for DE readiness. Until then, we'll sleep. + # sleep 20 + if [ -n "$USERPART" ]; then + logger "openslx utility: runscript_visibility: Starting script $SCRIPT minimised(${VISIBILITY}), no USERPART." + DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART "xterm -iconic $SCRIPT" + else + logger "openslx utility: runscript_visibility: Starting script $SCRIPT minimised(${VISIBILITY}), $USERPART." + DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART xterm -iconic "$SCRIPT" + fi + ;; + *) # *=? + logger "openslx utility: runscript_visibility: script $SCRIPT unkown scriptVisibility $SCRIPTVISIBILITY." + ;; + esac } function runscript() @@ -16,52 +62,11 @@ function runscript() if [ -f "$DISKMOUNTDIR/runscript${SCRIPTEXT}" ]; then logger "openslx utility: runscript: found script $DISKMOUNTDIR/runscript${SCRIPTEXT}." logger "openslx utility: runscript: script options: scriptuser: ${SCRIPTUSER}, scriptvisibility: ${SCRIPTVISIBILITY}." - - case "$SCRIPTUSER" in - 0) USERPART="" - ;; - 1) USERPART=" su -c - $LOCALUSER " - ;; - *) logger "openslx utility: runscript: Unknown script user or script user not set. Running as user ${LOCALUSER}." - # USERPART="" # old default: Running as root - USERPART=" su -c - $LOCALUSER " - ;; - 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 - wait_for_wm - if [ -n "$USERPART" ]; then - DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART "xterm $DISKMOUNTDIR/runscript${SCRIPTEXT}" & - else - DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART xterm "$DISKMOUNTDIR/runscript${SCRIPTEXT}" & - fi - ;; - 2) # 2=minimized (xterm -iconic) - logger "openslx utility: runscript: starting script minimised." - get_xauthfile - wait_for_wm - - # Truly not the best way to wait until the desktop environment is ready, but there's no common way to - # check for DE readiness. Until then, we'll sleep. - sleep 20 - if [ -n "$USERPART" ]; then - DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART "xterm -iconic $DISKMOUNTDIR/runscript${SCRIPTEXT}" & - else - DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART xterm -iconic "$DISKMOUNTDIR/runscript${SCRIPTEXT}" & - fi - ;; - *) # *=? - logger "openslx utility: runscript: unkown scriptVisibility $SCRIPTVISIBILITY." - ;; - esac - + set_userpart + runscript_visibility "$DISKMOUNTDIR/runscript${SCRIPTEXT}" "$USERPART" "$SCRIPTVISIBILITY" & + SCRIPTPID=$! + wait $SCRIPTPID + ERR=$? if [ "$ERR" -eq 0 ]; then logger "openslx utility: runscript: runscript${SCRIPTEXT} ok, errorlevel ${ERR}." else @@ -72,7 +77,7 @@ function runscript() fi else logger "openslx utility: runscript: Could not find $SLXCONFIGFILE." - exit 1 + return 1 fi } -- cgit v1.2.3-55-g7522