[X2Go-Commits] x2goserver.git - build-baikal (branch) updated: 3.0.99.9-15-g68c31a6
X2Go dev team
git-admin at x2go.org
Wed Dec 4 06:21:56 CET 2013
The branch, build-baikal 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 -----------------------------------------------------------------
-----------------------------------------------------------------------
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 at 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 at 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 ,, at 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 ,, at dirs[$i]'' at ,,$fname'', media type is: optical disc");
+ $fname="$fname\ (sshfs-disk$current_desktop)";
+ syslog('info', "creating desktop icon for ,, at 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 ,, at 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 ,, at dirs[$i]'' at ,,$fname'', media type is: optical disc");
+ }
+ else
+ {
+ $fname="$fname\ (sshfs-removable$current_desktop)";
+ syslog('info', "creating desktop icon for ,, at 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).
More information about the x2go-commits
mailing list