[X2Go-Commits] x2goserver.git - build-baikal (branch) updated: 3.1.1.3-326-g9941f22
X2Go dev team
git-admin at x2go.org
Fri Jan 3 20:53:39 CET 2014
The branch, build-baikal has been updated
via 9941f2253b2d8ed656e0728dca5620c0e76f33ac (commit)
from d8ca64f4160f1cac03cd4c8f58808aa383bc023d (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:
X2Go/Server/DB.pm | 61 ++++++++++++++++++---------------
X2Go/Server/DB/PostgreSQL.pm | 2 +-
debian/changelog | 2 ++
x2goserver/bin/x2gocmdexitmessage | 8 ++---
x2goserver/bin/x2gofeature | 8 ++---
x2goserver/bin/x2gofeaturelist | 6 ++--
x2goserver/bin/x2gogetservers | 2 +-
x2goserver/bin/x2golistdesktops | 9 +++--
x2goserver/bin/x2golistsessions | 2 +-
x2goserver/bin/x2golistshadowsessions | 4 +--
x2goserver/bin/x2gomountdirs | 22 ++++++------
x2goserver/bin/x2gopath | 13 ++++---
x2goserver/bin/x2goresume-session | 20 +++++------
x2goserver/bin/x2goruncommand | 42 +++++++++++------------
x2goserver/bin/x2gosessionlimit | 3 +-
x2goserver/bin/x2goumount-session | 15 ++++----
x2goserver/bin/x2goversion | 1 -
x2goserver/sbin/x2gocleansessions | 5 +--
x2goserver/sbin/x2golistsessions_root | 2 +-
19 files changed, 120 insertions(+), 107 deletions(-)
The diff of changes is:
diff --git a/X2Go/Server/DB.pm b/X2Go/Server/DB.pm
index 2ce7a02..bf00fb1 100644
--- a/X2Go/Server/DB.pm
+++ b/X2Go/Server/DB.pm
@@ -38,13 +38,14 @@ use Sys::Syslog qw( :standard :macros );
use X2Go::Config qw( get_sqlconfig );
use X2Go::Log qw( loglevel );
use X2Go::Server::DB::PostgreSQL;
-
+use X2Go::Utils qw( system_capture_merged_output system_capture_stdout_output );
setlogmask( LOG_UPTO(loglevel()) );
+
my ($uname, $pass, $uid, $pgid, $quota, $comment, $gcos, $homedir, $shell, $expire) = getpwuid(getuid());
my $Config = get_sqlconfig();
-my $x2go_lib_path=`x2gopath libexec`;
+my $x2go_lib_path=system_capture_stdout_output("x2gopath", "libexec");
my $backend=$Config->param("backend");
@@ -77,7 +78,7 @@ sub dbsys_rmsessionsroot
}
if($backend eq 'sqlite')
{
- `$x2go_lib_path/libx2go-server-db-sqlite3-wrapper rmsessionsroot $sid`;
+ system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "rmsessionsroot", "$sid");
}
}
@@ -90,7 +91,7 @@ sub dbsys_deletemounts
}
if ($backend eq 'sqlite')
{
- `$x2go_lib_path/libx2go-server-db-sqlite3-wrapper deletemounts $sid`;
+ system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "deletemounts", "$sid");
}
syslog('debug', "dbsys_deletemounts called, session ID: $sid");
}
@@ -104,7 +105,7 @@ sub dbsys_listsessionsroot
}
if($backend eq 'sqlite')
{
- return split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper listsessionsroot $server`);
+ return split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "listsessionsroot", "$server"));
}
}
@@ -116,7 +117,7 @@ sub dbsys_listsessionsroot_all
}
if ($backend eq 'sqlite')
{
- return split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper listsessionsroot_all`);
+ return split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "listsessionsroot_all"));
}
}
@@ -130,7 +131,7 @@ sub dbsys_getmounts
}
if ($backend eq 'sqlite')
{
- @mounts = split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper getmounts $sid`);
+ @mounts = split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "getmounts", "$sid"));
}
my $log_retval = join(" ", @mounts);
syslog('debug', "dbsys_getmounts called, session ID: $sid; return value: $log_retval");
@@ -147,7 +148,7 @@ sub db_getmounts
}
if ($backend eq 'sqlite')
{
- @mounts = split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper getmounts $sid`);
+ @mounts = split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "getmounts", "$sid"));
}
my $log_retval = join(" ", @mounts);
syslog('debug', "db_getmounts called, session ID: $sid; return value: $log_retval");
@@ -164,7 +165,7 @@ sub db_deletemount
}
if ($backend eq 'sqlite')
{
- `$x2go_lib_path/libx2go-server-db-sqlite3-wrapper deletemount $sid \"$path\"`;
+ system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "deletemount", "$sid", "$path");
}
syslog('debug', "db_deletemount called, session ID: $sid, path: $path");
}
@@ -181,7 +182,7 @@ sub db_insertmount
}
if ($backend eq 'sqlite')
{
- if( `$x2go_lib_path/libx2go-server-db-sqlite3-wrapper insertmount $sid \"$path\" $client` eq "ok")
+ if( system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "insertmount", "$sid", "\"$path\"", "$client") eq "ok")
{
$res_ok=1;
}
@@ -201,7 +202,7 @@ sub db_insertsession
}
if ($backend eq 'sqlite')
{
- my $err=`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper insertsession $display $server $sid`;
+ my $err=system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "insertsession", "$display", "$server", "$sid");
if ($err ne "ok")
{
die "$err: $x2go_lib_path/libx2go-server-db-sqlite3-wrapper insertsession $display $server $sid";
@@ -222,7 +223,7 @@ sub db_insertshadowsession
}
if ($backend eq 'sqlite')
{
- my $err=`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper insertshadowsession $display $server $sid $shadreq_user`;
+ my $err=system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "insertshadowsession", "$display", "$server", "$sid", "$shadreq_user");
if ($err ne "ok")
{
die "$err: $x2go_lib_path/libx2go-server-db-sqlite3-wrapper insertshadowsession $display $server $sid $shadreq_user";
@@ -246,7 +247,7 @@ sub db_createsession
}
if ($backend eq 'sqlite')
{
- my $err= `$x2go_lib_path/libx2go-server-db-sqlite3-wrapper createsession $cookie $pid $client $gr_port $snd_port $fs_port $sid`;
+ my $err= system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "createsession", "$cookie", "$pid", "$client", "$gr_port", "$snd_port", "$fs_port", "$sid");
if ($err ne "ok")
{
die $err;
@@ -272,7 +273,7 @@ sub db_createshadowsession
}
if ($backend eq 'sqlite')
{
- my $err= `$x2go_lib_path/libx2go-server-db-sqlite3-wrapper createshadowsession $cookie $pid $client $gr_port $snd_port $fs_port $sid $shadreq_user`;
+ my $err=system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "createshadowsession", "$cookie", "$pid", "$client", "$gr_port", "$snd_port", "$fs_port", "$sid", "$shadreq_user");
if ($err ne "ok")
{
die $err;
@@ -292,7 +293,11 @@ sub db_insertport
}
if ($backend eq 'sqlite')
{
- `$x2go_lib_path/libx2go-server-db-sqlite3-wrapper insertport $server $sid $sshport`;
+ my $err=system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "insertport", "$server", "$sid", "$sshport");
+ if ($err ne "ok")
+ {
+ die $err;
+ }
}
syslog('debug', "db_insertport called, session ID: $sid, server: $server, SSH port: $sshport");
}
@@ -308,7 +313,7 @@ sub db_rmport
}
if ($backend eq 'sqlite')
{
- `$x2go_lib_path/libx2go-server-db-sqlite3-wrapper rmport $server $sid $sshport`;
+ system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "rmport", "$server", "$sid", "$sshport");
}
syslog('debug', "db_rmport called, session ID: $sid, server: $server, SSH port: $sshport");
}
@@ -326,7 +331,7 @@ sub db_resume
}
if ($backend eq 'sqlite')
{
- `$x2go_lib_path/libx2go-server-db-sqlite3-wrapper resume $client $sid $gr_port $snd_port $fs_port`;
+ system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "resume", "$client", "$sid", "$gr_port", "$snd_port", "$fs_port");
}
syslog('debug', "db_resume called, session ID: $sid, client: $client, gr_port: $gr_port, sound_port: $snd_port, fs_port: $fs_port");
}
@@ -341,7 +346,7 @@ sub db_changestatus
}
if ($backend eq 'sqlite')
{
- `$x2go_lib_path/libx2go-server-db-sqlite3-wrapper changestatus $status $sid`;
+ system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "changestatus", "$status", "$sid");
}
syslog('debug', "db_changestatus called, session ID: $sid, new status: $status");
}
@@ -356,7 +361,7 @@ sub db_getstatus
}
if ($backend eq 'sqlite')
{
- $status=`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper getstatus $sid`;
+ $status=system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "getstatus", "$sid");
}
syslog('debug', "db_getstatus called, session ID: $sid, return value: $status");
return $status;
@@ -373,7 +378,7 @@ sub db_getdisplays
}
if ($backend eq 'sqlite')
{
- @displays = split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper getdisplays $server`);
+ @displays = split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "getdisplays", "$server"));
}
my $log_retval = join(" ", @displays);
syslog('debug', "db_getdisplays called, server: $server; return value: $log_retval");
@@ -391,7 +396,7 @@ sub db_getports
}
if ($backend eq 'sqlite')
{
- @ports = split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper getports $server`);
+ @ports = split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "getports", "$server"));
}
my $log_retval = join(" ", @ports);
syslog('debug', "db_getports called, server: $server; return value: $log_retval");
@@ -407,7 +412,7 @@ sub db_getservers
}
if ($backend eq 'sqlite')
{
- @servers = split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper getservers`);
+ @servers = split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "getservers"));
}
my $log_retval = join(" ", @servers);
syslog('debug', "db_getservers called, return value: $log_retval");
@@ -424,7 +429,7 @@ sub db_getagent
}
if($backend eq 'sqlite')
{
- $agent=`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper getagent $sid`;
+ $agent=system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "getagent", "$sid");
}
syslog('debug', "db_getagent called, session ID: $sid; return value: $agent");
return $agent;
@@ -440,7 +445,7 @@ sub db_getdisplay
}
if ($backend eq 'sqlite')
{
- $display=`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper getdisplay $sid`;
+ $display=system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "getdisplay", "$sid");
}
syslog('debug', "db_getdisplay called, session ID: $sid; return value: $display");
return $display;
@@ -455,7 +460,7 @@ sub db_listsessions
}
if ($backend eq 'sqlite')
{
- return split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper listsessions $server`);
+ return split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "listsessions", "$server"));
}
}
@@ -467,7 +472,7 @@ sub db_listsessions_all
}
if ($backend eq 'sqlite')
{
- return split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper listsessions_all`);
+ return split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "listsessions_all"));
}
}
@@ -480,7 +485,7 @@ sub db_listshadowsessions
}
if ($backend eq 'sqlite')
{
- return split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper listshadowsessions $server`);
+ return split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "listshadowsessions", "$server"));
}
}
@@ -492,6 +497,6 @@ sub db_listshadowsessions_all
}
if ($backend eq 'sqlite')
{
- return split("\n",`$x2go_lib_path/libx2go-server-db-sqlite3-wrapper listshadowsessions_all`);
+ return split("\n",system_capture_merged_output("$x2go_lib_path/libx2go-server-db-sqlite3-wrapper", "listshadowsessions_all"));
}
}
diff --git a/X2Go/Server/DB/PostgreSQL.pm b/X2Go/Server/DB/PostgreSQL.pm
index f101de8..6e94ef1 100644
--- a/X2Go/Server/DB/PostgreSQL.pm
+++ b/X2Go/Server/DB/PostgreSQL.pm
@@ -61,7 +61,7 @@ sub init_db
if ( ! ( $dbuser and $dbpass ) )
{
my $Config = get_sqlconfig;
- my $x2go_lib_path=`x2gopath libexec`;
+ my $x2go_lib_path=system_capture_stdout_output("x2gopath", "libexec");
my $backend=$Config->param("backend");
if ( $backend ne "postgres" )
diff --git a/debian/changelog b/debian/changelog
index 16b9851..5db2ff6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -42,6 +42,8 @@ x2goserver (4.1.0.0-0x2go1) UNRELEASED; urgency=low
- Start working on an abstraction layer (as Perl
package X2Go::Server::Agent) that handles all (NX) agent specific actions.
Move duplicate code into that new Perl package.
+ - Security audit of complete code tree, avoid one-argument system calls where
+ possible, avoid backticks, use more quotes in shell scripts.
* debian/control:
+ Package X2Go::Log in separate package: libx2go-log-perl.
+ Package X2Go::Server::DB in separate package: libx2go-server-db-perl.
diff --git a/x2goserver/bin/x2gocmdexitmessage b/x2goserver/bin/x2gocmdexitmessage
index 79cd0a5..b5a2170 100755
--- a/x2goserver/bin/x2gocmdexitmessage
+++ b/x2goserver/bin/x2gocmdexitmessage
@@ -21,13 +21,13 @@
# Copyright (C) 2007-2013 Heinz-Markus Graesing <heinz-m.graesing at obviously-nice.de>
X2GO_LIB_PATH="$(x2gopath libexec)";
-X2GO_ROOT=${HOME}/.x2go
-MESSAGE_FILE=$X2GO_ROOT/C-$1/cmdoutput
+X2GO_ROOT="${HOME}/.x2go"
+MESSAGE_FILE="$X2GO_ROOT/C-$1/cmdoutput"
-$X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@"
+"$X2GO_LIB_PATH/x2gosyslog" "$0" "info" "$(basename $0) called with options: $@"
test -f "$MESSAGE_FILE" && {
- $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "command output starts with: $(head -n5 $MESSAGE_FILE | sed 's/\n/ /g')"
+ "$X2GO_LIB_PATH/x2gosyslog" "$0" "debug" "command output starts with: "$(head -n5 "$MESSAGE_FILE" | sed 's/\n/ /g')
# return command output of the command that was issued by x2goruncommand
cat "$MESSAGE_FILE"
diff --git a/x2goserver/bin/x2gofeature b/x2goserver/bin/x2gofeature
index ee0d309..ab0e848 100755
--- a/x2goserver/bin/x2gofeature
+++ b/x2goserver/bin/x2gofeature
@@ -25,14 +25,14 @@
X2GO_LIB_PATH="$(x2gopath libexec)";
X2GO_SHARE_PATH="$(x2gopath share)";
-$X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@"
+"$X2GO_LIB_PATH/x2gosyslog" "$0" "info" "$(basename $0) called with options: $@"
-X2GO_FEATURE=$1
+X2GO_FEATURE="$1"
# run x2gofeature scripts of X2Go extensions
test -d "$X2GO_SHARE_PATH/x2gofeature.d" && {
- for subscript in $X2GO_SHARE_PATH/x2gofeature.d/*.features; do
- $subscript $@ && exit 0
+ for subscript in "$X2GO_SHARE_PATH/x2gofeature.d/"*.features; do
+ "$subscript" $@ && exit 0
done
}
diff --git a/x2goserver/bin/x2gofeaturelist b/x2goserver/bin/x2gofeaturelist
index e879e4e..9c74960 100755
--- a/x2goserver/bin/x2gofeaturelist
+++ b/x2goserver/bin/x2gofeaturelist
@@ -22,12 +22,12 @@
X2GO_LIB_PATH="$(x2gopath libexec)";
X2GO_SHARE_PATH="$(x2gopath share)";
-$X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@"
+"$X2GO_LIB_PATH/x2gosyslog" "$0" "info" "$(basename $0) called with options: $@"
# run x2gofeature scripts of X2Go extensions
test -d "$X2GO_SHARE_PATH/x2gofeature.d" && {
- for subscript in $X2GO_SHARE_PATH/x2gofeature.d/*.features; do
- cat $subscript | egrep ".*\).*ok.*exit 0.*" | cut -d"\"" -f2 | cut -d"\"" -f1
+ for subscript in "$X2GO_SHARE_PATH/x2gofeature.d/"*.features; do
+ cat "$subscript" | egrep ".*\).*ok.*exit 0.*" | cut -d"\"" -f2 | cut -d"\"" -f1
done
}
diff --git a/x2goserver/bin/x2gogetservers b/x2goserver/bin/x2gogetservers
index 83ba5c1..5f19025 100755
--- a/x2goserver/bin/x2gogetservers
+++ b/x2goserver/bin/x2gogetservers
@@ -33,4 +33,4 @@ my $servers = join("\n", db_getservers);
print $servers;
# closing syslog
-closelog;
\ No newline at end of file
+closelog;
diff --git a/x2goserver/bin/x2golistdesktops b/x2goserver/bin/x2golistdesktops
index b489286..44cc1f9 100755
--- a/x2goserver/bin/x2golistdesktops
+++ b/x2goserver/bin/x2golistdesktops
@@ -24,7 +24,8 @@ use strict;
use Sys::Hostname;
use Sys::Syslog qw( :standard :macros );
-use X2Go::Log qw(loglevel);
+use X2Go::Log qw( loglevel );
+use X2Go::Utils qw( system_capture_stdout_output );
openlog($0,'cons,pid','user');
setlogmask( LOG_UPTO(loglevel()) );
@@ -42,6 +43,7 @@ if( ! $serv)
$serv=hostname;
}
+# FIXME: finally get rid of this non-critical backtick expression
my $rsess=`x2golistsessions $serv |grep _stR`;
my @rsess=split("\n","$rsess");
my @rdisplays;
@@ -55,7 +57,7 @@ my $rdisp=join("I", at rdisplays);
$rdisp="I${rdisp}I";
my $uname=$ENV{'USER'};
-my $outp=`ls -1 /tmp/.X11-unix/`;
+my $outp=system_capture_stdout_output("ls", "-1", "/tmp/.X11-unix/");
my @outp=split("\n","$outp");
for(my $i=0;$i<@outp;$i++)
{
@@ -66,7 +68,7 @@ for(my $i=0;$i<@outp;$i++)
$checkdisp="${checkdisp}I";
if (!( $rdisp =~ m/$checkdisp/ ))
{
- my $inf=`xwininfo -root -display $display 2> /dev/null`;
+ my $inf=system_capture_stdout_output("xwininfo", "-root", "-display", "$display");
if ( $inf=~ m/geometry/)
{
print "$uname\@$display\n";
@@ -74,6 +76,7 @@ for(my $i=0;$i<@outp;$i++)
}
}
+# FIXME: finally get rid of this non-critical backtick expression
$outp=`ls -1 /tmp/ | grep x2godesktopsharing_`;
@outp=split("\n","$outp");
diff --git a/x2goserver/bin/x2golistsessions b/x2goserver/bin/x2golistsessions
index 6f44f56..1b8b6fc 100755
--- a/x2goserver/bin/x2golistsessions
+++ b/x2goserver/bin/x2golistsessions
@@ -70,7 +70,7 @@ for (my $i=0;$i<@outp;$i++)
{
if (@sinfo[4]eq 'R')
{
- if(session_is_suspended(@sinfo[1]), @sinfo[11])
+ if(session_is_suspended(@sinfo[1], @sinfo[11]))
{
db_changestatus( 'S', @sinfo[1] );
@outp[$i] =~ s/\|R\|/\|S\|/;
diff --git a/x2goserver/bin/x2golistshadowsessions b/x2goserver/bin/x2golistshadowsessions
index 7880d53..c24873d 100755
--- a/x2goserver/bin/x2golistshadowsessions
+++ b/x2goserver/bin/x2golistshadowsessions
@@ -70,11 +70,11 @@ for (my $i=0;$i<@outp;$i++)
{
if (@sinfo[4]eq 'R')
{
- if(session_is_suspended(@sinfo[1]), @sinfo[11])
+ if(session_is_suspended(@sinfo[1], @sinfo[11]))
{
db_changestatus( 'S', @sinfo[1] );
@outp[$i] =~ s/\|R\|/\|S\|/;
- system( "x2goumount-session","@sinfo[1]");
+ system("x2goumount-session","@sinfo[1]");
}
}
print "@outp[$i]\n";
diff --git a/x2goserver/bin/x2gomountdirs b/x2goserver/bin/x2gomountdirs
index b5d305f..a921460 100755
--- a/x2goserver/bin/x2gomountdirs
+++ b/x2goserver/bin/x2gomountdirs
@@ -26,7 +26,7 @@ use File::BaseDir qw(xdg_config_home);
use X2Go::Config qw( get_config );
use X2Go::Server::DB qw( db_insertmount db_deletemount );
-use X2Go::Utils qw( source_environment );
+use X2Go::Utils qw( source_environment system_capture_merged_output );
use X2Go::Log qw( loglevel );
openlog($0,'cons,pid','user');
@@ -170,7 +170,7 @@ if ( -d $ldir)
if ( ! -l $ldir)
{
- system ("ln -s $mdir $ldir");
+ system ("ln", "-s", "$mdir", "$ldir");
}
if ( -d $spooldir_lnk)
@@ -180,7 +180,7 @@ if ( -d $spooldir_lnk)
if ( ! -l $spooldir_lnk)
{
- system ("ln -s $spooldir $spooldir_lnk");
+ system ("ln", "-s", "$spooldir", "$spooldir_lnk");
}
if ( -d $mimeboxdir_lnk)
@@ -190,7 +190,7 @@ if ( -d $mimeboxdir_lnk)
if ( ! -l $mimeboxdir_lnk)
{
- system ("ln -s $mimeboxdir $mimeboxdir_lnk");
+ system ("ln", "-s", "$mimeboxdir", "$mimeboxdir_lnk");
}
my $uname=$ENV{'USER'};
@@ -265,17 +265,19 @@ for (my $i=0;$i<@dirs;$i++)
{
$code_conv="-o $code_conv";
}
- if ( -f $key )
+ if ( -f "$key" )
{
syslog('debug', "SSH key file has arrived: $key");
}
- if ( -f $key.ident )
+ if ( -f "$key.ident" )
{
syslog('debug', "SSH host key has arrived: $key.ident");
}
$msg = "sshfs $code_conv -o idmap=user,uid=`id -u`,gid=`id -g`,$umaskstr,ServerAliveInterval=300,Cipher=blowfish,IdentityFile=$key,UserKnownHostsFile=$key.ident \"$user\"\@$host:\"@dirs[$i]\" \"$mntpath\" -p $port";
syslog('debug', "executing: $msg");
print "inserted, $msg\n";
+
+ # FIXME: this system call should be converted to a multi-argument system call while pertaining the redirect of stderr to the mounts.log file
if (system("sshfs $code_conv -o idmap=user,uid=`id -u`,gid=`id -g`,$umaskstr,ServerAliveInterval=300,Cipher=blowfish,IdentityFile=$key,UserKnownHostsFile=$key.ident \"$user\"\@$host:\"@dirs[$i]\" \"$mntpath\" -p $port 2>>~/mounts.log")==0)
{
print "mount @dirs[$i] ok\n";
@@ -303,19 +305,19 @@ for (my $i=0;$i<@dirs;$i++)
$fname="$ENV{'HOME'}/Desktop";
}
my $current_desktop = "NONE";
- if (($session =~ m/_stDGNOME_dp/) && system("x2gofeature X2GO_GNOMEBINDINGS >/dev/null") == 0)
+ if (($session =~ m/_stDGNOME_dp/) && system_capture_merged_output("x2gofeature", "X2GO_GNOMEBINDINGS") == 0)
{
$current_desktop="-gnome";
}
- elsif (($session =~ m/_stDMATE_dp/) && system("x2gofeature X2GO_MATEBINDINGS >/dev/null") == 0)
+ elsif (($session =~ m/_stDMATE_dp/) && system_capture_merged_output("x2gofeature", "X2GO_MATEBINDINGS") == 0)
{
$current_desktop="-mate";
}
- elsif (($session =~ m/_stDLXDE_dp/) && system("x2gofeature X2GO_LXDEBINDINGS >/dev/null") == 0)
+ elsif (($session =~ m/_stDLXDE_dp/) && system_capture_merged_output("x2gofeature", "X2GO_LXDEBINDINGS") == 0)
{
$current_desktop="-lxde";
}
- elsif (($session =~ m/_stD.*_dp/) && system("x2gofeature X2GO_FMBINDINGS >/dev/null") == 0)
+ elsif (($session =~ m/_stD.*_dp/) && system_capture_merged_output("x2gofeature", "X2GO_FMBINDINGS") == 0)
{
$current_desktop="";
}
diff --git a/x2goserver/bin/x2gopath b/x2goserver/bin/x2gopath
index 1d2f9f3..9647836 100755
--- a/x2goserver/bin/x2gopath
+++ b/x2goserver/bin/x2gopath
@@ -22,7 +22,6 @@
# Copyright (C) 2012-2013 Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
# Copyright (C) 2012-2013 Jan Engelhard <jengelh at inai.de>
-
base="${0%/*}";
if test "$base" = "$0"; then
base=".";
@@ -32,12 +31,12 @@ base=$(readlink -f "$base/..");
# The following section is subject to substitution by distro packaging tools.
case "$1" in
- base) echo -n "$base";;
- lib) echo -n "$base/lib/x2go";;
- libexec) echo -n "$base/lib/x2go";;
- share) echo -n "$base/share/x2go";;
- nx-x11) echo -n "$base/lib/nx/X11";;
- xinerama) echo -n "$base/lib/nx/X11/Xinerama";;
+ "base") echo -n "$base";;
+ "lib") echo -n "$base/lib/x2go";;
+ "libexec") echo -n "$base/lib/x2go";;
+ "share") echo -n "$base/share/x2go";;
+ "nx-x11") echo -n "$base/lib/nx/X11";;
+ "xinerama") echo -n "$base/lib/nx/X11/Xinerama";;
*) exit 1;;
esac;
diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session
index 12669c2..a513631 100755
--- a/x2goserver/bin/x2goresume-session
+++ b/x2goserver/bin/x2goresume-session
@@ -41,7 +41,7 @@ then
rm "$NX_XINERAMA_CONF"
fi
-$X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@"
+"$X2GO_LIB_PATH/x2gosyslog" "$0" "info" "$(basename $0) called with options: $@"
# rootless sessions require to be resizable
@@ -71,10 +71,10 @@ SOUND_PORT=`echo "$SESSIONINFO" | awk -F, {'print $10'}`
FS_PORT=`echo "$SESSIONINFO" | awk -F, {'print $14'}`
SERVER=`echo "$SESSIONINFO" | awk -F, {'print $4'}`
-$X2GO_LIB_PATH/x2gosyslog "$0" "debug" "old ports: $GR_PORT, $SOUND_PORT, $FS_PORT"
+"$X2GO_LIB_PATH/x2gosyslog" "$0" "debug" "old ports: $GR_PORT, $SOUND_PORT, $FS_PORT"
#Get all used in system ports from ss output
-ss=$(PATH="$PATH:/usr/sbin:/sbin" type -P ss);
+ss="$(PATH="$PATH:/usr/sbin:/sbin" type -P ss)";
USED_PORTS=$(
"$ss" -nt -all |
awk '{ n=split($0,lines,"\n"); for(i=1;i<=n;i++){split (lines[i],words," ");delim=split(words[4],ports,":"); if(delim>1)printf ("|%s|\n",ports[delim])} }';
@@ -178,17 +178,17 @@ echo "$NEWOPTIONS" >"${SESSION_DIR}/options"
x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-resume || true
# clear old keyboard file
-rm -Rf $SESSION_DIR/keyboard
+rm -Rf "$SESSION_DIR/keyboard"
-kill -HUP $X2GO_AGENT_PID &>/dev/null && {
+kill -HUP "$X2GO_AGENT_PID" &>/dev/null && {
- $X2GO_LIB_PATH/x2goresume "$X2GO_CLIENT" "$SESSION_NAME" "$GR_PORT" "$SOUND_PORT" "$FS_PORT" > /dev/null
+ $X2GO_LIB_PATH/x2goresume "$X2GO_CLIENT" "$SESSION_NAME" "$GR_PORT" "$SOUND_PORT" "$FS_PORT" > /dev/null
$X2GO_LIB_PATH/x2gosyslog "$0" "notice" "client $X2GO_CLIENT has successfully resumed session with ID $SESSION_NAME"
# set client-side keyboard model, type, variant, etc.
if [ "$X2GO_SET_KBD" != "0" ] && [ "$X2GO_KBD_TYPE" == "auto" ]; then
- X2GO_DISPLAY=$(echo $SESSION_NAME | cut -d"-" -f2)
- export DISPLAY=:$X2GO_DISPLAY.0
+ X2GO_DISPLAY="$(echo \"$SESSION_NAME\" | cut -d'-' -f2)"
+ export DISPLAY=":$X2GO_DISPLAY.0"
x2gosetkeyboard "$SESSION_NAME" >/dev/null 2>/dev/null &
fi
@@ -201,11 +201,11 @@ kill -HUP $X2GO_AGENT_PID &>/dev/null && {
} || {
err_msg="ERROR: failed to resume session with ID $SESSION_NAME"
echo "$err_msg" 1>&2
- $X2GO_LIB_PATH/x2gosyslog "$0" "err" "$err_msg"
+ "$X2GO_LIB_PATH/x2gosyslog" "$0" "err" "$err_msg"
# If we reach here it means that the x2goagent process of the session has vanisshed
# If this happens than we mark the session as finished...
- $X2GO_LIB_PATH/x2gochangestatus 'F' "$SESSION_NAME" > /dev/null
+ "$X2GO_LIB_PATH/x2gochangestatus" 'F' "$SESSION_NAME" > /dev/null
# run x2goserver-extensions for fail-resume
x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" fail-resume || true
diff --git a/x2goserver/bin/x2goruncommand b/x2goserver/bin/x2goruncommand
index 5d5113c..e5f52a1 100755
--- a/x2goserver/bin/x2goruncommand
+++ b/x2goserver/bin/x2goruncommand
@@ -21,15 +21,15 @@
# Copyright (C) 2007-2013 Heinz-Markus Graesing <heinz-m.graesing at obviously-nice.de>
DISPLAY=":$1"
-X2GO_AGENT_PID=$2
-X2GO_SESSION=$3
-cmd=$5
-sndsys=$6
-X2GO_SESS_TYPE=$7
+X2GO_AGENT_PID="$2"
+X2GO_SESSION="$3"
+cmd="$5"
+sndsys="$6"
+X2GO_SESS_TYPE="$7"
X2GO_LIB_PATH="$(x2gopath libexec)";
-$X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@"
+"$X2GO_LIB_PATH/x2gosyslog" "$0" "info" "$(basename $0) called with options: $@"
export DISPLAY
export X2GO_AGENT_PID
@@ -48,22 +48,22 @@ export NX_XINERAMA_CONF
test -n $KRB5CCNAME && export KRB5CCNAME
# disable rastering in >= KDE4.8 and Qt4.8
-export QT_GRAPHICSSYSTEM=native
+export QT_GRAPHICSSYSTEM="native"
IMEXIT="false"
-NX_XINERAMA_LIBS=$(x2gopath xinerama)
-NX_LIBS=$(x2gopath nx-x11)
+NX_XINERAMA_LIBS="$(x2gopath xinerama)"
+NX_LIBS="$(x2gopath nx-x11)"
test -n "$LD_LIBRARY_PATH" && \
LD_LIBRARY_PATH="$NX_XINERAMA_LIBS:$NX_LIBS:$LD_LIBRARY_PATH" || \
LD_LIBRARY_PATH="$NX_XINERAMA_LIBS:$NX_LIBS"
-$X2GO_LIB_PATH/x2gosyslog "$0" "debug" "exporting LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
+"$X2GO_LIB_PATH/x2gosyslog" "$0" "debug" "exporting LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
if [ "$sndsys" == "esd" ]; then
- export ESPEAKER=localhost:$4
+ export ESPEAKER="localhost:$4"
elif [ "$sndsys" == "arts" ]; then
- export ARTS_SERVER=localhost:$4
+ export ARTS_SERVER="localhost:$4"
fi
# detect Ubuntu version via /etc/lsb-release (not supported by Debian)
@@ -222,24 +222,24 @@ fi
x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$X2GO_SESSION" pre-runcommand || true
sucessful_run=false
-if [ "$EXEC" != "" ] && [ -x $EXEC ]; then
- $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "running command $EXEC"
+if [ "$EXEC" != "" ] && [ -x "$EXEC" ]; then
+ "$X2GO_LIB_PATH/x2gosyslog" "$0" "debug" "running command $EXEC"
x2gosetkeyboard >/dev/null 2>/dev/null &
x2gofeature X2GO_XSESSION &>/dev/null && [ "x$X2GO_SESS_TYPE" = "xD" ] && {
STARTUP="$cmd$args"
- $X2GO_LIB_PATH/x2gosyslog "$0" "notice" "launching session with Xsession-x2go mechanism, using STARTUP=\"$STARTUP\""
+ "$X2GO_LIB_PATH/x2gosyslog" "$0" "notice" "launching session with Xsession-x2go mechanism, using STARTUP=\"$STARTUP\""
XSESSION_EXEC="$cmd" STARTUP="/usr/bin/env LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ${STARTUP}" /etc/x2go/Xsession
} || {
- $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "executing command \"$cmd$args\"..."
+ "$X2GO_LIB_PATH/x2gosyslog" "$0" "debug" "executing command \"$cmd$args\"..."
$EXEC_WRAPPER $cmd$args
}
#### some applications can quit immediately, we will wait here as long as x2goagent exists
if [ "$X2GO_SESS_TYPE" == "R" ] && [ "$IMEXIT" == "false" ]; then
- $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "command $EXEC forked to background, waiting for agent to finish"
- while [ -d /proc/$X2GO_AGENT_PID ]; do
+ "$X2GO_LIB_PATH/x2gosyslog" "$0" "debug" "command $EXEC forked to background, waiting for agent to finish"
+ while [ -d "/proc/$X2GO_AGENT_PID" ]; do
sleep 1
done
fi
@@ -250,7 +250,7 @@ if [ "$EXEC" != "" ] && [ -x $EXEC ]; then
x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$X2GO_SESSION" post-runcommand || true
else
- $X2GO_LIB_PATH/x2gosyslog "$0" "err" "ERROR: command $EXEC failed to execute"
+ "$X2GO_LIB_PATH/x2gosyslog" "$0" "err" "ERROR: command $EXEC failed to execute"
echo "X2GORUNCOMMAND ERR NOEXEC:$cmd" > "$MESSAGE_FILE"
# run x2goserver-extensions for fail-runcommand
@@ -261,8 +261,8 @@ fi
# stop x2godesktopsharing process gracefully...
x2gofeature X2GO_DESKTOPSHARING >/dev/null && x2goterminate-desktopsharing "$X2GO_SESSION" || true
-kill -TERM $X2GO_AGENT_PID
-$X2GO_LIB_PATH/x2gochangestatus 'F' "$X2GO_SESSION" > /dev/null
+kill -TERM "$X2GO_AGENT_PID"
+"$X2GO_LIB_PATH/x2gochangestatus" 'F' "$X2GO_SESSION" > /dev/null
export HOSTNAME
x2goumount-session "$X2GO_SESSION"
diff --git a/x2goserver/bin/x2gosessionlimit b/x2goserver/bin/x2gosessionlimit
index 5ef8222..4f5217e 100755
--- a/x2goserver/bin/x2gosessionlimit
+++ b/x2goserver/bin/x2gosessionlimit
@@ -25,6 +25,7 @@ use Sys::Syslog qw( :standard :macros );
use X2Go::Config qw( get_config);
use X2Go::Log qw( loglevel );
+use X2Go::Utils qw( system_capture_merged_output );
openlog($0,'cons,pid','user');
setlogmask( LOG_UPTO(loglevel()) );
@@ -55,7 +56,7 @@ sub getGroupLimit
my $uname;
$uname=getpwuid($<);
-my $runningsessions=`x2golistsessions --all-servers`;
+my $runningsessions=system_capture_merged_output("x2golistsessions", "--all-servers");
my @sessions=split("\n",$runningsessions);
my $scount=@sessions;
diff --git a/x2goserver/bin/x2goumount-session b/x2goserver/bin/x2goumount-session
index 18ff1a4..56b43fe 100755
--- a/x2goserver/bin/x2goumount-session
+++ b/x2goserver/bin/x2goumount-session
@@ -28,6 +28,7 @@ use File::BaseDir qw(xdg_config_home);
use X2Go::Utils qw(source_environment);
use X2Go::Server::DB qw(db_getdisplay db_getmounts db_deletemount);
use X2Go::Log qw(loglevel);
+use X2Go::Utils qw(system_capture_merged_output);
openlog($0,'cons,pid','user');
setlogmask( LOG_UPTO(loglevel()) );
@@ -136,7 +137,8 @@ for ($i=0;$i<@outp;$i++)
break:
if ($found)
{
- if (system( "cd $tmp_dir && fusermount -u \"@line[1]\" && cd - >/dev/null" ) == 0)
+ chdir($tmpdir)
+ if (system("fusermount", "-u", "\"@line[1]\"") == 0)
{
syslog('notice', "successfully unmounted \"@line[1]\"");
$found=0;
@@ -175,19 +177,19 @@ break:
$remote="$desktopdir/$remote";
my $current_desktop = 'NONE';
- if (($session =~ m/_stDGNOME_dp/) && system("x2gofeature X2GO_GNOMEBINDINGS >/dev/null") == 0)
+ if (($session =~ m/_stDGNOME_dp/) && system_capture_merged_output("x2gofeature", "X2GO_GNOMEBINDINGS") == 0)
{
$current_desktop="-gnome";
}
- elsif (($session =~ m/_stDMATE_dp/) && system("x2gofeature X2GO_MATEBINDINGS >/dev/null") == 0)
+ elsif (($session =~ m/_stDMATE_dp/) && system_capture_merged_output("x2gofeature", "X2GO_MATEBINDINGS") == 0)
{
$current_desktop="-mate";
}
- elsif (($session =~ m/_stDLXDE_dp/) && system("x2gofeature X2GO_LXDEBINDINGS >/dev/null") == 0)
+ elsif (($session =~ m/_stDLXDE_dp/) && system_capture_merged_output("x2gofeature", "X2GO_LXDEBINDINGS") == 0)
{
$current_desktop="-lxde";
}
- elsif (($session =~ m/_st.*_dp/) && system("x2gofeature X2GO_FMBINDINGS >/dev/null") == 0)
+ elsif (($session =~ m/_st.*_dp/) && system_capture_merged_output("x2gofeature", "X2GO_FMBINDINGS") == 0)
{
$current_desktop="";
}
@@ -224,7 +226,7 @@ rmdir ("$mdir/rm");
rmdir ("$mdir");
if (( ! -d "$mdir" ) && ( -l "$ENV{'HOME'}/media" ))
{
- system("rm -f $ENV{'HOME'}/media");
+ system_capture_merged_output("rm", "-f", "$ENV{'HOME'}/media");
}
rmdir ("$spooldir/C-$session");
rmdir ("$spooldir");
@@ -233,4 +235,3 @@ rmdir ("$mimeboxdir");
# closing syslog
closelog;
-
diff --git a/x2goserver/bin/x2goversion b/x2goserver/bin/x2goversion
index 1854a20..b948d87 100755
--- a/x2goserver/bin/x2goversion
+++ b/x2goserver/bin/x2goversion
@@ -48,4 +48,3 @@ else
done
cd - >/dev/null
fi
-
diff --git a/x2goserver/sbin/x2gocleansessions b/x2goserver/sbin/x2gocleansessions
index 797c5cd..8480a15 100755
--- a/x2goserver/sbin/x2gocleansessions
+++ b/x2goserver/sbin/x2gocleansessions
@@ -29,12 +29,13 @@ use Sys::Syslog qw( :standard :macros );
use File::ReadBackwards;
-my $x2go_lib_path = `x2gopath libexec`;
use X2Go::Config qw( get_config );
use X2Go::Log qw( loglevel );
use X2Go::SupeReNicer qw( superenice );
use X2Go::Server::Agent qw( session_is_suspended session_is_running session_has_terminated );
use X2Go::Server::DB qw( dbsys_rmsessionsroot );
+use X2Go::Utils qw( system_capture_stdout_output );
+my $x2go_lib_path = system_capture_stdout_output("x2gopath", "libexec");
openlog($0,'cons,pid','user');
setlogmask( LOG_UPTO(loglevel()) );
@@ -115,7 +116,7 @@ elsif ($pid == 0 )
while(sleep 2)
{
- my $outp=`$x2go_lib_path/x2golistsessions_sql $serv 2>/dev/null`;
+ my $outp=system_capture_stdout_output("$x2go_lib_path/x2golistsessions_sql", "$serv");
my @outp=split("\n","$outp");
# forget earlier remembered blocked sessions
diff --git a/x2goserver/sbin/x2golistsessions_root b/x2goserver/sbin/x2golistsessions_root
index b4c659c..ce8c786 100755
--- a/x2goserver/sbin/x2golistsessions_root
+++ b/x2goserver/sbin/x2golistsessions_root
@@ -28,11 +28,11 @@ use File::ReadBackwards;
use X2Go::Log qw(loglevel);
use X2Go::Utils qw(system_capture_stdout_output);
use X2Go::Server::Agent qw(session_is_suspended);
+my $x2go_lib_path = system_capture_stdout_output("x2gopath", "libexec");
openlog($0,'cons,pid','user');
setlogmask( LOG_UPTO(loglevel()) );
-my $x2go_lib_path = system_capture_stdout_output("x2gopath", "libexec");
my $uname;
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