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

Date        : 2019/01/18 00:24
Browser     : Mozilla/5.0 (X11; Linux x86_64; rv:52.9) Gecko/20100101 
Goanna/3.4 Firefox/52.9 PaleMoon/27.9.4
IP-Address  : 149.172.203.221
Hostname    : HSI-KBW-149-172-203-221.hsi13.kabel-badenwuerttemberg.de
Old Revision: https://wiki.x2go.org/doku.php/doc:howto:tce?rev=1547749609
New Revision: https://wiki.x2go.org/doku.php/doc:howto:tce
Edit Summary: [Live-Patching the Build] - script is now in git and can be 
fetched with wget
User        : stefanbaur

@@ -145,292 +145,9 @@
<code>
 #!/bin/bash
 mkdir -p ./patch/includes.chroot/usr/lib/x2go/tce/
- - cat >./patch/includes.chroot/usr/lib/x2go/tce/x2gousbmount <<'USBMOUNTPATCH' - - #!/usr/bin/perl
- # Copyright (C) 2007-2017 by X2Go project, http://wiki.x2go.org
- #       Oleksandr Shneyder <[email protected]>
- - # X2Go is free software; you can redistribute it and/or modify
- # it under the terms of the
GNU General Public License as published by
- # the Free Software Foundation; either version 2 of the License, or
- # (at your option) any later version.
- #
- # X2Go is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the
- # Free Software Foundation, Inc.,
- # 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
-         # username "x2gothinclient" regardless of whether
-         # it runs on X2Go-TCE-Live or X2Go-TCE-NFS
-         $user='x2gothinclient';
- }
- elsif ( -d "/lib/live/config" ) {
-         # this is X2Go-TCE-Live, but not with a minidesktop
-         # (if it were, the first condition would have matched),
-         # so we use Debian-Live's standard username "user"
-         $user='user';
- }
- else {
-         # this is X2Go-TCE-NFS or something completely different,
-         # so we'll play it safe and pick the username "x2gothinclient"
-         # just like previous versions of this script did
-         $user='x2gothinclient';
- }
- - # We need this as chown requires numeric uid/gid
- my ($login,$pass,$uid,$gid) = getpwnam($user);
- - # Some last-ditch
efforts to fulfill the prerequisites for File Sharing:
- # - This is stuff that should already have happened earlier in the boot 
process.
- # - Also, if a directory already exists, we silently assume that ownership and
- #   permissions are correct. This is so that users that deliberately set
- #   different ownership/permission values don't have their settings silently
- #   overwritten.
- - unless ( -d expand_filename("~$user/mounts") ) {
-         mkdir expand_filename("~$user/mounts");
-         chmod 0700, expand_filename("~$user/mounts");
-         chown $uid, $gid, expand_filename("~$user/mounts");
- }
- - unless ( -d expand_filename("~$user/export") ) {
-         mkdir expand_filename("~$user/export");
-         chmod 0700, expand_filename("~$user/export");
-         chown $uid, $gid, expand_filename("~$user/export");
- }
- - unless ( -d expand_filename("~$user/logins") ) {
-         mkdir expand_filename("~$user/logins");
-         chmod 0700,
expand_filename("~$user/logins");
-         chown $uid, $gid, expand_filename("~$user/logins");
- }
- - sub check_x2gothinclientmode {
-         my $ret = 0;
- - # Check for x2gothinclientd first...
-         my $x=`ps ax | grep x2gothinclient`;
-         if ( $x=~m/thinclientd/ ) {
-                 $ret = 1;
-         }
- - return $ret;
- }
- - # 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'};
-         my $model=$ENV{'ID_MODEL'};
-         my $vendor=$ENV{'ID_VENDOR'};
-         my $action=$ENV{'ACTION'};
-         my @ldev=split("/","$dev");
-         my $ldev=@ldev[@ldev-1];
-         # mntdir is not the directory
where the mountpoint will be rooted,
-         # but where tracking of mount states takes place
-         my $mntdir;
-         if ( -d expand_filename("~$user/mounts") ) {
-                 $mntdir=expand_filename("~$user/mounts");
-         }
-         elsif ( -d "/var/run" ) {
-                 $mntdir="/var/run";
-         }
-         elsif ( -d "/run" ) {
-                 $mntdir="/run";
-         }
-         else {
-                 die "No directory found that we could use as \$mntdir..."
-         }
- - my $name="${vendor}_${model}";
-         $name=~s/ //g;
-         $name=~s/\\//g;
-         $name=~s/\///g;
-         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" ) {
- - ###
-                 ### ACTION: mount device after it has been added to USB 
subsystem
-                 ###
- - syslog('notice', "device add action called"); - - # prepare mount points
-                 mkdir("/media");
-                 mkdir("/media/$name");
-                 mkdir("/media/$name/$ldev");
- - # mount the USB device
-                 # sync is supported by all file systems
-                 # uid is supported by vfat (via fat),ntfs,hfs,hpfs
-                 # uni_xlate is supported by vfat,ntfs
-                 # we must not trigger on iso9660 and udf, or else hybrid USB 
media
-                 # 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 -tntfs $dev /media/$name/$ldev -o
uid=$user,sync,uni_xlate")==0 ) {
-                         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 -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...
-                         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 hpfs $dev /media/$name/$ldev -o 
uid=$user,sync")==0 ) {
-                         syslog('notice', "USB device $name ($ldev) successfully 
mounted (hpfs 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("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"));
-                         print D "export=/media/$name/$ldev\n";
-                         close (D);
-                 }
-                 else {
-                         # the mount failed, let's assume that the device is 
encrypted...
-                         my $enc=`ls -1 $mntdir | grep .encrypted`;
-                         if ( $enc eq "" ) {
-                                 #
use cryptsetup to decrypt the device...
-                                 system("/sbin/cryptsetup --key-file 
/etc/keys/keystick.key luksOpen $dev keystick");
- - # mount the ,,decrypted'' USB device via devmapper...
-                                 if ( system("mount /dev/mapper/keystick 
/media/$name/$ldev")==0 ) {
-                                         # inform x2goclient about this...
-                                         system("touch 
$mntdir/$ldev.encrypted");
-                                         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" ) {
- - ###
-                 ### ACTION: unmount device after it has been removed from the 
USB subsystem
-                 ###
- - syslog('notice', "device remove action called"); - - # we rely on our own mount logistics here...
-                 if ( -e "$mntdir/$ldev.mounted" ) {
-                         # 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"));
-                         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" ) {
-                         # inform x2goclient that the device has been removed
-                         # release the encrypted device mapping
-                         unlink ("$mntdir/$ldev.encrypted");
-                         open ( 
D,">",expand_filename("~$user/logins/$name.$ldev.unexport"));
-                         print D "logout=/media/$name/$ldev\n";
-
                       system("umount /media/$name/$ldev");
-                         system("/sbin/cryptsetup luksClose keystick");
-                         close (D);
-                 }
-         }
- - close (F);
- } else {
- - syslog('notice', "not in any thinclient mode, exiting");
- }
- USBMOUNTPATCH
+ wget -O ./patch/includes.chroot/usr/lib/x2go/tce/x2gousbmount 'https://code.x2go.org/gitweb?p=x2gothinclient.git;a=blob_plain;f=usbmount/x2gousbmount;hb=c6106bd12ca0278b8706e87813ff782c0bbb6132' chmod 755 ./patch/includes.chroot/usr/lib/x2go/tce/x2gousbmount
 </code>
==== Starting the Build ====


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

_______________________________________________
x2go-commits mailing list
[email protected]
https://lists.x2go.org/listinfo/x2go-commits

Reply via email to