From 667b28a5f562ecc5d3e996d1c2505408e68c9380 Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Mon, 3 May 2021 17:45:58 +0200 Subject: [run-virt] Linux scripts: umounter -bugs, +webdav (fuse), KDE resolution setting via killing kscreen_backend_launcher (KILLRESPROGS) --- .../vmchooser/data/linux/includes/00_vars.inc | 4 ++- .../vmchooser/data/linux/includes/50_umounter.inc | 33 +++++++++++++--------- .../data/linux/includes/60_resolution.inc | 13 +++++++++ .../opt/openslx/vmchooser/data/linux/umnt_shares | 6 ++-- .../opt/openslx/vmchooser/data/linux/vm_installer | 2 -- 5 files changed, 38 insertions(+), 20 deletions(-) (limited to 'core/modules/run-virt/data/opt/openslx/vmchooser') diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/00_vars.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/00_vars.inc index 9dd30845..cf6592f1 100755 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/00_vars.inc +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/00_vars.inc @@ -6,7 +6,7 @@ SLXCONFIGFILE="$DISKMOUNTDIR"/openslx.ini CONFIGFILE="$DISKMOUNTDIR"/shares.dat LOGINUSER=$(grep '^username=' "$SLXCONFIGFILE" | cut -d '=' -f 2) -##### User related################# +##### User related ################# LOCALUSER=student USERHOME=/home/"$LOCALUSER" USERHOMEDIR=/home/"$LOCALUSER"/PERSISTENT @@ -57,5 +57,7 @@ SCRIPTEXT=$(grep scriptExt "$DISKMOUNTDIR/openslx.ini" | cut -f 2 -d "=") MUTESOUND=$(grep muteSound "$DISKMOUNTDIR/openslx.ini" | cut -f 2 -d "=") SOUNDVOL="100%" +##### Programs interfering with resolution setting ##### +KILLRESPROGS="kscreen_backend_launcher" ### Variablen Ende ################################ diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc index a4c080d2..dc92061a 100755 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/50_umounter.inc @@ -1,22 +1,29 @@ -umount_home() { - umount "${USERHOMEDIR}" && logger "openslx umounter: umounted home (${USERHOMEDIR})." \ - || logger "openslx umounter: could not home(${USERHOMEDIR})!" -} - -umount_shares() { - get_shares # fills array ROHSHARES; row 0 global infos from (shares-)CONFIGFILE, +umount_all() { + local HOME + local WEBDAV="(webdav) " + local UMOUNT + get_shares # fills array ROHSHARES; row 1+ share infos from (shares-)CONFIGFILE - for (( CONFIGROW = 2; CONFIGROW < ${#ROHSHARES[@]}; CONFIGROW++ )); do # row 1 always home, so forget... + for (( CONFIGROW = 1; CONFIGROW < ${#ROHSHARES[@]}; CONFIGROW++ )); do # row 1 is homedir, 2+ shares SHAREPATH=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 1 -d$'\t') # Could be a webdav share... SHARENAME=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 3 -d$'\t' | sed 's/ /_/g') - [ -z "${SHARENAME}" ] && SHARENAME=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 2 -d$'\t' | sed 's/://g') # yields SHARELETTER + if [ "${SHARENAME:0:5}" == "Home-" ]; then + HOME="home " + UMOUNT="${USERHOMEDIR}" + else + HOME="" + # if there's no sharename let's at least try with SHARELETTER: + [ -z "${SHARENAME}" ] && SHARENAME=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 2 -d$'\t' | sed 's/://g') + UMOUNT="${USERHOME}/${SHARENAME}" + fi if [ "${SHAREPATH:0:4}" == 'http' ]; then - fusermount -u "${USERHOME}/${SHARENAME}" && logger "openslx umounter: umounted ${SHARENAME}. (webdav)" \ - || logger "openslx umounter: could not umount ${SHARENAME}! (webdav)" + fusermount -u "$UMOUNT" && logger "openslx umounter: umounted ${HOME}${WEBDAV} ${UMOUNT}." \ + || logger "openslx umounter: could not umount ${HOME}${WEBDAV} ${UMOUNT}!" else - umount "${USERHOME}/${SHARENAME}" && logger "openslx umounter: umounted ${SHARE}." \ - || logger "openslx umounter: could not umount ${SHARE}!" + umount "${UMOUNT}" && logger "openslx umounter: umounted $HOME ${UMOUNT}." \ + || logger "openslx umounter: could not umount ${HOME}${UMOUNT}!" fi done } + diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/60_resolution.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/60_resolution.inc index a3e6c746..62c2f313 100755 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/60_resolution.inc +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/60_resolution.inc @@ -11,11 +11,24 @@ get_xauthfile() logger "openslx resolution utility: XAUTHFILE found." } +kill_resprogs() { + for i in $KILLRESPROGS; do + if [ -n "$(ps aux|grep $i|grep -v grep)" ]; then + logger "openslx resolution utility: Interfering program $i detecting, trying to kill." + killall $i + ERR=$? + if [ $ERR -ne 0 ]; then + logger "openslx resolution utility: couldn't kill interfering program $i." + fi + fi + done +} check_resolution() { ACTRES=$(DISPLAY="${DISPLAY}" XAUTHORITY="${XAUTHORITY}" xrandr|grep '*'|tr -s " "|cut -f 2 -d " ") if [ "$ACTRES" != "$RESOLUTION" ]; then logger "openslx resolution utility: resolution changed; re-changing." + kill_resprogs DISPLAY="${DISPLAY}" XAUTHORITY="${XAUTHORITY}" xrandr --output ${AUSGABE} --mode ${RESOLUTION} else logger "openslx resolution utility: resolution unchanged." diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares index b028cf76..1da5c460 100755 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/umnt_shares @@ -17,13 +17,11 @@ case "$REMAPMODE" in exit 0 ;; 1) logger "openslx sharemapper: umounter: remapMode 1 (native mode) detected." - umount_shares - umount_home + umount_all postliminaries_native ;; 2) logger "openslx sharemapper: umounter: remapMode 2 (fallback mode) detected." - umount_shares - umount_home + umount_all postliminaries_native exit 0 ;; diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer index 7bf44730..bf995a66 100755 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/vm_installer @@ -95,8 +95,6 @@ case $(${PS} --pid 1 -o comm h) in ln -s "${SERVICEDIR}"/"${SERVICEUMOUNT}" "$SERVICEDIR"/shutdown.target.wants/"${SERVICEUMOUNT}" # ln -s "${SERVICEDIR}"/"${SERVICEUMOUNT}" "$SERVICEDIR"/reboot.target.wants/"${SERVICEUMOUNT}" # ln -s "${SERVICEDIR}"/"${SERVICEUMOUNT}" "$SERVICEDIR"/halt.target.wants/"${SERVICEUMOUNT}" - - echo "openslx praeinstaller: doing systemd reload." systemctl daemon-reload -- cgit v1.2.3-55-g7522