The branch, master has been updated via 68c31a60197982a605f9e38a6e4720ab05e56825 (commit) from c6ecbeac0b53bea969d82c2cf8fe54ac28f762f8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 68c31a60197982a605f9e38a6e4720ab05e56825 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Feb 1 12:44:48 2012 +0100 changelog cleanup ----------------------------------------------------------------------- Summary of changes: debian/changelog | 4 +- x2goserver/bin/x2gomountdirs | 380 +++++++++++++++++++++++----------------- x2goserver/etc/x2goserver.conf | 4 + 3 files changed, 222 insertions(+), 166 deletions(-) The diff of changes is: diff --git a/debian/changelog b/debian/changelog index 58ff0d3..311a312 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,7 +2,7 @@ x2goserver (3.0.99.10-0~x2go1) UNRELEASED; urgency=low [ Mike Gabriel ] * New upstream version (3.0.99.10): - - Replace all string ,,X2Go.' with ,,X2Go''. + - Replace all string ,,X2go.' with ,,X2Go''. - Use $(MAKE) -C <subdir> calls to run Makefiles in subfolders. - Disable rastering in >= KDE4.8 and Qt4.8. * x2goserver.postinst script leaves the DB file alone if @@ -19,7 +19,7 @@ x2goserver (3.0.99.10-0~x2go1) UNRELEASED; urgency=low * New upstream version (3.0.99.10): - Check whether the associated TCP/IP port is available before assigning a display number. - * Add net-tools packaged as dependency. + * Add net-tools package as dependency. [ John Williams ] * New upstream version (3.0.99.10): diff --git a/x2goserver/bin/x2gomountdirs b/x2goserver/bin/x2gomountdirs index 0d52a7b..883c3cb 100755 --- a/x2goserver/bin/x2gomountdirs +++ b/x2goserver/bin/x2gomountdirs @@ -22,6 +22,7 @@ use strict; use Sys::Syslog qw( :standard :macros ); +use Config::IniFiles; use lib `echo -n \$(x2gobasepath)/lib/x2go`; use x2godbwrapper; @@ -30,9 +31,20 @@ use x2gologlevel; openlog($0,'cons,pid','user'); setlogmask( LOG_UPTO(x2gologlevel()) ); +if ( @ARGV lt 5 ) { + print("usage: x2gomountdirs <mount-type> <session-id> <user> <key> <client-folder-1> [<client-folder-2> [...]]\n"); + exit -1; +} syslog('info', "x2gomountdirs has been called with options: @ARGV"); +my $Config = Config::IniFiles->new( -file => "/etc/x2go/x2goserver.conf" ); +my $allow_foldersharing = $Config->val("clientshares", "folders", 1); +my $allow_mimebox = $Config->val("clientshares", "mimebox", 1); +my $allow_printing = $Config->val("clientshares", "printers", 1); + +syslog('debug', "allow client-side sharing... folders: $allow_foldersharing, printers: $allow_printing, mimebox: $allow_mimebox"); + my $type=shift; my $session=shift; my $user=shift; @@ -98,227 +110,267 @@ close(F); chmod(0600,"$key"); chmod(0600,"$key.ident"); -my $mdir="/tmp/$ENV{'USER'}_media"; -my $ldir="$ENV{'HOME'}/media"; -my $spooldir_lnk="$ENV{'HOME'}/.x2go/C-$session/spool"; -my $spooldir="/tmp/spool_$ENV{'USER'}"; -my $mimeboxdir_lnk="$ENV{'HOME'}/.x2go/C-$session/mimebox"; -my $mimeboxdir="/tmp/mimebox_$ENV{'USER'}"; +my $mdir; +my $spooldir; +my $mimeboxdir; +my $plasmstamp; -if (! -e $mdir) -{ - mkdir($mdir); -} -chmod(0700,$mdir); -if (! -e "$mdir/disk") +if ( $allow_foldersharing eq 1 ) { - mkdir("$mdir/disk"); -} -chmod(0700,"$mdir/disk"); + $mdir="/tmp/$ENV{'USER'}_media"; + my $ldir="$ENV{'HOME'}/media"; -if (! -e "$mdir/cd") -{ - mkdir("$mdir/cd"); -} -chmod(0700,"$mdir/cd"); - -if (! -e "$mdir/rm") -{ - mkdir("$mdir/rm"); -} -chmod(0700,"$mdir/rm"); + if (! -e $mdir) + { + mkdir($mdir); + } + chmod(0700,$mdir); -my $plasmstamp=$mdir."/".$session.".plasmoid"; + if (! -e "$mdir/disk") + { + mkdir("$mdir/disk"); + } + chmod(0700,"$mdir/disk"); -if (! -e $spooldir) -{ - mkdir($spooldir); -} -chmod(0700,$spooldir); + if (! -e "$mdir/cd") + { + mkdir("$mdir/cd"); + } + chmod(0700,"$mdir/cd"); -$spooldir="$spooldir/$session"; -if (! -e $spooldir) -{ - mkdir($spooldir); -} -chmod(0700,$spooldir); + if (! -e "$mdir/rm") + { + mkdir("$mdir/rm"); + } + chmod(0700,"$mdir/rm"); -if (! -e $mimeboxdir) -{ - mkdir($mimeboxdir); -} -chmod(0700,$mimeboxdir); + $plasmstamp=$mdir."/".$session.".plasmoid"; -$mimeboxdir="$mimeboxdir/$session"; -if (! -e $mimeboxdir) -{ - mkdir($mimeboxdir); -} -chmod(0700,$mimeboxdir); + if ( -d $ldir) + { + rmdir($ldir); + } -if ( -d $ldir) -{ - rmdir($ldir); + if ( ! -l $ldir) + { + system ("ln -s $mdir $ldir"); + } } -if ( ! -l $ldir) +if ( $allow_printing eq 1 ) { - system ("ln -s $mdir $ldir"); -} + my $spooldir_lnk="$ENV{'HOME'}/.x2go/C-$session/spool"; + $spooldir="/tmp/spool_$ENV{'USER'}"; + if (! -e $spooldir) + { + mkdir($spooldir); + } + chmod(0700,$spooldir); -if ( -d $spooldir_lnk) -{ - rmdir($spooldir_lnk); -} + $spooldir="$spooldir/$session"; + if (! -e $spooldir) + { + mkdir($spooldir); + } + chmod(0700,$spooldir); + if ( -d $spooldir_lnk) + { + rmdir($spooldir_lnk); + } -if ( ! -l $spooldir_lnk) -{ - system ("ln -s $spooldir $spooldir_lnk"); + if ( ! -l $spooldir_lnk) + { + system ("ln -s $spooldir $spooldir_lnk"); + } } -if ( -d $mimeboxdir_lnk) +if ( $allow_mimebox eq 1 ) { - rmdir($mimeboxdir_lnk); -} + my $mimeboxdir_lnk="$ENV{'HOME'}/.x2go/C-$session/mimebox"; + $mimeboxdir="/tmp/mimebox_$ENV{'USER'}"; -if ( ! -l $mimeboxdir_lnk) -{ - system ("ln -s $mimeboxdir $mimeboxdir_lnk"); -} + if (! -e $mimeboxdir) + { + mkdir($mimeboxdir); + } + chmod(0700,$mimeboxdir); -my $uname=$ENV{'USER'}; + $mimeboxdir="$mimeboxdir/$session"; + if (! -e $mimeboxdir) + { + mkdir($mimeboxdir); + } + chmod(0700,$mimeboxdir); -my @dirs=split(':',$dirlist); -for (my $i=0;$i<@dirs;$i++) -{ - my $printspool=0; - my $mimeboxspool=0; - my $mntpath; - if(@dirs[$i]=~m/__PRINT_SPOOL_/) + if ( -d $mimeboxdir_lnk) { - @dirs[$i]=~s/__PRINT_SPOOL_//; - $printspool=1; - $mntpath=$spooldir; - syslog('debug', "mounting $spooldir, mount point type is print spool directory"); + rmdir($mimeboxdir_lnk); } - elsif(@dirs[$i]=~m/__MIMEBOX_SPOOL_/) + + if ( ! -l $mimeboxdir_lnk) { - @dirs[$i]=~s/__MIMEBOX_SPOOL_//; - $mimeboxspool=1; - $mntpath=$mimeboxdir; - syslog('debug', "mounting $mimeboxdir, mount point type is MIME box directory"); + system ("ln -s $mimeboxdir $mimeboxdir_lnk"); } - else +} + +if ( $allow_foldersharing | $allow_printing | $allow_mimebox gt 0 ) +{ + my $uname=$ENV{'USER'}; + + my @dirs=split(':',$dirlist); + for (my $i=0;$i<@dirs;$i++) { - my $p=@dirs[$i]; - if ($type ne "dir") + my $skip_mount=0; + my $printspool=0; + my $mimeboxspool=0; + my $mntpath; + if(@dirs[$i]=~m/__PRINT_SPOOL_/) { - $p=~s/\/ramdrive\/mnt\///; - if ($p =~ m/CDROM/) + if ( $allow_printing eq 1 ) { - $mdir=$mdir."/cd"; + @dirs[$i]=~s/__PRINT_SPOOL_//; + $printspool=1; + $mntpath=$spooldir; + syslog('debug', "mounting $spooldir, mount point type is print spool directory"); + } else { + syslog('warning', "client tried to mount $spooldir which is denied by server configuration"); + print "\nX2Go server denied client-side printing.\n"; + $skip_mount=1; } - else + } + elsif(@dirs[$i]=~m/__MIMEBOX_SPOOL_/) + { + if ( $allow_mimebox eq 1 ) { - $mdir=$mdir."/rm"; + @dirs[$i]=~s/__MIMEBOX_SPOOL_//; + $mimeboxspool=1; + $mntpath=$mimeboxdir; + syslog('debug', "mounting $mimeboxdir, mount point type is MIME box directory"); + } else { + syslog('warning', "client tried to mount $mimeboxdir which is denied by server configuration"); + print "\nX2Go server denied MIME box usage.\n"; + $skip_mount=1; } } else { - $mdir=$mdir."/disk"; + if ( $allow_foldersharing eq 1 ) + { + my $p=@dirs[$i]; + if ($type ne "dir") + { + $p=~s/\/ramdrive\/mnt\///; + if ($p =~ m/CDROM/) + { + $mdir=$mdir."/cd"; + } + else + { + $mdir=$mdir."/rm"; + } + } + else + { + $mdir=$mdir."/disk"; + } + $p=~s/\//_/g; + $p=~s/ /_/g; + $p=~s/_cygdrive_//g; + $p=~s/~//g; + mkdir("$mdir/$p"); + $mntpath="$mdir/$p"; + } else { + syslog('warning', "client tried to mount $mdir which is denied by server configuration"); + print "\nX2Go server denied client-side folder sharing.\n"; + $skip_mount=1; + } } - $p=~s/\//_/g; - $p=~s/ /_/g; - $p=~s/_cygdrive_//g; - $p=~s/~//g; - mkdir("$mdir/$p"); - $mntpath="$mdir/$p"; - } - if (db_insertmount( $session, $mntpath, $host)) - { - my $code_conv=$ENV{'X2GO_ICONV'}; - if ($code_conv ne "") - { - $code_conv="-o $code_conv"; - } - $msg = "sshfs $code_conv -o idmap=user,uid=`id -u`,gid=`id -g`,ServerAliveInterval=300,Cipher=blowfish,IdentityFile=$key,UserKnownHostsFile=$key.ident \"$user\"\@$host:\"@dirs[$i]\" \"$mntpath\" -p $port"; - syslog('debug', "executing: $msg"); - print "inserted, $msg\n"; - if (system("sshfs $code_conv -o idmap=user,uid=`id -u`,gid=`id -g`,ServerAliveInterval=300,Cipher=blowfish,IdentityFile=$key,UserKnownHostsFile=$key.ident \"$user\"\@$host:\"@dirs[$i]\" \"$mntpath\" -p $port 2>>~/mounts.log")==0) + if ( ( $skip_mount eq 0 ) && ( db_insertmount( $session, $mntpath, $host) ) ) { - print "mount @dirs[$i] ok\n"; - syslog('notice', "successfully mounted $user\@$host:$port@dirs[$i] to $mntpath"); - # check if kde4 plasmoid running - my $useplasmoid=0; - if ( -e $plasmstamp ) + my $code_conv=$ENV{'X2GO_ICONV'}; + if ($code_conv ne "") { - open(STMP,"<$plasmstamp"); - my $stamp=<STMP>; - close (STMP); - if (abs($stamp-time())<15) - { - $useplasmoid=1; - } + $code_conv="-o $code_conv"; } - if (! $printspool && ! $mimeboxspool && ! $useplasmoid ) + $msg = "sshfs $code_conv -o idmap=user,uid=`id -u`,gid=`id -g`,ServerAliveInterval=300,Cipher=blowfish,IdentityFile=$key,UserKnownHostsFile=$key.ident \"$user\"\@$host:\"@dirs[$i]\" \"$mntpath\" -p $port"; + syslog('debug', "executing: $msg"); + print "inserted, $msg\n"; + if (system("sshfs $code_conv -o idmap=user,uid=`id -u`,gid=`id -g`,ServerAliveInterval=300,Cipher=blowfish,IdentityFile=$key,UserKnownHostsFile=$key.ident \"$user\"\@$host:\"@dirs[$i]\" \"$mntpath\" -p $port 2>>~/mounts.log")==0) { - my $fname="$ENV{'HOME'}/Desktop"; - my $current_desktop = ""; - if ($session =~ m/stDGNOME/) + print "mount @dirs[$i] ok\n"; + syslog('notice', "successfully mounted $user\@$host:$port@dirs[$i] to $mntpath"); + # check if kde4 plasmoid running + my $useplasmoid=0; + if ( -e $plasmstamp ) { - $current_desktop="-gnome"; + open(STMP,"<$plasmstamp"); + my $stamp=<STMP>; + close (STMP); + if (abs($stamp-time())<15) + { + $useplasmoid=1; + } } - elsif ($session =~ m/stDLXDE/) + if (! $printspool && ! $mimeboxspool && ! $useplasmoid ) { - $current_desktop="-lxde"; - } + my $fname="$ENV{'HOME'}/Desktop"; + my $current_desktop = ""; + if ($session =~ m/stDGNOME/) + { + $current_desktop="-gnome"; + } + elsif ($session =~ m/stDLXDE/) + { + $current_desktop="-lxde"; + } - my $p=@dirs[$i]; - $p=~s/\/cygdrive\///g; - $p=~s/\//_/g; - $fname="$fname/$p"; - if ($type eq "dir") - { - $fname="$fname\ (sshfs-disk$current_desktop)"; - syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: client-side folder on harddrive"); - } - else - { - if ($fname =~ m/CDROM/) + my $p=@dirs[$i]; + $p=~s/\/cygdrive\///g; + $p=~s/\//_/g; + $fname="$fname/$p"; + if ($type eq "dir") { - $fname="$fname\ (sshfs-cdrom$current_desktop)"; - syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: optical disc"); + $fname="$fname\ (sshfs-disk$current_desktop)"; + syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: client-side folder on harddrive"); } else { - $fname="$fname\ (sshfs-removable$current_desktop)"; - syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: removable device"); + if ($fname =~ m/CDROM/) + { + $fname="$fname\ (sshfs-cdrom$current_desktop)"; + syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: optical disc"); + } + else + { + $fname="$fname\ (sshfs-removable$current_desktop)"; + syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: removable device"); + } + $fname=~s/_ramdrive_mnt_//; } - $fname=~s/_ramdrive_mnt_//; + print "fname: $fname\n"; + open(F,">$fname"); + print F "$mntpath\n$session\n\n\0"; + close(F); } - print "fname: $fname\n"; - open(F,">$fname"); - print F "$mntpath\n$session\n\n\0"; - close(F); + } + else + { + $msg = "mounting of @dirs[$i] failed"; + print "$msg\n"; + syslog('warning', "WARNING: $msg"); + db_deletemount( $session, $mntpath); + rmdir($mntpath); } } else { - $msg = "mounting of @dirs[$i] failed"; - print "$msg\n"; + $msg = "insertion of @dirs[$i] failed (already mounted? access denied?), not mounting"; syslog('warning', "WARNING: $msg"); - db_deletemount( $session, $mntpath); - rmdir($mntpath); + print "$msg\n"; } } - else - { - $msg = "insertion of @dirs[$i] failed (already mounted?), not mounting"; - syslog('warning', "WARNING: $msg"); - print "$msg\n"; - } } unlink($key); diff --git a/x2goserver/etc/x2goserver.conf b/x2goserver/etc/x2goserver.conf index 5fa6baf..7dac7a9 100644 --- a/x2goserver/etc/x2goserver.conf +++ b/x2goserver/etc/x2goserver.conf @@ -4,6 +4,10 @@ [limit groups] #bar-group=1 +[clientshares] +printers=0 +folders=1 + [log] # possible levels are: emerg, alert, crit, err, warning, notice, info, debug loglevel=notice hooks/post-receive -- x2goserver.git (X2Go Server) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "x2goserver.git" (X2Go Server).