From 073974dbb06a2501cd37e32db74d2ee0ee5859bb Mon Sep 17 00:00:00 2001 From: Steffen Ritter Date: Thu, 29 Apr 2021 13:10:44 +0200 Subject: Change the mail address for feedback in file headers * old address will be disabled in the future --- core/bin/setup_target | 2 +- core/includes/chroot.inc | 2 +- core/includes/cleanup.inc | 2 +- core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx | 2 +- core/modules/gdisk/data/inc/prepare_localhd.functions | 2 +- core/modules/gdisk/data/inc/setup_gpt.differentapproach | 2 +- core/modules/gdisk/data/inc/setup_gpt.old | 2 +- core/modules/qemukvm/data/opt/openslx/scripts/systemd-qemukvm_env | 2 +- .../vmchooser/plugins/qemukvm/includes/finalize_start_command.inc | 2 +- .../data/opt/openslx/vmchooser/plugins/qemukvm/includes/init_core.inc | 2 +- .../qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/run-virt.include | 2 +- core/modules/run-virt/data/opt/openslx/scripts/systemd-run_virt_env | 2 +- core/modules/run-virt/data/opt/openslx/scripts/vmchooser-xml_filter | 2 +- core/modules/run-virt/data/opt/openslx/vmchooser/config/smb.conf | 2 +- .../data/opt/openslx/vmchooser/config/udhcpd-nat1.conf.template | 2 +- core/modules/run-virt/data/opt/openslx/vmchooser/vmchooser-run_virt | 2 +- core/modules/slx-issue/data/opt/openslx/scripts/openslx-create_issue | 2 +- core/modules/vbox-src/data/opt/openslx/scripts/systemd-vbox_env | 2 +- .../data/opt/openslx/vmchooser/plugins/virtualbox/run-virt.include | 2 +- core/modules/vmware-common/data/opt/openslx/scripts/systemd-vmware_env | 2 +- .../data/opt/openslx/vmchooser/plugins/vmware/run-virt.include | 2 +- core/rootfs/rootfs-stage31/data/init | 2 +- .../rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions | 2 +- core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-zram_swap | 2 +- mltk | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/core/bin/setup_target b/core/bin/setup_target index e521592e..30fafbf5 100755 --- a/core/bin/setup_target +++ b/core/bin/setup_target @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/includes/chroot.inc b/core/includes/chroot.inc index 3782ab05..a35ca9b4 100644 --- a/core/includes/chroot.inc +++ b/core/includes/chroot.inc @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/includes/cleanup.inc b/core/includes/cleanup.inc index 20c01ea7..982c016b 100644 --- a/core/includes/cleanup.inc +++ b/core/includes/cleanup.inc @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx b/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx index 960da782..c034efb5 100755 --- a/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx +++ b/core/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx @@ -8,7 +8,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/gdisk/data/inc/prepare_localhd.functions b/core/modules/gdisk/data/inc/prepare_localhd.functions index 50ac0a70..363c5083 100755 --- a/core/modules/gdisk/data/inc/prepare_localhd.functions +++ b/core/modules/gdisk/data/inc/prepare_localhd.functions @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/gdisk/data/inc/setup_gpt.differentapproach b/core/modules/gdisk/data/inc/setup_gpt.differentapproach index aa809529..6f3013ee 100755 --- a/core/modules/gdisk/data/inc/setup_gpt.differentapproach +++ b/core/modules/gdisk/data/inc/setup_gpt.differentapproach @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/gdisk/data/inc/setup_gpt.old b/core/modules/gdisk/data/inc/setup_gpt.old index 29eada70..96d92b1c 100755 --- a/core/modules/gdisk/data/inc/setup_gpt.old +++ b/core/modules/gdisk/data/inc/setup_gpt.old @@ -8,7 +8,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/qemukvm/data/opt/openslx/scripts/systemd-qemukvm_env b/core/modules/qemukvm/data/opt/openslx/scripts/systemd-qemukvm_env index 631c159f..7717394d 100755 --- a/core/modules/qemukvm/data/opt/openslx/scripts/systemd-qemukvm_env +++ b/core/modules/qemukvm/data/opt/openslx/scripts/systemd-qemukvm_env @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/includes/finalize_start_command.inc b/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/includes/finalize_start_command.inc index 6d9df363..eff764fe 100644 --- a/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/includes/finalize_start_command.inc +++ b/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/includes/finalize_start_command.inc @@ -6,7 +6,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/includes/init_core.inc b/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/includes/init_core.inc index fee2cd1c..53f214bd 100644 --- a/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/includes/init_core.inc +++ b/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/includes/init_core.inc @@ -6,7 +6,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/run-virt.include b/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/run-virt.include index 7d1149b0..a1a41499 100644 --- a/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/run-virt.include +++ b/core/modules/qemukvm/data/opt/openslx/vmchooser/plugins/qemukvm/run-virt.include @@ -6,7 +6,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/run-virt/data/opt/openslx/scripts/systemd-run_virt_env b/core/modules/run-virt/data/opt/openslx/scripts/systemd-run_virt_env index ddcb81c5..6b79d0ec 100755 --- a/core/modules/run-virt/data/opt/openslx/scripts/systemd-run_virt_env +++ b/core/modules/run-virt/data/opt/openslx/scripts/systemd-run_virt_env @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/run-virt/data/opt/openslx/scripts/vmchooser-xml_filter b/core/modules/run-virt/data/opt/openslx/scripts/vmchooser-xml_filter index 4914c6c0..2d2df304 100755 --- a/core/modules/run-virt/data/opt/openslx/scripts/vmchooser-xml_filter +++ b/core/modules/run-virt/data/opt/openslx/scripts/vmchooser-xml_filter @@ -8,7 +8,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/config/smb.conf b/core/modules/run-virt/data/opt/openslx/vmchooser/config/smb.conf index 016ca2f3..95137377 100644 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/config/smb.conf +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/config/smb.conf @@ -6,7 +6,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf.template b/core/modules/run-virt/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf.template index 19731d80..201804c3 100644 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf.template +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/config/udhcpd-nat1.conf.template @@ -6,7 +6,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/vmchooser-run_virt b/core/modules/run-virt/data/opt/openslx/vmchooser/vmchooser-run_virt index 8dac549d..2ba8424c 100755 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/vmchooser-run_virt +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/vmchooser-run_virt @@ -8,7 +8,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/slx-issue/data/opt/openslx/scripts/openslx-create_issue b/core/modules/slx-issue/data/opt/openslx/scripts/openslx-create_issue index 922830d2..416972ee 100755 --- a/core/modules/slx-issue/data/opt/openslx/scripts/openslx-create_issue +++ b/core/modules/slx-issue/data/opt/openslx/scripts/openslx-create_issue @@ -8,7 +8,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/vbox-src/data/opt/openslx/scripts/systemd-vbox_env b/core/modules/vbox-src/data/opt/openslx/scripts/systemd-vbox_env index 8f99ceb6..14cd3135 100755 --- a/core/modules/vbox-src/data/opt/openslx/scripts/systemd-vbox_env +++ b/core/modules/vbox-src/data/opt/openslx/scripts/systemd-vbox_env @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/vbox-src/data/opt/openslx/vmchooser/plugins/virtualbox/run-virt.include b/core/modules/vbox-src/data/opt/openslx/vmchooser/plugins/virtualbox/run-virt.include index 3ad81df5..adda65e3 100755 --- a/core/modules/vbox-src/data/opt/openslx/vmchooser/plugins/virtualbox/run-virt.include +++ b/core/modules/vbox-src/data/opt/openslx/vmchooser/plugins/virtualbox/run-virt.include @@ -6,7 +6,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/vmware-common/data/opt/openslx/scripts/systemd-vmware_env b/core/modules/vmware-common/data/opt/openslx/scripts/systemd-vmware_env index f5ca0b99..b016a10e 100755 --- a/core/modules/vmware-common/data/opt/openslx/scripts/systemd-vmware_env +++ b/core/modules/vmware-common/data/opt/openslx/scripts/systemd-vmware_env @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/modules/vmware-common/data/opt/openslx/vmchooser/plugins/vmware/run-virt.include b/core/modules/vmware-common/data/opt/openslx/vmchooser/plugins/vmware/run-virt.include index a59ea434..24debedd 100644 --- a/core/modules/vmware-common/data/opt/openslx/vmchooser/plugins/vmware/run-virt.include +++ b/core/modules/vmware-common/data/opt/openslx/vmchooser/plugins/vmware/run-virt.include @@ -6,7 +6,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/rootfs/rootfs-stage31/data/init b/core/rootfs/rootfs-stage31/data/init index 92790534..4615a4fb 100755 --- a/core/rootfs/rootfs-stage31/data/init +++ b/core/rootfs/rootfs-stage31/data/init @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions index 5c579f05..e309ef84 100755 --- a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions +++ b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_partitions @@ -8,7 +8,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-zram_swap b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-zram_swap index 8c011d63..413ce215 100755 --- a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-zram_swap +++ b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-zram_swap @@ -7,7 +7,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # diff --git a/mltk b/mltk index f51dd3b1..7e8159ad 100755 --- a/mltk +++ b/mltk @@ -9,7 +9,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # -- cgit v1.2.3-55-g7522 From f0a14feede21071c0afc050c9174a86500dcf717 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 30 Apr 2021 15:43:47 +0200 Subject: [rootfs-stage32] Add more status output to setup-slx-addon --- .../rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons index 228474f2..91ec0d0b 100755 --- a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons +++ b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons @@ -98,12 +98,15 @@ fi # Run post-hook if available if [ -x "$ADDON_MOUNT_POINT/addon-init" ]; then + echo "Running post-append hook" "$ADDON_MOUNT_POINT/addon-init" || \ slxlog --echo "addon-setup-init" "Warning: Could not execute addon-init of $ADDON" fi if ! grep -q -F '/opt/openslx/mnt/stage4' '/proc/mounts'; then + echo "Running ldconfig" ldconfig 2> /dev/null || ldconfig.real 2> /dev/null fi +echo "Addon initialized." exit 0 -- cgit v1.2.3-55-g7522 From f858dbfea80197e1df1d45d3eaa3185fd4a09c3a Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 30 Apr 2021 15:59:52 +0200 Subject: [alsa] Don't treat missing /proc/asound as error Unless alsa isn't loaded, this just means we don't have a sound card. --- core/modules/alsa/data/opt/openslx/scripts/alsa-default_card | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/modules/alsa/data/opt/openslx/scripts/alsa-default_card b/core/modules/alsa/data/opt/openslx/scripts/alsa-default_card index b4522b7c..4e372f9c 100755 --- a/core/modules/alsa/data/opt/openslx/scripts/alsa-default_card +++ b/core/modules/alsa/data/opt/openslx/scripts/alsa-default_card @@ -3,8 +3,8 @@ PROC="/proc/asound/pcm" if [ ! -r "$PROC" ]; then - echo "'${PROC}' not found or not readable." - exit 1 + echo "'${PROC}' not found or not readable. Not setting default sound card." + exit 0 fi if [ -w "/etc" ]; then -- cgit v1.2.3-55-g7522 From 923a5910525cbf792418965892ab65457430a2bb Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 3 May 2021 14:09:30 +0200 Subject: [nvidia-libs] Whiteout list is optional, so no error --- core/modules/nvidia-libs/data/addon-init | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/nvidia-libs/data/addon-init b/core/modules/nvidia-libs/data/addon-init index 061bff6b..ae0734c2 100755 --- a/core/modules/nvidia-libs/data/addon-init +++ b/core/modules/nvidia-libs/data/addon-init @@ -1,6 +1,6 @@ #!/bin/ash -[ -e "/opt/openslx/etc/nvidia.whiteout" ] || exit 66 +[ -e "/opt/openslx/etc/nvidia.whiteout" ] || exit 0 while read line; do rm -f -- "$line" -- cgit v1.2.3-55-g7522 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(-) 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 From 0bfcb437864bf0f43d88cf10013237dbf0525a0d Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Tue, 4 May 2021 13:38:35 +0200 Subject: [run-virt-docker] initial run-virt support for docker --- .../etc/X11/Xreset.d/cleanup-container-session | 32 ++++ .../hooks/auth-final-exec.d/30-add-to-docker.sh | 23 +++ .../vmchooser/plugins/docker/.bwlp-user-conf | 21 +++ .../openslx/vmchooser/plugins/docker/docker-init | 74 +++++++++ .../vmchooser/plugins/docker/docker-init.desktop | 12 ++ .../plugins/docker/includes/gio_allow_root_fix.inc | 12 ++ .../plugins/docker/includes/gio_mount_netshare.inc | 173 +++++++++++++++++++++ .../plugins/docker/includes/init_bind_mount.inc | 57 +++++++ .../plugins/docker/includes/init_user_context.inc | 92 +++++++++++ .../opt/openslx/vmchooser/plugins/docker/remount | 10 ++ .../vmchooser/plugins/docker/run-virt.include | 59 +++++++ core/modules/run-virt-docker/module.build | 13 ++ core/modules/run-virt-docker/module.conf | 4 + 13 files changed, 582 insertions(+) create mode 100644 core/modules/run-virt-docker/data/etc/X11/Xreset.d/cleanup-container-session create mode 100755 core/modules/run-virt-docker/data/opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh create mode 100755 core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf create mode 100755 core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init create mode 100755 core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init.desktop create mode 100755 core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/gio_allow_root_fix.inc create mode 100755 core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/gio_mount_netshare.inc create mode 100755 core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_bind_mount.inc create mode 100644 core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc create mode 100755 core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/remount create mode 100755 core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include create mode 100644 core/modules/run-virt-docker/module.build create mode 100644 core/modules/run-virt-docker/module.conf diff --git a/core/modules/run-virt-docker/data/etc/X11/Xreset.d/cleanup-container-session b/core/modules/run-virt-docker/data/etc/X11/Xreset.d/cleanup-container-session new file mode 100644 index 00000000..07da7b37 --- /dev/null +++ b/core/modules/run-virt-docker/data/etc/X11/Xreset.d/cleanup-container-session @@ -0,0 +1,32 @@ +#!/bin/sh + +#exec &> /tmp/cleanup-container-session.log +#set -x + +# remove scripts and autostart from $HOME +USER_CONTAINER_CONTEXT="$HOME/.local/docker" +USER_CONTAINER_AUTOSTART="$HOME/.config/autostart/docker-init.desktop" +[ -f "$USER_CONTAINER_AUTOSTART" ] && rm -- "$USER_CONTAINER_AUTOSTART" +[ -d "$USER_CONTAINER_CONTEXT" ] && rm -rf -- "$USER_CONTAINER_CONTEXT" + +# remove running containers +[ -n "$(docker ps -aq)" ] && docker rm -f $(docker ps -aq) > /dev/null + + +## CLEANUP GVFS RELATED STUFF +# + +# TODO: i don't know how to properly unmount a users gvfs locations under GVFS_MOUNTDIR. +# Either root can't do that for him nor root can't su into user and do it. (because of dbus thing) +# Maybe one simple solution could be that root kills the gvfsd-smb process ? +GVFS_MOUNTDIR="/run/user/$( id -u "$USER" )/gvfs" +#for location in "$GVFS_MOUNTDIR"/*; do +# [ -d "$location" ] && gio mount -u "$location" +#done + +# Look for soft link in HOME and HOME/Desktop whith point into GVFS_MOUNTDIR and delete them +FIND_OPT="-maxdepth 1 -type l" +DEAD_LINKS=$(find $HOME $FIND_OPT && find ${HOME}/Desktop/ $FIND_OPT ) +for dead_link in $DEAD_LINKS; do + [ "$GVFS_MOUNTDIR" = "$(dirname $(readlink $dead_link))" ] && rm -f -- "$dead_link"; +done diff --git a/core/modules/run-virt-docker/data/opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh b/core/modules/run-virt-docker/data/opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh new file mode 100755 index 00000000..f5db36e4 --- /dev/null +++ b/core/modules/run-virt-docker/data/opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh @@ -0,0 +1,23 @@ +#!/bin/ash + +adduser "${PAM_USER}" "docker" + +# create a location for user bind mount +# used in /opt/openslx/vmchooser/plugins/docker/includes/init-bind-mount.inc +DOCKER_TMP="/tmp/docker" +[ -e $DOCKER_TMP ] && rm -rf -- $DOCKER_TMP +[ ! -e $DOCKER_TMP ] && mkdir -p $DOCKER_TMP && chmod 0777 $DOCKER_TMP + +# TODO Check if same user logs on to the system. +# if prev_user != curr_user then delete existing /tmp/virt/docker/prev_user_uid:prev_user_gid/ + +# This changes the subuid and subgid for the dockremap(user) to the current user and restards the docker daemon. +# Because off this change in the docker daemon, for each userns will be a directory under /tmp/virt/docker/ +# so new users cannot uses previously downloade images by other user. +# But it saves the next user from using images, created by the previous user. + +sed -i "s/dockremap:[0-9]\+.65536/dockremap:$(id -u ${PAM_USER}):65536/g" /etc/subuid +sed -i "s/dockremap:[0-9]\+.65536/dockremap:$(id -g ${PAM_USER}):65536/g" /etc/subgid +systemctl restart docker.service + +exit 0 diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf new file mode 100755 index 00000000..ae6cb288 --- /dev/null +++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf @@ -0,0 +1,21 @@ +#!/bin/bash +# this configfile holds env vars for user context + +# Functions (writelog(), cleanexit(), safesource()) +source /opt/openslx/vmchooser/run-virt-includes/vmchooser_runvirt_functions.inc + +# do not use writelog in this context +function writelog () { + echo $1 +} + +export DOCKER_PLUGIN_DIR="" +export DOCKER_INCLUDE_DIR="" +export TMPDIR="" +export RUNSCRIPT="" + +export VM_DISKFILE_RO="" + +export CONTAINER_BUILD_CONTEXT="" +export CONTAINER_IMAGE_NAME="" +export CONTAINER_RUN_OPTIONS="" diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init new file mode 100755 index 00000000..5f52a16d --- /dev/null +++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init @@ -0,0 +1,74 @@ +#!/bin/bash + +USER_CONTAINER_CONFIG="" + +echo "+ source user_config $USER_CONTAINER_CONFIG" +source $USER_CONTAINER_CONFIG + +load_image () { + + IMAGE_SIZE=$(stat --printf="%s" $VM_DISKFILE_RO) + # check file size of VM_DISKFILE_RO is equals to 4096 = 4kB (because of padding) + if [[ $IMAGE_SIZE -eq 4096 ]]; then + echo "+ build container image with build_context" + echo "+ docker build --tag $CONTAINER_IMAGE_NAME $CONTAINER_BUILD_CONTEXT" + docker build --tag $CONTAINER_IMAGE_NAME $CONTAINER_BUILD_CONTEXT + else + # In this case a pre build container image (tar archive from "docker save ...") + # will be loaded into the local docker daemon. + echo "+ load container image" + # create TMP_FILE for image + local TMP_FILE=$(mktemp) + # write currently existing image ids into TMP_FILE + cp $VM_DISKFILE_RO $TMP_FILE + # recieve the RepoTag form the manifest.json inside the tar + local REPO_TAG=$(tar -axf $TMP_FILE manifest.json -O | jq -r '.[].RepoTags[0]') + # load image from tar file + docker load --input $TMP_FILE + # rename image + docker tag "$REPO_TAG" "$CONTAINER_IMAGE_NAME" + rm -f -- "$TMP_FILE" + fi + retval=$? + return $retval +} + +main () +{ + # TODO only check by image name could be bad, images whith a same name could exist + + # check if the container_image_name already loaded in docker daemon + if [[ -z $(docker images $CONTAINER_IMAGE_NAME -q) ]]; then + echo "+ Image unknown by docker daemon ..." + load_image + + if [[ "$retval" != "0" ]]; then + echo "...could not build/load container image!...giving up..." + return -1 + fi + fi + + if [[ -n "$(docker ps -aq)" ]]; then + echo "+ cleanup running container" + docker rm --force $(docker ps -aq) > /dev/null + fi + + echo "+ start container..." + echo "+ docker run $CONTAINER_RUN_OPTIONS $CONTAINER_BIND_MOUNT_STRING $CONTAINER_IMAGE_NAME" + docker run $CONTAINER_RUN_OPTIONS $CONTAINER_BIND_MOUNT_STRING $CONTAINER_IMAGE_NAME + + if [[ "$?" != "0" ]]; then + echo "...container start failed!...giving up..." + return -1 + fi + + if [[ -n $RUNSCRIPT ]]; then + echo "+ execute user runscript" + /bin/bash $RUNSCRIPT + fi +} + +main + +# keeping terminal open +bash diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init.desktop b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init.desktop new file mode 100755 index 00000000..87d418ea --- /dev/null +++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Encoding=UTF-8 +Name=docker-init +Type=Application +Exec= +Icon= +Terminal=true +StartupNotify=true +Hidden=false +GenericName= +GenericName[en_US]= \ No newline at end of file diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/gio_allow_root_fix.inc b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/gio_allow_root_fix.inc new file mode 100755 index 00000000..9ef14d81 --- /dev/null +++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/gio_allow_root_fix.inc @@ -0,0 +1,12 @@ +#!/bin/bash +writelog "+ apply 'allow_root' Option for gvfsd-fuse" + +# exec dummy call to start gvfsd and gvfsd-fuse +gio mount + +# create gvfs user dir mybe it does not exist at this point +mkdir -p "/run/user/$(id -u)/gvfs" + +fusermount -zu "/run/user/$(id -u)/gvfs" +killall gvfsd-fuse +/usr/lib/gvfs/gvfsd-fuse -o allow_root "/run/user/$(id -u)/gvfs" diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/gio_mount_netshare.inc b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/gio_mount_netshare.inc new file mode 100755 index 00000000..50e28fc0 --- /dev/null +++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/gio_mount_netshare.inc @@ -0,0 +1,173 @@ +#!/bin/bash + +# This script will be exectutet in docker lectures +# and provide the functonallity to mount netshares in the bwlp maxilinux system for the logged in user. +# + +# VARS +# +NETSHAREFILE="$CONFDIR/netshares" +CONFIGFILE="$TMPDIR/configfile" + +MOUNTS=() +DIRECTORY_LINKS=() + +GVFS_MOUNTDIR="/run/user/$( id -u "$USER" )/gvfs" + +declare -a ROHSHARES + +function cleanup_gio_mount() +{ + for i in "${MOUNTS[@]}"; do + gio mount -u "$i" + done + + for i in "${DIRECTORY_LINKS[@]}"; do + unlink "$i" + done +} + +function do_mount() +{ +gio mount "$MOUNT_PREFIX$SHAREPATH" < /dev/null + + if [[ "$DO_MOUNT_RETVAL" -eq 0 ]]; then + writelog "+ ... mount was successfull" + sleep 1 + provide_directory_links + MOUNTS+=("$MOUNT_PREFIX$SHAREPATH") + else + writelog "+ ... mount faild" + fi + done + + unset MOUNT_USER MOUNT_PASS +} + + +function gio_mount() +{ + # CLEANUP + rm -f -- "$CONFIGFILE" + touch "$CONFIGFILE" + # TODO existing gio mounts shouldn´t exist at this points + # remove them anyway + for location in "$GVFS_MOUNTDIR"/*; do + [ -d "$location" ] && gio mount -u "$location" + done + sleep 1 + + # Fill CONFIGFILE with pwdaemon info, how it is done in /opt/openslx/vmchooser/run-virt.d/setup_virtual_floppy.inc + # TODO some checks if everthing run fine. + pwdaemon --query "$HOME/.pwsocket" > "$CONFIGFILE" + sed -i 's/^/192.168.101.1\t/' "$CONFIGFILE" + + # Attach netshares to CONFIGFILE + cat "$NETSHAREFILE" >> "$CONFIGFILE" + + # With this preparetion of CONFIGFILE functions from /opt/openslx/vmchooser/data/linux/includes/ + # can be uesed. NATADDR, PORT, KEYTEMP, RAWKEYTEMP and BYTES required in get_creds + NATADDR=$( head -n 1 "$CONFIGFILE" | cut -f 1 -d$'\t' ) + PORT=$( head -n 1 "$CONFIGFILE" | cut -f 2 -d$'\t' ) + KEYTEMP="$( mktemp -t XXXXXXXXXX.dat )" + RAWKEYTEMP="$( mktemp -t XXXXXXXXXX.dat )" + BYTES=256 + + source /opt/openslx/vmchooser/data/linux/includes/10_functions.inc + source /opt/openslx/vmchooser/data/linux/includes/20_get_creds.inc + source /opt/openslx/vmchooser/data/linux/includes/30_get_shares.inc + + # getting user credentials + get_creds + + # load shares from CONFIGFILE (../metadata/netshares) into ROHSHARES variable + get_shares + + # check if required VARS for mounting are non zero + if [[ -n "$ROHSHARES" && -n "$PW" && -n "$USER" ]]; then + # mount each mountpoint + writelog "+ initialize complete ... mount shares" + mount_shares + else + writelog "+ initialize failed" + fi +} + +# check if size of NETSHAREFILE > 0 +if [[ -s "$NETSHAREFILE" ]]; then + writelog "+ NETSHAREFILE: ${NETSHAREFILE} contains informations for network drives... initialize gio mount" + gio_mount + add_cleanup cleanup_gio_mount +else + writelog "+ NETSHAREFILE: ${NETSHAREFILE} empty ... nothing to mount" +fi + +unset PW +rm -f -- "$KEYTEMP" "$RAWKEYTEMP" "$CONFIGFILE" diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_bind_mount.inc b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_bind_mount.inc new file mode 100755 index 00000000..ad82ef51 --- /dev/null +++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_bind_mount.inc @@ -0,0 +1,57 @@ +#!/bin/bash + +## required vars +# TMPDIR=/tmp/virt/// +# USER_CONTAINER_CONFIG +# NETSHARE_DIR + +# vars +BIND_MOUNT_FILE="$CONFDIR/container_meta.json" +# TODO: Maybe make this an array to support spaces +BIND_MOUNT_STRING="" + + +BIND_MOUNT_COUNT="$( cat "$BIND_MOUNT_FILE" | jq '.bind_mount_config | length' )" + +for (( index=0; index < "$BIND_MOUNT_COUNT"; index++ )); do + + BIND_MOUNT_INFO="$( jq .bind_mount_config["$index"] "$BIND_MOUNT_FILE" )" + + # expecting source to be a MOUNT_LETTER, wich must replaced with the directory + BIND_MOUNT_SOURCE="$( jq -r .source <<< "$BIND_MOUNT_INFO" )" + BIND_MOUNT_TARGET="$( jq -r .target <<< "$BIND_MOUNT_INFO" )" + BIND_MOUNT_OPTION="$( jq -r .option <<< "$BIND_MOUNT_INFO" )" + + if [[ -z "$BIND_MOUNT_SOURCE" || -z "$BIND_MOUNT_TARGET" ]]; then + writelog "+ no proper bind mount option provided!" + continue + fi + + # USER_HOME is selected + if [[ "$BIND_MOUNT_SOURCE" == "USER_HOME" ]]; then + if [[ -d "$HOME/PERSISTENT" ]]; then + BIND_MOUNT_STRING+=" --mount type=bind,source=$HOME/PERSISTENT,target=$BIND_MOUNT_TARGET" + else + # user has no PERSISTENT, maybe this is a demo user just mount $HOME + BIND_MOUNT_STRING+=" --mount type=bind,source=$HOME,target=$BIND_MOUNT_TARGET" + fi + + # If USER_TMP is used, create a locaten for client user and bind mount into container + elif [[ "$BIND_MOUNT_SOURCE" == "USER_TMP" ]]; then + # DOCKER_TMP created and cleand in opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh + DOCKER_TMP="/tmp/docker" + DOCKER_USER_TMP="$DOCKER_TMP/$(id -u)" + [ ! -e $DOCKER_USER_TMP ] && mkdir -p $DOCKER_USER_TMP && chmod 0700 $DOCKER_USER_TMP + BIND_MOUNT_STRING+=" --mount type=bind,source=$DOCKER_USER_TMP,target=$BIND_MOUNT_TARGET" + + elif [[ -z "${NETSHARE_DIR[$BIND_MOUNT_SOURCE]}" ]]; then + writelog "+ no bind mount mapping for letter $BIND_MOUNT_SOURCE found!" + continue + else + BIND_MOUNT_STRING+=" --mount type=bind,\\\"source=${NETSHARE_DIR[$BIND_MOUNT_SOURCE]}\\\",target=$BIND_MOUNT_TARGET" + fi + +done + +writelog "+ write final CONTAINER_BIND_MOUNT_STRING $BIND_MOUNT_STRING in config $USER_CONTAINER_CONFIG" +echo "CONTAINER_BIND_MOUNT_STRING=\"${BIND_MOUNT_STRING}\"" >> ${USER_CONTAINER_CONFIG} diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc new file mode 100644 index 00000000..99ba4580 --- /dev/null +++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc @@ -0,0 +1,92 @@ +#!/bin/bash + + +function process_container_meta() +{ + writelog "+ process container_meta.json" + # Try to make a valid CONTAINER_IMAGE_NAME + export CONTAINER_IMAGE_NAME=$( jq -r '.image_name' "$CONFDIR/container_meta.json" | \ + tr '[:upper:]' '[:lower:]' | sed -e 's/^[[:space:]]*//g' -e 's/[[:space:]]*$//g' | sed -e 's/[[:space:]]/_/g') + export CONTAINER_RUN_OPTIONS=$( jq -r '.run_options' "$CONFDIR/container_meta.json" ) + + + # set build context + build_context_method=$( jq -r '.build_context_method' "$CONFDIR/container_meta.json" ) + if [[ "$build_context_method" == "0" ]]; then + writelog "+ container_build_context: dockerfile" + export CONTAINER_BUILD_CONTEXT="$CONFDIR/" + elif [[ "$build_context_method" == "1" ]]; then + writelog "+ container_build_context: git url" + export CONTAINER_BUILD_CONTEXT=$( jq -r '.build_context_url' "$CONFDIR/container_meta.json" ) + else + writelog "+ no proper build_context_method!" + cleanexit 1 + fi +} + + +function setup_user_container_context() +{ + mkdir -p "$USER_CONTAINER_CONTEXT" + # init user directory with scripts + cp "$DOCKER_PLUGIN_DIR/docker-init" "$USER_CONTAINER_CONTEXT/" + cp "$DOCKER_PLUGIN_DIR/remount" "$USER_CONTAINER_CONTEXT/" + cp "$DOCKER_PLUGIN_DIR/.bwlp-user-conf" "$USER_CONTAINER_CONFIG" + chmod u+x "$USER_CONTAINER_CONTEXT/docker-init" + chmod u+x "$USER_CONTAINER_CONTEXT/remount" +} + + +function setup_user_container_autostart() +{ + # TODO: maybe there is a better way to load and start the container which is used in the current lecture + mkdir -p "$HOME/.config/autostart/" + cp -f "$DOCKER_PLUGIN_DIR/docker-init.desktop" "$HOME/.config/autostart/" + sed -i "s:Exec=:Exec=$USER_CONTAINER_CONTEXT/docker-init:" "$HOME/.config/autostart/docker-init.desktop" +} + + +function init_user_container_config() +{ + if [[ ! -f "$USER_CONTAINER_CONFIG" ]]; then + writelog "+ USER_CONTAINER_CONFIG: $USER_CONTAINER_CONFIG does not exist!" + cleanexit 1 + fi + + process_container_meta + + writelog "+ init USER_CONTAINER_CONFIG: $USER_CONTAINER_CONFIG" + sed -i "s#export DOCKER_PLUGIN_DIR=".*"#export DOCKER_PLUGIN_DIR=\"$DOCKER_PLUGIN_DIR\"#" "$USER_CONTAINER_CONFIG" + sed -i "s#export DOCKER_INCLUDE_DIR=".*"#export DOCKER_INCLUDE_DIR=\"$DOCKER_INCLUDE_DIR\"#" "$USER_CONTAINER_CONFIG" + sed -i "s#export TMPDIR=".*"#export TMPDIR=\"$TMPDIR\"#" "$USER_CONTAINER_CONFIG" + + sed -i "s#export VM_DISKFILE_RO=".*"#export VM_DISKFILE_RO=\"$VM_DISKFILE_RO\"#" "$USER_CONTAINER_CONFIG" + + sed -i "s#export CONTAINER_BUILD_CONTEXT=".*"#export CONTAINER_BUILD_CONTEXT=\"$CONTAINER_BUILD_CONTEXT\"#" "$USER_CONTAINER_CONFIG" + sed -i "s#export CONTAINER_IMAGE_NAME=".*"#export CONTAINER_IMAGE_NAME=\"$CONTAINER_IMAGE_NAME\"#" "$USER_CONTAINER_CONFIG" + sed -i "s#export CONTAINER_RUN_OPTIONS=".*"#export CONTAINER_RUN_OPTIONS=\"$CONTAINER_RUN_OPTIONS\"#" "$USER_CONTAINER_CONFIG" + + local RUNSCRIPT="$CONFDIR/runscript" + # check if runscript file contains more than default line "ext=;visibility=1;soundMuted=-1" + if [[ "$( < "$RUNSCRIPT" wc -l )" -gt "1" ]]; then + sed -i "s#export RUNSCRIPT=".*"#export RUNSCRIPT=\"$RUNSCRIPT\"#" "$USER_CONTAINER_CONFIG" + fi + + sed -i "s#USER_CONTAINER_CONFIG=".*"#USER_CONTAINER_CONFIG=\"$USER_CONTAINER_CONFIG\"#" "$USER_CONTAINER_CONTEXT/docker-init" +} + + +function cleanup_user_container_context() +{ + [ -d "$USER_CONTAINER_CONTEXT" ] && rm -rf -- "$USER_CONTAINER_CONTEXT" + [ -f "$HOME/.config/autostart/docker-init.desktop" ] && rm "$HOME/.config/autostart/docker-init.desktop" + + # force remove all containers + [ -n "$(docker ps -aq)" ] && docker rm -f $(docker ps -aq) > /dev/null +} + + +setup_user_container_context +setup_user_container_autostart +init_user_container_config +add_cleanup cleanup_user_container_context diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/remount b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/remount new file mode 100755 index 00000000..d4a4f5de --- /dev/null +++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/remount @@ -0,0 +1,10 @@ +#!/bin/bash +# + +source "$HOME/.bwlp-user-conf" + +writelog "+ start mounting" +$(safesource "${DOCKER_INCLUDE_DIR}/gio_mount_netshare.inc") + +writelog "+ create bind mount string" +$(safesource "${DOCKER_INCLUDE_DIR}/init_bind_mount.inc") diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include new file mode 100755 index 00000000..55f89e01 --- /dev/null +++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include @@ -0,0 +1,59 @@ +#!/bin/bash +############################################################################### +# ----------------------------------------------------------------------------- +# +# Copyright (c) 2009..2018 bwLehrpool-Projektteam +# +# This program/file is free software distributed under the GPL version 2. +# See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# If you have any feedback please consult https://bwlehrpool.de and +# send your feedback to bwlehrpool@hs-offenburg.de. +# +# General information about bwLehrpool can be found at https://bwlehrpool.de +# +# ----------------------------------------------------------------------------- +# run-virt.include +# - qemu/kvm plugin for vmchooser run-virt +################################################################################ + +# BASH_SOURCE[0] contains the file being sourced, namely this one +declare -rg DOCKER_PLUGIN_DIR="$(dirname "${BASH_SOURCE[0]}")" +declare -rg DOCKER_INCLUDE_DIR="${DOCKER_PLUGIN_DIR}/includes" + +# TODO make this part of the metadata coming from the server +# TBD: "firewall printer usb slxfloppy sound netshares" +declare -rg PLUGIN_FEATURES="" + +run_plugin() { + + # VMX == bwlp-container-info.tar.gz + writelog "+ unpacking container ressources" + tar -xzvf "$TMPCONFIG" --directory "$CONFDIR" + + # VARS + # location of scripts and config files which will be used in desktop + export USER_CONTAINER_CONTEXT="$HOME/.local/docker" + # config file which will be filed with vars in the follwing process + export USER_CONTAINER_CONFIG="$USER_CONTAINER_CONTEXT/.bwlp-user-conf" + # dictonary which maps a drive letter to a directory + declare -Ag NETSHARE_DIR + + # apply "allow_root" option to gvfsd-fuse, so docker can bind mount gvfs network shares + writelog "+ gio_allow_root_fix.inc" + $( safesource "${DOCKER_INCLUDE_DIR}/gio_allow_root_fix.inc" ) + + # mount netshares from CONFDIR/netshares + writelog "+ gio_mount_netshare.inc" + $( safesource "${DOCKER_INCLUDE_DIR}/gio_mount_netshare.inc" ) + + writelog "+ init user container context" + $( safesource "${DOCKER_INCLUDE_DIR}/init_user_context.inc" ) + + # init bind mount option for container + writelog "+ init_bind_mount.inc" + $( safesource "${DOCKER_INCLUDE_DIR}/init_bind_mount.inc" ) + + # HACK: using the modified version of the wrapper script + declare -rg VIRTCMD="startxfce4" +} diff --git a/core/modules/run-virt-docker/module.build b/core/modules/run-virt-docker/module.build new file mode 100644 index 00000000..5086d1bc --- /dev/null +++ b/core/modules/run-virt-docker/module.build @@ -0,0 +1,13 @@ +#!/bin/bash +# fake module simply copying its data/ files +fetch_source() { + : +} + +build() { + : +} + +post_copy() { + : +} diff --git a/core/modules/run-virt-docker/module.conf b/core/modules/run-virt-docker/module.conf new file mode 100644 index 00000000..8811668a --- /dev/null +++ b/core/modules/run-virt-docker/module.conf @@ -0,0 +1,4 @@ +#!/bin/bash +REQUIRED_BINARIES="" +REQUIRED_LIBRARIES="" +REQUIRED_DIRECTORIES="" -- cgit v1.2.3-55-g7522 From 1508a24d444412c4b3dc07887edd31a19b8a40f5 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Tue, 4 May 2021 14:27:40 +0200 Subject: [run-virt-docker] change to new email address --- .../data/opt/openslx/vmchooser/plugins/docker/run-virt.include | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include index 55f89e01..610c7814 100755 --- a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include +++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include @@ -8,7 +8,7 @@ # See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html # # If you have any feedback please consult https://bwlehrpool.de and -# send your feedback to bwlehrpool@hs-offenburg.de. +# send your feedback to support@bwlehrpool.de. # # General information about bwLehrpool can be found at https://bwlehrpool.de # -- cgit v1.2.3-55-g7522