[X2Go-Commits] x2goserver.git - build-main (branch) updated: 3.0.99.9-15-g68c31a6

X2Go dev team git-admin at x2go.org
Wed Dec 4 06:18:07 CET 2013


The branch, build-main 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