[X2Go-Commits] [x2gothinclient] 01/02: usbmount/x2gousbmount: pull (most) changes from doc:howto:tce wiki page.

git-admin at x2go.org git-admin at x2go.org
Thu Jan 17 05:50:08 CET 2019


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2gothinclient.

commit 3415fafa35ec8c0215c4e61b8330d679d3cf25d1
Author: Stefan Baur <X2Go-ML-1 at baur-itcs.de>
Date:   Thu Jan 17 05:47:11 2019 +0100

    usbmount/x2gousbmount: pull (most) changes from doc:howto:tce wiki page.
---
 debian/changelog      |  5 ++++
 usbmount/x2gousbmount | 72 +++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 63 insertions(+), 14 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index f083c8b..888b59a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,11 @@ x2gothinclient (1.5.0.1-0x2go1) UNRELEASED; urgency=medium
     - management/etc/x2gothinclient_settings: remove heuler from apt line.
     - management/etc/x2gothinclient_settings: add "extras" component.
 
+  [ Stefan Baur ]
+  * New upstream release (1.5.0.1):
+  * usbmount/x2gousbmount:
+    - Pull (most) changes from doc:howto:tce wiki page.
+
  -- X2Go Release Manager <git-admin at x2go.org>  Sun, 02 Dec 2018 06:49:42 +0100
 
 x2gothinclient (1.5.0.0-0x2go1) unstable; urgency=low
diff --git a/usbmount/x2gousbmount b/usbmount/x2gousbmount
index 946fe72..131a513 100755
--- a/usbmount/x2gousbmount
+++ b/usbmount/x2gousbmount
@@ -20,7 +20,16 @@
 
 use strict;
 use File::Path::Expand;
+# comment out this "use" and the following two lines, and instead
+# uncomment the block below if you need to do early boot stage
+# debugging of the automounter, when rsyslogd isn't running yet
 use Sys::Syslog qw( :standard :macros );
