From 2084b22faaabedacbe934ef0b99549cbb8b558aa Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Mon, 3 Dec 2018 17:59:18 +0100 Subject: [run-virt] Linux scripts div. changes mounting, new sound muter (alsa to be tested) --- .../vmchooser/data/linux/includes/00_vars.inc | 2 +- .../vmchooser/data/linux/includes/10_functions.inc | 29 ++++++++++ .../data/linux/includes/30_mount_shares.inc | 25 +------- .../vmchooser/data/linux/includes/70_mutesound.inc | 67 ++++++++++++++++++++++ 4 files changed, 98 insertions(+), 25 deletions(-) create mode 100644 core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/70_mutesound.inc (limited to 'core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes') 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 6ff9271a..4e44e076 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 @@ -32,7 +32,7 @@ CREATEMISSING=$(grep '^createMissingRemap=' "$SLXCONFIGFILE" | cut -d '=' -f 2) SCRIPTUSER=$(grep '^scriptUser=' "$SLXCONFIGFILE" | cut -d '=' -f 2) SCRIPTVISIBILITY=$(grep '^scriptVisibility=' "$SLXCONFIGFILE" | cut -d '=' -f 2) SCRIPTEXT=$(grep scriptExt "$DISKMOUNTDIR/openslx.ini" | cut -f 2 -d "=") - +MUTESOUND=$(grep muteSound "$DISKMOUNTDIR/openslx.ini" | cut -f 2 -d "=") # CIFSVERSIONS="3.11 3.0 2.1 2.0 1.0" CIFSVERSIONS="3.0 2.1 1.0 3.11 2.0" diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc index a061fef9..1649e795 100755 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc @@ -121,6 +121,35 @@ function mount_share() fi } +function mount_home() +{ + logger "openslx sharemapper: home share \"$SHARENAME\" found (for PERSISTENT)." + export USER="${GLOBALUSER}" + export PASSWD="${PW}" + ERRORMSG="" + mounter "${MOUNTPARAM}" "${MOUNTOPTS}" "${SHAREPATH}" "${USERHOMEDIR}" 2>/dev/null 1>&2 + ERR=$? + unset USER + unset PASSWD + + case $ERR in 1) logger "openslx sharemapper: could not mount home share." + echo "Konnte Home-Laufwerk nicht einhängen!" >> "$USERLOGFILE" + ;; + 2) logger "openslx sharemapper: home share seems to be already mounted." + ;; + 0) logger "openslx sharemapper: Linking ${USERDESKTOP}/$(basename $USERHOMEDIR), if possible." + # Changed: Link on Desktop no longer "Home-verz.", but same + # name as last part of $USERHOMEDIR (-->PERSISTENT) + # ln -s "$USERHOMEDIR" "${USERDESKTOP}"/"$SHARENAME" + ln -s "$USERHOMEDIR" "${USERDESKTOP}"/$(basename "$USERHOMEDIR") + chown "$LOCALUSER" "${USERDESKTOP}"/$(basename "$USERHOMEDIR") + logger "openslx sharemapper: "${USERDESKTOP}"/$(basename "$USERHOMEDIR") linked." + ;; + *) logger "openslx sharemapper: Unknown error level mounting home share." + ;; + esac +} + ### Funktionen Mounter Ende ####################### ### Funktionen Ende ############################### diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/30_mount_shares.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/30_mount_shares.inc index 8328e361..c5d37105 100755 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/30_mount_shares.inc +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/30_mount_shares.inc @@ -23,30 +23,7 @@ function mount_shares() # User-Homeverzeichnis? if [ "${SHARENAME:0:5}" == "Home-" ]; then - logger "openslx sharemapper: home share \"$SHARENAME\" found (for PERSISTENT)." - export USER="${GLOBALUSER}" - export PASSWD="${PW}" - ERRORMSG="" - mounter "${MOUNTPARAM}" "${MOUNTOPTS}" "${SHAREPATH}" "${USERHOMEDIR}" 2>/dev/null 1>&2 & - ERR=$? - unset USER - unset PASSWD - - case $ERR in 1) echo "Konnte Home-Laufwerk nicht einhängen!" >> "$USERLOGFILE" - ;; - 2) logger "openslx sharemapper: home share seems to be already mounted." - ;; - 0) logger "openslx sharemapper: Linking ${USERDESKTOP}/$(basename $USERHOMEDIR), if possible." - # Changed: Link on Desktop no longer "Home-verz.", but same - # name as last part of $USERHOMEDIR (-->PERSISTENT) - # ln -s "$USERHOMEDIR" "${USERDESKTOP}"/"$SHARENAME" - ln -s "$USERHOMEDIR" "${USERDESKTOP}"/$(basename "$USERHOMEDIR") - chown "$LOCALUSER" "${USERDESKTOP}"/$(basename "$USERHOMEDIR") - logger "openslx sharemapper: "${USERDESKTOP}"/$(basename "$USERHOMEDIR") linked." - ;; - *) logger "openslx sharemapper: Unknown error level mounting home share." - ;; - esac + mount_home & else if [ -n "${SHARENAME}" ]; then mount_share & diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/70_mutesound.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/70_mutesound.inc new file mode 100644 index 00000000..932877af --- /dev/null +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/70_mutesound.inc @@ -0,0 +1,67 @@ +function mutesound() +{ + +local PACTL=$(which pactl) +local AMIXER=$(which amixer) +local SYSTEM=alsa +local PACTLERR +local AMIXERERR + +if [[ -z "$AMIXER" && -z "$PACTL" ]]; then + logger "openslx sound muter: Neither pactl (pulseaudio) nor amixer (alsa) found. Exiting." + return 1 +fi + + +if [ -n "$PACTL" ]; then + SYSTEM=pulse + logger "openslx sound muter: pulseaudio seems to be installed..." + x=2 + # while [ $(su -c "pulseaudio --check" "$LOCALUSER") ]; do + while [ -z "$(ps aux|grep /pulseaudio|grep -v grep)" ]; do + logger "openslx sound muter: Waiting for pulseaudio..." + if [ "$x" -gt 30]; then + logger "openslx sound muter: Waited $x sec for pulseaudio, giving up." + [ -n "$AMIXER" ] && SYSTEM=alsa || SYSTEM="" # unset -v SYSTEM + break + fi + sleep $x; x=$((x + 2)) + done +fi + + # MUTESOUND: Sound 1=aus, 0=an + # This is a bit problematic as there is no way to actually know whether + # a command works within different distributions, esp. alsamixer commands + # tend to successfully mute but not unmute. So we (at this stage) just + # hammer known commands through - one will work, hopefully. + case $MUTESOUND in 0) logger "openslx sound muter: Unmuting sound, using $SYSTEM." + case $SYSTEM in pulse) XDG_RUNTIME_DIR=/run/user/$(id -u $LOCALUSER) su -c "pactl set-sink-mute 0 0" "$LOCALUSER" + PACTLERR=$? + XDG_RUNTIME_DIR=/run/user/$(id -u $LOCALUSER) su -c "$AMIXER" -q -D pulse sset Master unmute "$LOCALUSER" + AMIXERERR=$? + logger "openslx sound muter: Sound hopefully unmuted, pactl: $PACTLERR, amixer: $AMIXERERR." + ;; + alsa) "$AMIXER" set Master unmute + AMIXERERR=$? + logger "openslx sound muter: Sound hopefully unmuted, amixer: $AMIXERERR." + ;; + esac + ;; + 1) logger "openslx sound muter: Muting sound, using $SYSTEM" + case $SYSTEM in pulse) XDG_RUNTIME_DIR=/run/user/$(id -u $LOCALUSER) su -c "pactl set-sink-mute 0 1" "$LOCALUSER" + PACTLERR=$? + XDG_RUNTIME_DIR=/run/user/$(id -u $LOCALUSER) su -c "$AMIXER" -q -D pulse sset Master mute "$LOCALUSER" + AMIXERERR=$? + logger "openslx sound muter: Sound hopefully unmuted, pactl: $PACTLERR, amixer: $AMIXERERR." + ;; + alsa) "$AMIXER" set Master mute + AMIXERERR=$? + logger "openslx sound muter: Sound hopefully unmuted, amixer: $AMIXERERR." + ;; + esac + ;; + *) logger "openslx sound muter: Unknown muteSound option $MUTESOUND" + ;; + esac + logger "openslx sound muter: end." +} -- cgit v1.2.3-55-g7522