summaryrefslogtreecommitdiffstats
path: root/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/90_runscript.inc
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/90_runscript.inc')
-rwxr-xr-xcore/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/90_runscript.inc69
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
}
+