+openlog($0, 'cons,pid', 'user');
+setlogmask(LOG_UPTO(LOG_NOTICE));
+#open (B, ">> /var/log/usbdebug");
+#sub syslog {
+#       print B $_[0] . ': ' . $_[1] . "\n";
+#}
 
 my $user;
 if ( -f "/etc/x2go/x2gothinclient-minidesktop_start" ) {
@@ -70,9 +79,6 @@ unless ( -d expand_filename("~$user/logins")) {
 	chown $uid, $gid, expand_filename("~$user/logins");
 }
 
-openlog($0,'cons,pid','user');
-setlogmask( LOG_UPTO(LOG_NOTICE) );
-
 sub check_x2gothinclientmode {
 	my $ret = 0;
 
@@ -94,8 +100,10 @@ sub check_x2gothinclientmode {
 	return $ret;
 }
 
-if ( check_x2gothinclientmode() || ( -x "/etc/x2go/x2gothinclient-minidesktop_start" ) )
+#    TCE-NFS                     TCE-Live                                              MMD-Live
+if ((check_x2gothinclientmode()) || (-x "/lib/live/config/2900-x2go-thinclientconfig") || (-x "/etc/x2go/x2gothinclient-minidesktop_start"))
 {
+	syslog('notice', "some kind of thinclient mode detected");
 
 	open (F,">>/var/log/usb");
 
@@ -127,7 +135,12 @@ if ( check_x2gothinclientmode() || ( -x "/etc/x2go/x2gothinclient-minidesktop_st
 	mkdir("/media/$name");
 	print F "$name\n";
 
-	if ( $action eq "add")
+	if (`lsblk -ln -oRM $dev` =~ /0$/) {
+		syslog('notice', "device is non-removable device, skipping");
+		exit 0;
+	}
+
+	if ( $action eq "add" )
 	{
 
 		###
@@ -149,16 +162,26 @@ if ( check_x2gothinclientmode() || ( -x "/etc/x2go/x2gothinclient-minidesktop_st
 		# would only cause a mount of the iso9660 raw device,
 		# blocking the mount of individual partitions
 		# real optical media ->x2gocdmanager/x2gothinclient-cdmanager package
-		if(system("mount -tvfat,ntfs $dev /media/$name/$ldev -o uid=$user,sync,uni_xlate")==0)
+
+		if (system("mount -tntfs $dev /media/$name/$ldev -o uid=$user,sync,uni_xlate") == 0)
 		{
-			syslog('notice', "USB device $name ($ldev) successfully mounted (probably vfat or ntfs)");
+			syslog('notice', "USB device $name ($ldev) successfully mounted (ntfs detected)");
 			# if mounted, inform x2goclient about it...
 			system("touch $mntdir/$ldev.mounted");
 			open (D,">",expand_filename("~$user/export/$name.$ldev"));
 			print D "export=/media/$name/$ldev\n";
 			close (D);
 		}
-		elsif(system("mount -t hfs $dev /media/$name/$ldev -o uid=$user,sync")==0)
+		elsif (system("mount -tvfat $dev /media/$name/$ldev -o uid=$user,sync,uni_xlate") == 0)
+		{
+			syslog('notice', "USB device $name ($ldev) successfully mounted (vfat detected)");
+			# if mounted, inform x2goclient about it...
+			system("touch $mntdir/$ldev.mounted");
+			open (D, ">", expand_filename("~$user/export/$name.$ldev"));
+			print D "export=/media/$name/$ldev\n";
+			close (D);
+		}
+		elsif (system("mount -t hfs $dev /media/$name/$ldev -o uid=$user,sync") == 0)
 		{
 			syslog('notice', "USB device $name ($ldev) successfully mounted (hfs detected)");
 			# if mounted, inform x2goclient about it...
@@ -176,10 +199,7 @@ if ( check_x2gothinclientmode() || ( -x "/etc/x2go/x2gothinclient-minidesktop_st
 			print D "export=/media/$name/$ldev\n";
 			close (D);
 		}
-		# We use fuseext2 for read-only EXT* mounts since this driver does not
-		# check the usual file permission hierarchy and allows (read-only)
-		# access to any file on the file system.
-		elsif(system("fuseext2 $dev /media/$name/$ldev -o ro")==0)
+		elsif (system("fuseext2 $dev /media/$name/$ldev -o ro,allow_other") == 0)
 		{
 			syslog('notice', "USB device $name ($ldev) successfully mounted readonly (ext*fs detected)");
 			# if mounted, inform x2goclient about it...
@@ -206,11 +226,13 @@ if ( check_x2gothinclientmode() || ( -x "/etc/x2go/x2gothinclient-minidesktop_st
 					open (D,">",expand_filename("~$user/logins/$name.$ldev"));
 					print D "login=/media/$name/$ldev\n";
 					close (D);
+					print F "encrypted mount successful ($ldev)\n";
 				}
 				else
 				{
 					# on mount failures release the decrypted device again
 					system("/sbin/cryptsetup luksClose keystick");
+					print F "mount failed ($ldev)\n";
 				}
 			}
 			else
@@ -218,6 +240,21 @@ if ( check_x2gothinclientmode() || ( -x "/etc/x2go/x2gothinclient-minidesktop_st
 				print F "cryptodisk already present\n";
 			}
 		}
+		if (-e "/media/$name/$ldev") {
+			print F "detected mountpoint '/media/$name/$ldev'\n";
+			print F "running '/sbin/blkid -o value -s LABEL $dev'\n";
+			my $label = `/sbin/blkid -o value -s LABEL $dev`;
+			chomp($label);
+			if ($label) {
+				print F "symlinking '/media/$name/$ldev' and '/media/$name/$label'\n";
+				unlink "/media/$name/$label" if ( -l "/media/$name/$label" );
+				symlink("/media/$name/$ldev", "/media/$name/$label");
+				open (D, ">>", expand_filename("~$user/export/$name.$ldev"));
+				print D "export=/media/$name/$label\n";
+				close (D);
+			}
+		}
+
 	}
 	elsif ( $action eq "remove" )
 	{
@@ -234,8 +271,13 @@ if ( check_x2gothinclientmode() || ( -x "/etc/x2go/x2gothinclient-minidesktop_st
 			# inform x2goclient that the device has been removed
 			system ("umount -ff /media/$name/$ldev");
 			unlink ("$mntdir/$ldev.mounted");
-			open ( D,">",expand_filename("~$user/export/$name.$ldev.unexport"));
-			print D "unexport=/media/$name/$ldev\n";
+			open (D, ">", expand_filename("~$user/export/$name.$ldev.unexport"));
+			open (I, "<", expand_filename("~$user/export/$name.$ldev"));
+			while (<I>) {
+				$_ =~ s/^export=/unexport=/i;
+				print D $_;
+			}
+			close (I);
 			close (D);
 			syslog('notice', "USB device $name ($ldev) successfully unmounted");
 		}
@@ -253,4 +295,6 @@ if ( check_x2gothinclientmode() || ( -x "/etc/x2go/x2gothinclient-minidesktop_st
 	}
 
 	close (F);
+} else {
+	syslog('notice', "not in any thinclient mode, exiting");
 }

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2gothinclient.git


More information about the x2go-commits mailing list