[X2Go-Commits] [[X2Go Wiki]] page changed: doc:howto:tce

wiki-admin at x2go.org wiki-admin at x2go.org
Mon Feb 12 13:40:13 CET 2018


A page in your DokuWiki was added or changed. Here are the details:

Date        : 2018/02/12 12:40
Browser     : Mozilla/5.0 (X11; Linux x86_64; rv:52.9) Gecko/20100101 Goanna/3.4 Firefox/52.9 PaleMoon/27.7.2
IP-Address  : 134.3.37.90
Hostname    : HSI-KBW-134-3-37-90.hsi14.kabel-badenwuerttemberg.de
Old Revision: https://wiki.x2go.org/doku.php/doc:howto:tce?rev=1516988459
New Revision: https://wiki.x2go.org/doku.php/doc:howto:tce
Edit Summary: [Live-Patching the Build] updated USB media mount patch
User        : stefanbaur

@@ -145,10 +145,10 @@
  <code>
  mkdir -p ./patch/includes.chroot/usr/lib/x2go/tce/
  
  cat >./patch/includes.chroot/usr/lib/x2go/tce/x2gousbmount <<'USBMOUNTPATCH'
- #!/usr/bin/perl
  
+ #!/usr/bin/perl
  # Copyright (C) 2007-2017 by X2Go project, http://wiki.x2go.org
  #       Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
  
  # X2Go is free software; you can redistribute it and/or modify
@@ -167,9 +167,18 @@
  # 51 Franklin St, Fifth Floor,
Boston, MA 02110-1301, USA.
  
  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" ) {
          # this is a minidesktop environment, which uses
@@ -216,11 +225,8 @@
          mkdir expand_filename("~$user/logins");
          chmod 0700, 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;
  
@@ -229,20 +235,15 @@
          if ( $x=~m/thinclientd/
) {
                  $ret = 1;
          }
  
-         # And for x2goclient --thinclient if nothing was found.
-         if ( !$ret ) {
-                 $x=`ps u -C x2goclient`;
-                 if ( $x=~m/\W*--thinclient\W*/ ) {
-                         $ret = 1;
-                 }
-         }
          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");
  
          my $dev=$ENV{'DEVNAME'};
@@ -274,8 +275,13 @@
          print F "action: $action,  device: $dev, model: $model ($ldev), total: $name\n";
          mkdir("/media");
          mkdir("/media/$name");
 
        print F "$name\n";
+ 
+         if (`lsblk -ln -oRM $dev`=~/0$/) {
+                 syslog('notice', "device is non-removable device, skipping");
+                 exit 0;
+         }
  
          if ( $action eq "add" ) {
  
                  ###
@@ -329,9 +335,9 @@
                          open (D,">",expand_filename("~$user/export/$name.$ldev"));
                          print D "export=/media/$name/$ldev\n";
                          close (D);
                  }
-                 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...
                          system("touch $mntdir/$ldev.mounted");
                          open
(D,">",expand_filename("~$user/export/$name.$ldev"));
@@ -352,18 +358,35 @@
                                          system("chown -R $user /media/$name/$ldev/dsa.key");
                                          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 {
                                  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" ) {
  
                  ###
@@ -377,9 +400,14 @@
                          # 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 (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");
                  }
                  elsif ( -e "$mntdir/$ldev.encrypted" ) {
@@ -394,10 +422,12 @@
               
  }
          }
  
          close (F);
- }
+ } else {
  
+         syslog('notice', "not in any thinclient mode, exiting");
+ }
  USBMOUNTPATCH
  chmod 755 ./patch/includes.chroot/usr/lib/x2go/tce/x2gousbmount
  </code>
  


-- 
This mail was generated by DokuWiki at
https://wiki.x2go.org/



More information about the x2go-commits mailing list