summaryrefslogtreecommitdiffstats
path: root/remote/modules/run-virt
diff options
context:
space:
mode:
Diffstat (limited to 'remote/modules/run-virt')
-rw-r--r--remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_postliminaries.inc21
-rw-r--r--remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc12
-rwxr-xr-xremote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares40
-rwxr-xr-xremote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime26
4 files changed, 93 insertions, 6 deletions
diff --git a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_postliminaries.inc b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_postliminaries.inc
new file mode 100644
index 00000000..f6f1cf7d
--- /dev/null
+++ b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_postliminaries.inc
@@ -0,0 +1,21 @@
+postliminaries_native()
+{
+ # USERHOMEDIR=~/PERSISTENT, not ~! ################
+ rmdir "$USERHOMEDIR" && logger "openslx unmounter: home directory entry (PERSISTENT) deleted." \
+ || logger "openslx unmounter: could not delete home directory (PERSISTENT) entry - not empty / unmounted!"
+}
+
+postliminaries_vmware()
+{
+ unlink "$USERHOMEDIR"
+ ERR=$?
+ if [ "$ERR" -ne 0 ]; then
+ logger "openslx unmounter: vmware mode: could not unlink ${USERHOMEDIR}!"
+ logger "openslx unmounter: vmware mode: this is a severe problem; I do not know what to do - exiting!"
+ exit 1
+ else
+ logger "openslx unmounter: vmware mode: ${USERHOMEDIR} unlinked."
+ # checking whether there was a directory moved out earlier:
+ [ -d "${USERHOMEDIR}"_mov ] && mv "${USERHOMEDIR}"_mov "${USERHOMEDIR}"
+ fi
+}
diff --git a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc
new file mode 100644
index 00000000..e161b961
--- /dev/null
+++ b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc
@@ -0,0 +1,12 @@
+umount_home() {
+ umount /home/"${LOCALUSER}"/PERSISTENT && logger "openslx unmounter: umounted home (PERSISTENT)." \
+ || logger "openslx unmounter: could not home (PERSISTENT)!"
+}
+
+umount_shares() {
+ index=0
+ for SHARE in $( mount | grep SHARE | tr -s ' ' | cut -f 3 -d " " ); do
+ umount "${SHARE}" && logger "openslx unmounter: umounted ${SHARE}." \
+ || logger "openslx unmounter: could not umount ${SHARE}!"
+ done
+}
diff --git a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares
new file mode 100755
index 00000000..3c03f074
--- /dev/null
+++ b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# set -x
+
+logger "openslx sharemapper: umounter started."
+
+OWNDIR=$(dirname $0)
+for i in "$(dirname $0)"/includes/*.inc; do
+ source "$i"
+done
+
+# REMAPMODE (remapMode): 0: None, 1 Native, 2 Native Fallback, 3 vmware
+# CREATEMISSING (createMissingRemap): 0: Nichts tun, 1 xdg-Verzeichnisse
+
+case "$REMAPMODE" in
+ 0) logger "openslx sharemapper: remapMode 0 (do nothing) detected."
+ exit 0
+ ;;
+ 1) logger "openslx sharemapper: remapMode 1 (native mode) detected."
+ umount_shares
+ umount_home
+ postliminaries_native
+ ;;
+ 2) logger "openslx sharemapper: remapMode 2 (fallback mode) detected."
+ umount_shares
+ umount_home
+ postliminaries_native
+ exit 0
+ ;;
+ 3) logger "openslx sharemapper: remapMode 3 (vmware mode) detected."
+ postliminaries_vmware
+ exit 0
+ ;;
+ *) logger "openslx sharemapper: unknown remapMode in $SLXCONFIGFILE; doing nothing end exiting with error."
+ exit 1.
+ ;;
+esac
+
+exit 0
+
diff --git a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime
index 9dcfbd8e..a238e9a1 100755
--- a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime
+++ b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_runtime
@@ -9,6 +9,7 @@ VERSION=$(lsb_release -rs)
SCRIPTDIR=/mnt/diskmount/linux/
RESOLUTIONSCRIPT="${SCRIPTDIR}"/resolution
SHARESCRIPT="${SCRIPTDIR}"/mnt_shares
+UMOUNTSCRIPT="${SCRIPTDIR}"/umnt_shares
XSETUP=$(find /etc/X* -name "Xsetup" 2>/dev/null)
XRESET=$(find /etc/X* -name "Xreset" 2>/dev/null)
@@ -17,7 +18,6 @@ XRESET=$(find /etc/X* -name "Xreset" 2>/dev/null)
write_xsetup() {
logger "openslx vm_runtime: writing ${XSETUP}..."
- XSETUP=/etc/X11/xdm/Xsetup
cat<<-BISHIER > "${XSETUP}"
#!/bin/sh
${SHARESCRIPT} &
@@ -26,11 +26,26 @@ write_xsetup() {
}
patch_xsetup_shebang() {
+ # Patching after first line, to be exact.
logger "openslx vm_runtime: patching ${XSETUP} after shebang line, if necessary."
grep -q "${RESOLUTIONSCRIPT}" "${XSETUP}" || sed "1 a ${RESOLUTIONSCRIPT} \&" -i "${XSETUP}"
grep -q "${SHARESCRIPT}" "${XSETUP}" || sed "1 a ${SHARESCRIPT} \&" -i "${XSETUP}"
}
+write_xreset() {
+ logger "openslx vm_runtime: writing ${XRESET}..."
+ cat<<-BISHIER > "${XRESET}"
+ #!/bin/sh
+ ${UMOUNTSCRIPT} &
+ BISHIER
+}
+
+patch_xreset_shebang() {
+ # Patching after first line, to be exact.
+ logger "openslx vm_runtime: patching ${XRESET} after shebang line, if necessary."
+ grep -q "${UMOUNTSCRIPT}" "${XRESET}" || sed "1 a ${UMOUNTSCRIPT} \&" -i "${XSETUP}"
+}
+
case "${DISTRIBUTION}" in
opensuse) logger "openslx vm_runtime: openSuse detected."
if [ ! -e "${XSETUP}" ]; then
@@ -39,17 +54,18 @@ case "${DISTRIBUTION}" in
else
logger "openslx vm_runtime: patching ${XSETUP}."
if ! [ grep -c /etc/sysconfig/displaymanager "$XSETUP" 2>/dev/null 1>&2 ]; then
- logger "openslx vm_runtime: openSuse marker found, patching."
+ logger "openslx vm_runtime: Xsetup: openSuse marker found, patching."
sed "s#/etc/sysconfig/displaymanager#/etc/sysconfig/displaymanager\n"${SHARESCRIPT}" \&\n${RESOLUTIONSCRIPT} \&#g" \
-i "${XSETUP}"
else
- logger "openslx vm_runtime: openSuse marker not found, patching after shebang line."
+ logger "openslx vm_runtime: Xsetup: openSuse marker not found, patching after shebang line."
xsetup_patch_shebang
fi
+ logger "openslx vm_runtime: patching ${RESET}."
+ xsetup_patch_shebang
fi
;;
ubuntu) logger "openslx vm_runtime: Ubuntu detected, version ${VERSION}."
-
# Ubuntu has at least in version 14.04 LTS a bug leading to missing Xsetup/Xreset entries:
grep -q "session-setup-script=/etc/X11/Xsetup" /etc/lightdm/lightdm.conf.d/50-myconfig.conf \
|| { sed "$ a session-setup-script=/etc/X11/Xsetup" -i /etc/lightdm/lightdm.conf.d/50-myconfig.conf
@@ -65,8 +81,6 @@ case "${DISTRIBUTION}" in
fi
;;
debian) logger "openslx vm_runtime: Debian detected."
-
-
;;
*) logger "openslx vm_runtime: Unknown distribution, exiting."
exit 1