[X2Go-Commits] x2goserver.git - build-baikal (branch) updated: 3.0.99-2-74-gbdbf47f
X2Go dev team
git-admin at x2go.org
Wed Dec 4 06:21:17 CET 2013
The branch, build-baikal has been updated
via bdbf47f40a422883e18b49f7fa87c098219fa133 (commit)
from 108e3eb7b165843884c9c04252b8d8f489ce4da5 (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 | 1 +
x2goserver/bin/x2gocmdexitmessage | 1 +
x2goserver/bin/x2golistdesktops | 44 +-
x2goserver/bin/x2golistsessions | 65 ++-
x2goserver/bin/x2gomountdirs | 296 ++++++------
x2goserver/bin/x2goprint | 34 +-
x2goserver/bin/x2goresume-session | 18 +-
x2goserver/bin/x2goruncommand | 120 ++---
x2goserver/bin/x2goshowblocks | 6 +-
x2goserver/bin/x2gostartagent | 245 ++++------
x2goserver/bin/x2goumount-session | 140 +++---
x2goserver/lib/x2godbwrapper.pm | 874 +++++++++++++++++-----------------
x2goserver/lib/x2golistsessions_root | 60 ++-
x2goserver/lib/x2golistsessions_sql | 18 +-
x2goserver/lib/x2gosessionlimit | 82 ++--
15 files changed, 951 insertions(+), 1053 deletions(-)
The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 718c8d3..77f3189 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,7 @@ x2goserver (3.0.99.5-0~x2go3) UNRELEASED; urgency=low
* React to bug #627990, prefer man2html-base over man2html.
* Re-arranged script files in /bin and /lib directories, this is
still compensated by dh_install and dh_link and needs more work.
+ * Tab'ified all script files, proper indentation, coding style.
[Martin Oehler]
* Removes old debug code fragment, fixes x2golistsessions parsing.
diff --git a/x2goserver/bin/x2gocmdexitmessage b/x2goserver/bin/x2gocmdexitmessage
index 9c5e7bd..3f8e1e7 100755
--- a/x2goserver/bin/x2gocmdexitmessage
+++ b/x2goserver/bin/x2gocmdexitmessage
@@ -23,4 +23,5 @@
X2GO_ROOT=${HOME}/.x2go
MESSAGE_FILE=$X2GO_ROOT/C-$1/cmdoutput
+# return command output of the command that was issued by x2goruncommand
cat $MESSAGE_FILE
\ No newline at end of file
diff --git a/x2goserver/bin/x2golistdesktops b/x2goserver/bin/x2golistdesktops
index 8ba46ae..2679d6a 100755
--- a/x2goserver/bin/x2golistdesktops
+++ b/x2goserver/bin/x2golistdesktops
@@ -26,16 +26,16 @@ use Sys::Hostname;
my $serv=shift;
if( ! $serv)
{
- $serv=hostname;
+ $serv=hostname;
}
my $rsess=`x2golistsessions x2goserver |grep _stR`;
my @rsess=split("\n","$rsess");
my @rdisplays;
-for(my $i=0;$i<@rsess;$i++)
+for (my $i=0;$i<@rsess;$i++)
{
- my @sinfo=split("\\|", at rsess[$i]);
- @rdisplays[$i]=@sinfo[2];
+ my @sinfo=split("\\|", at rsess[$i]);
+ @rdisplays[$i]=@sinfo[2];
}
my $rdisp=join("I", at rdisplays);
@@ -46,19 +46,19 @@ my $outp=`ls -1 /tmp/.X11-unix/`;
my @outp=split("\n","$outp");
for(my $i=0;$i<@outp;$i++)
{
- my $display=@outp[$i];
- $display=~s/X/:/;
- my $checkdisp=$display;
- $checkdisp=~s/:/I/;
- $checkdisp="${checkdisp}I";
- if (!( $rdisp =~ m/$checkdisp/ ))
- {
- my $inf=`xwininfo -root -display $display 2> /dev/null`;
- if ( $inf=~ m/geometry/)
- {
- print "$uname\@$display\n";
- }
- }
+ my $display=@outp[$i];
+ $display=~s/X/:/;
+ my $checkdisp=$display;
+ $checkdisp=~s/:/I/;
+ $checkdisp="${checkdisp}I";
+ if (!( $rdisp =~ m/$checkdisp/ ))
+ {
+ my $inf=`xwininfo -root -display $display 2> /dev/null`;
+ if ( $inf=~ m/geometry/)
+ {
+ print "$uname\@$display\n";
+ }
+ }
}
$outp=`ls -1 /tmp/ | grep x2godesktopsharing_`;
@@ -66,9 +66,9 @@ $outp=`ls -1 /tmp/ | grep x2godesktopsharing_`;
for(my $i=0;$i<@outp;$i++)
{
- my @ln=split("\@", at outp[$i]);
- if( @ln[1] ne $uname )
- {
- print "@ln[1]\@@ln[2]\n";
- }
+ my @ln=split("\@", at outp[$i]);
+ if ( @ln[1] ne $uname )
+ {
+ print "@ln[1]\@@ln[2]\n";
+ }
}
diff --git a/x2goserver/bin/x2golistsessions b/x2goserver/bin/x2golistsessions
index 0119f3b..5e8f7f5 100755
--- a/x2goserver/bin/x2golistsessions
+++ b/x2goserver/bin/x2golistsessions
@@ -29,53 +29,52 @@ use x2godbwrapper;
sub check_stat
{
- my $sess=shift;
- my $log="$ENV{'HOME'}/.x2go/C-$sess/session.log";
- my $text=`tail -1 $log`;
- if($text =~ m/Session suspended/)
- {
- return 0;
- }
- return 1;
+ my $sess=shift;
+ my $log="$ENV{'HOME'}/.x2go/C-$sess/session.log";
+ my $text=`tail -1 $log`;
+ if ($text =~ m/Session suspended/)
+ {
+ return 0;
+ }
+ return 1;
}
my $serv=shift;
if( ! $serv)
{
- $serv=hostname;
+ $serv=hostname;
}
my @outp;
if($serv eq "--all-servers")
{
- @outp=db_listsessions_all();
+ @outp=db_listsessions_all();
}
else
{
- @outp=db_listsessions($serv);
+ @outp=db_listsessions($serv);
}
-for(my $i=0;$i<@outp;$i++)
+for (my $i=0;$i<@outp;$i++)
{
- @outp[$i] =~ s/ //g;
- @outp[$i] =~ s/\*/ /g;
- my @sinfo=split('\\|',"@outp[$i]");
- if(@sinfo[4]eq 'F')
- {
- print "@outp[$i]\n";
- }
- else
- {
- if(@sinfo[4]eq 'R')
- {
- if(!check_stat(@sinfo[1]))
- {
- db_changestatus( 'S', @sinfo[1] );
- @outp[$i] =~ s/\|R\|/\|S\|/;
- system( "x2goumount-session @sinfo[1]");
-
- }
- }
- print "@outp[$i]\n";
- }
+ @outp[$i] =~ s/ //g;
+ @outp[$i] =~ s/\*/ /g;
+ my @sinfo=split('\\|',"@outp[$i]");
+ if (@sinfo[4]eq 'F')
+ {
+ print "@outp[$i]\n";
+ }
+ else
+ {
+ if (@sinfo[4]eq 'R')
+ {
+ if(!check_stat(@sinfo[1]))
+ {
+ db_changestatus( 'S', @sinfo[1] );
+ @outp[$i] =~ s/\|R\|/\|S\|/;
+ system( "x2goumount-session @sinfo[1]");
+ }
+ }
+ print "@outp[$i]\n";
+ }
}
diff --git a/x2goserver/bin/x2gomountdirs b/x2goserver/bin/x2gomountdirs
index e84149d..7eb0442 100755
--- a/x2goserver/bin/x2gomountdirs
+++ b/x2goserver/bin/x2gomountdirs
@@ -34,38 +34,38 @@ my $i=0;
@dl[$i]=shift;
while(@dl[$i])
{
- $i++;
- @dl[$i]=shift;
+ $i++;
+ @dl[$i]=shift;
}
my $dirlist=join(" ", at dl);
chop($dirlist);
my $reverse=0;
my $port="22";
print "dirs:$dirlist\n";
-if($dirlist =~ m/__REVERSESSH_PORT__/)
+if ($dirlist =~ m/__REVERSESSH_PORT__/)
{
- @dl=split("__REVERSESSH_PORT__","$dirlist");
- $dirlist=@dl[0];
- $port=@dl[1];
- $reverse=1;
+ @dl=split("__REVERSESSH_PORT__","$dirlist");
+ $dirlist=@dl[0];
+ $port=@dl[1];
+ $reverse=1;
}
-if($dirlist =~ m/__SSH_PORT__/)
+if ($dirlist =~ m/__SSH_PORT__/)
{
- @dl=split("__SSH_PORT__","$dirlist");
- $dirlist=@dl[0];
- $port=@dl[1];
+ @dl=split("__SSH_PORT__","$dirlist");
+ $dirlist=@dl[0];
+ $port=@dl[1];
}
print "ssh port:$port\n";
my $host;
if($reverse == 0)
{
- $host=(split(" ",$ENV{'SSH_CLIENT'}))[0];
+ $host=(split(" ",$ENV{'SSH_CLIENT'}))[0];
}
else
{
- $host='127.0.0.1';
+ $host='127.0.0.1';
}
print "Host:$host\n";
print "User:$user\n";
@@ -96,200 +96,198 @@ my $spooldir="/tmp/spool_$ENV{'USER'}";
my $mimeboxdir_lnk="$ENV{'HOME'}/.x2go/C-$session/mimebox";
my $mimeboxdir="/tmp/mimebox_$ENV{'USER'}";
-if(! -e $mdir)
+if (! -e $mdir)
{
- mkdir($mdir);
+ mkdir($mdir);
}
chmod(0700,$mdir);
-if(! -e "$mdir/disk")
+if (! -e "$mdir/disk")
{
- mkdir("$mdir/disk");
+ mkdir("$mdir/disk");
}
chmod(0700,"$mdir/disk");
-if(! -e "$mdir/cd")
+if (! -e "$mdir/cd")
{
- mkdir("$mdir/cd");
+ mkdir("$mdir/cd");
}
chmod(0700,"$mdir/cd");
-if(! -e "$mdir/rm")
+if (! -e "$mdir/rm")
{
- mkdir("$mdir/rm");
+ mkdir("$mdir/rm");
}
chmod(0700,"$mdir/rm");
my $plasmstamp=$mdir."/".$session.".plasmoid";
-if(! -e $spooldir)
+if (! -e $spooldir)
{
- mkdir($spooldir);
+ mkdir($spooldir);
}
chmod(0700,$spooldir);
$spooldir="$spooldir/$session";
-if(! -e $spooldir)
+if (! -e $spooldir)
{
- mkdir($spooldir);
+ mkdir($spooldir);
}
chmod(0700,$spooldir);
-if(! -e $mimeboxdir)
+if (! -e $mimeboxdir)
{
- mkdir($mimeboxdir);
+ mkdir($mimeboxdir);
}
chmod(0700,$mimeboxdir);
$mimeboxdir="$mimeboxdir/$session";
-if(! -e $mimeboxdir)
+if (! -e $mimeboxdir)
{
- mkdir($mimeboxdir);
+ mkdir($mimeboxdir);
}
chmod(0700,$mimeboxdir);
-if( -d $ldir)
+if ( -d $ldir)
{
- rmdir($ldir);
+ rmdir($ldir);
}
-if( ! -l $ldir)
+if ( ! -l $ldir)
{
- system ("ln -s $mdir $ldir");
+ system ("ln -s $mdir $ldir");
}
-if( -d $spooldir_lnk)
+if ( -d $spooldir_lnk)
{
- rmdir($spooldir_lnk);
+ rmdir($spooldir_lnk);
}
-if( ! -l $spooldir_lnk)
+if ( ! -l $spooldir_lnk)
{
- system ("ln -s $spooldir $spooldir_lnk");
+ system ("ln -s $spooldir $spooldir_lnk");
}
-if( -d $mimeboxdir_lnk)
+if ( -d $mimeboxdir_lnk)
{
- rmdir($mimeboxdir_lnk);
+ rmdir($mimeboxdir_lnk);
}
-if( ! -l $mimeboxdir_lnk)
+if ( ! -l $mimeboxdir_lnk)
{
- system ("ln -s $mimeboxdir $mimeboxdir_lnk");
+ system ("ln -s $mimeboxdir $mimeboxdir_lnk");
}
my $uname=$ENV{'USER'};
my @dirs=split(':',$dirlist);
-for(my $i=0;$i<@dirs;$i++)
+for (my $i=0;$i<@dirs;$i++)
{
- my $printspool=0;
- my $mimeboxspool=0;
- my $mntpath;
- if(@dirs[$i]=~m/__PRINT_SPOOL_/)
- {
- @dirs[$i]=~s/__PRINT_SPOOL_//;
- $printspool=1;
- $mntpath=$spooldir;
- }
- elsif(@dirs[$i]=~m/__MIMEBOX_SPOOL_/)
- {
- @dirs[$i]=~s/__MIMEBOX_SPOOL_//;
- $mimeboxspool=1;
- $mntpath=$mimeboxdir;
- }
- else
- {
- 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";
- }
-
- if(db_insertmount( $session, $mntpath, $host))
- {
- my $code_conv=$ENV{'X2GO_ICONV'};
- if($code_conv ne "")
- {
- $code_conv="-o $code_conv";
- }
- print "inserted,\nsshfs $code_conv -o IdentityFile=$key,UserKnownHostsFile=$key.ident $user\@$host:\"@dirs[$i]\" \"$mntpath\" -p $port\n";
- if(system("sshfs $code_conv -o 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";
-
- # check if kde4 plasmoid running
- my $useplasmoid=0;
- if( -e $plasmstamp )
- {
- open(STMP,"<$plasmstamp");
- my $stamp=<STMP>;
- close (STMP);
- if(abs($stamp-time())<15)
- {
- $useplasmoid=1;
- }
- }
- if(! $printspool && ! $mimeboxspool && ! $useplasmoid)
- {
- my $fname="$ENV{'HOME'}/Desktop";
- my $p=@dirs[$i];
- $p=~s/\/cygdrive\///g;
- $p=~s/\//_/g;
- $fname="$fname/$p";
- if($type eq "dir")
- {
- $fname="$fname(sshfs-disk)";
- }
- else
- {
- if($fname =~ m/CDROM/)
- {
- $fname="$fname(sshfs-cdrom)";
- }
- else
- {
- $fname="$fname(sshfs-removable)";
- }
- $fname=~s/_ramdrive_mnt_//;
- }
- print "fname: $fname\n";
- open(F,">$fname");
- print F "$mntpath\n$session\n\n\0";
- close(F);
- }
- }
- else
- {
- print "mount @dirs[$i] failed\n";
- db_deletemount( $session, $mntpath);
- rmdir($mntpath);
- }
- }
- else
- {
- print "insertion failed(already mounted?), not mounting\n";
- }
+ my $printspool=0;
+ my $mimeboxspool=0;
+ my $mntpath;
+ if(@dirs[$i]=~m/__PRINT_SPOOL_/)
+ {
+ @dirs[$i]=~s/__PRINT_SPOOL_//;
+ $printspool=1;
+ $mntpath=$spooldir;
+ }
+ elsif(@dirs[$i]=~m/__MIMEBOX_SPOOL_/)
+ {
+ @dirs[$i]=~s/__MIMEBOX_SPOOL_//;
+ $mimeboxspool=1;
+ $mntpath=$mimeboxdir;
+ }
+ else
+ {
+ 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";
+ }
+
+ if (db_insertmount( $session, $mntpath, $host))
+ {
+ my $code_conv=$ENV{'X2GO_ICONV'};
+ if ($code_conv ne "")
+ {
+ $code_conv="-o $code_conv";
+ }
+ print "inserted,\nsshfs $code_conv -o IdentityFile=$key,UserKnownHostsFile=$key.ident $user\@$host:\"@dirs[$i]\" \"$mntpath\" -p $port\n";
+ if (system("sshfs $code_conv -o 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";
+ # check if kde4 plasmoid running
+ my $useplasmoid=0;
+ if ( -e $plasmstamp )
+ {
+ open(STMP,"<$plasmstamp");
+ my $stamp=<STMP>;
+ close (STMP);
+ if (abs($stamp-time())<15)
+ {
+ $useplasmoid=1;
+ }
+ }
+ if (! $printspool && ! $mimeboxspool && ! $useplasmoid)
+ {
+ my $fname="$ENV{'HOME'}/Desktop";
+ my $p=@dirs[$i];
+ $p=~s/\/cygdrive\///g;
+ $p=~s/\//_/g;
+ $fname="$fname/$p";
+ if ($type eq "dir")
+ {
+ $fname="$fname(sshfs-disk)";
+ }
+ else
+ {
+ if ($fname =~ m/CDROM/)
+ {
+ $fname="$fname(sshfs-cdrom)";
+ }
+ else
+ {
+ $fname="$fname(sshfs-removable)";
+ }
+ $fname=~s/_ramdrive_mnt_//;
+ }
+ print "fname: $fname\n";
+ open(F,">$fname");
+ print F "$mntpath\n$session\n\n\0";
+ close(F);
+ }
+ }
+ else
+ {
+ print "mount @dirs[$i] failed\n";
+ db_deletemount( $session, $mntpath);
+ rmdir($mntpath);
+ }
+ }
+ else
+ {
+ print "insertion failed(already mounted?), not mounting\n";
+ }
}
unlink($key);
diff --git a/x2goserver/bin/x2goprint b/x2goserver/bin/x2goprint
index 1a4ebaf..9360cf9 100755
--- a/x2goserver/bin/x2goprint
+++ b/x2goserver/bin/x2goprint
@@ -30,12 +30,12 @@ use x2godbwrapper;
if (scalar(@ARGV) ==1)
{
- system ("su @ARGV[0] -c \"x2golistsessions --all-servers\" ");
+ system ("su @ARGV[0] -c \"x2golistsessions --all-servers\" ");
}
elsif (scalar(@ARGV) != 4)
{
- print STDERR "ERROR: Usage:\nx2goprint user session file titleFile\nx2goprint user\n";
- exit 1;
+ print STDERR "ERROR: Usage:\nx2goprint user session file titleFile\nx2goprint user\n";
+ exit 1;
}
my ($user, $session, $file, $titleFile)=@ARGV;
@@ -46,10 +46,10 @@ my $printdir=$homedir;
my $title;
if( -e "$printdir/$titleFile")
{
- open (TITLE,"<$printdir/$titleFile");
- $title=<TITLE>;
- close (TITLE);
- unlink("$printdir/$titleFile");
+ open (TITLE,"<$printdir/$titleFile");
+ $title=<TITLE>;
+ close (TITLE);
+ unlink("$printdir/$titleFile");
}
@@ -63,20 +63,20 @@ chown $uid, $gid, "$spooltmp";
chmod 0700, "$spooltmp";
my ($mounts)=db_getmounts($session);
-if( $mounts=~m/$spooldir/)
+if ( $mounts=~m/$spooldir/)
{
- move("$printdir/$file", "$spooltmp") or die "$!: Can't move $file to $spooltmp/";
- chown $uid, $gid, "$spooltmp/$file";
- system("su $user -c \"mv $spooltmp/$file $spooldir\"");
+ move("$printdir/$file", "$spooltmp") or die "$!: Can't move $file to $spooltmp/";
+ chown $uid, $gid, "$spooltmp/$file";
- open (RFILE,">$spooltmp/$file.ready");
- print RFILE "$file\n$title";
- close (RFILE);
+ system("su $user -c \"mv $spooltmp/$file $spooldir\"");
+ open (RFILE,">$spooltmp/$file.ready");
+ print RFILE "$file\n$title";
+ close (RFILE);
- chown $uid, $gid, "$spooltmp/$file.ready";
- system ("su $user -c \"mv $spooltmp/$file.ready $spooldir\"");
+ chown $uid, $gid, "$spooltmp/$file.ready";
+ system ("su $user -c \"mv $spooltmp/$file.ready $spooldir\"");
}
else
{
- unlink("$printdir/$file");
+ unlink("$printdir/$file");
}
diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session
index 25e7832..0f90311 100755
--- a/x2goserver/bin/x2goresume-session
+++ b/x2goserver/bin/x2goresume-session
@@ -28,24 +28,21 @@ X2GO_KBD_LAYOUT=$5
X2GO_KBD_TYPE=$6
X2GO_SET_KBD=$7
-
-
X2GO_AGENT_PID=`x2gogetagent $SESSION_NAME`
-
X2GO_ROOT=${HOME}/.x2go
X2GO_RESIZE=0
X2GO_FULLSCREEN=0
if [ "$X2GO_GEOMETRY" == "" ]
then
- X2GO_GEOMETRY=fullscreen
+ X2GO_GEOMETRY=fullscreen
fi
if [ "$X2GO_GEOMETRY" == "fullscreen" ]
then
- X2GO_RESIZE=1
- X2GO_FULLSCREEN=1
+ X2GO_RESIZE=1
+ X2GO_FULLSCREEN=1
fi
SESSION_DIR=${X2GO_ROOT}/C-${SESSION_NAME}
@@ -58,13 +55,12 @@ LSTR=`echo "$OPTIONS" | awk -F, {'print $2'}`
PSTR=`echo "$OPTIONS" | awk -F, {'print $3'}`
KTSTR=`echo "$OPTIONS" | awk -F, {'print $12'}`
-
KTSTR=`echo $KTSTR | sed "s/\//\\\\\\\\\//"`
X2GO_KBD_TYPE=`echo $X2GO_KBD_TYPE | sed "s/\//\\\\\\\\\//"`
if [ "$X2GO_SET_KBD" == "0" ]
then
- X2GO_KBD_TYPE="null\/null"
+ X2GO_KBD_TYPE="null\/null"
fi
NEWOPTIONS=`echo "$OPTIONS" | sed -e "s/$LSTR/link=$X2GO_LINK/"\
@@ -74,14 +70,10 @@ NEWOPTIONS=`echo "$OPTIONS" | sed -e "s/$LSTR/link=$X2GO_LINK/"\
-e "s/$RSTR/resize=$X2GO_RESIZE/"\
-e "s/$FSTR/fullscreen=$X2GO_FULLSCREEN/"`
-
-#echo -e "old options:$OPTIONS\n\nnew options:$NEWOPTIONS"
-
-
X2GO_CLIENT=`echo $SSH_CLIENT | awk '{print $1}'`
if [ "$X2GO_CLIENT" == "" ]
then
- X2GO_CLIENT=$HOSTNAME
+ X2GO_CLIENT=$HOSTNAME
fi
echo "$NEWOPTIONS" >${SESSION_DIR}/options
diff --git a/x2goserver/bin/x2goruncommand b/x2goserver/bin/x2goruncommand
index b639774..1af50c2 100755
--- a/x2goserver/bin/x2goruncommand
+++ b/x2goserver/bin/x2goruncommand
@@ -37,75 +37,56 @@ echo "exec $cmd" >> $MESSAGE_FILE
IMEXIT="false"
-if [ "$sndsys" == "esd" ]
-then
- export ESPEAKER=localhost:$4
-elif [ "$sndsys" == "arts" ]
-then
- export ARTS_SERVER=localhost:$4
+if [ "$sndsys" == "esd" ]; then
+ export ESPEAKER=localhost:$4
+elif [ "$sndsys" == "arts" ]; then
+ export ARTS_SERVER=localhost:$4
fi
-if [ "$cmd" == "WWWBROWSER" ]
-then
- if [ -e "/usr/bin/firefox" ]
- then
- cmd="/usr/bin/firefox"
- elif [ -e "/usr/bin/iceweasel" ]
- then
- cmd="/usr/bin/iceweasel"
- elif [ -e "/usr/bin/abrowser" ]
- then
- cmd="/usr/bin/abrowser"
- elif [ -e "/usr/bin/konqueror" ]
- then
- cmd="/usr/bin/konqueror"
- elif [ -e "/usr/bin/galeon" ]
- then
- cmd="/usr/bin/galeon"
- fi
+if [ "$cmd" == "WWWBROWSER" ]; then
+ if [ -e "/usr/bin/firefox" ]; then
+ cmd="/usr/bin/firefox"
+ elif [ -e "/usr/bin/iceweasel" ]; then
+ cmd="/usr/bin/iceweasel"
+ elif [ -e "/usr/bin/abrowser" ]; then
+ cmd="/usr/bin/abrowser"
+ elif [ -e "/usr/bin/konqueror" ]; then
+ cmd="/usr/bin/konqueror"
+ elif [ -e "/usr/bin/galeon" ]; then
+ cmd="/usr/bin/galeon"
+ fi
fi
-if [ "$cmd" == "MAILCLIENT" ]
-then
- if [ -e "/usr/bin/thunderbird" ]
- then
- cmd="/usr/bin/thunderbird"
- elif [ -e "/usr/bin/icedove" ]
- then
- cmd="/usr/bin/icedove"
- elif [ -e "/usr/bin/kmail" ]
- then
- cmd="/usr/bin/kmail"
- elif [ -e "/usr/bin/evolution" ]
- then
- cmd="/usr/bin/evolution"
- fi
+if [ "$cmd" == "MAILCLIENT" ]; then
+ if [ -e "/usr/bin/thunderbird" ]; then
+ cmd="/usr/bin/thunderbird"
+ elif [ -e "/usr/bin/icedove" ]; then
+ cmd="/usr/bin/icedove"
+ elif [ -e "/usr/bin/kmail" ]; then
+ cmd="/usr/bin/kmail"
+ elif [ -e "/usr/bin/evolution" ]; then
+ cmd="/usr/bin/evolution"
+ fi
fi
-if [ "$cmd" == "OFFICE" ]
-then
- if [ -e "/usr/bin/ooffice" ]
+if [ "$cmd" == "OFFICE" ]; then
+ if [ -e "/usr/bin/ooffice" ]
then
cmd="/usr/bin/ooffice"
fi
fi
-if [ "$cmd" == "TERMINAL" ]
-then
- IMEXIT="true"
- if [ -e "/usr/bin/konsole" ]
- then
- cmd="/usr/bin/konsole"
- elif [ -e "/usr/bin/gnome-terminal" ]
- then
- cmd="/usr/bin/gnome-terminal"
- elif [ -e "/usr/bin/rxvt" ]
- then
- cmd="/usr/bin/rxvt"
- elif [ -e "/usr/bin/xterm" ]
- then
- cmd="/usr/bin/xterm"
- fi
+if [ "$cmd" == "TERMINAL" ]; then
+ IMEXIT="true"
+ if [ -e "/usr/bin/konsole" ]; then
+ cmd="/usr/bin/konsole"
+ elif [ -e "/usr/bin/gnome-terminal" ]; then
+ cmd="/usr/bin/gnome-terminal"
+ elif [ -e "/usr/bin/rxvt" ]; then
+ cmd="/usr/bin/rxvt"
+ elif [ -e "/usr/bin/xterm" ]; then
+ cmd="/usr/bin/xterm"
+ fi
fi
EXEC=`which $cmd`
@@ -113,22 +94,19 @@ EXEC=`which $cmd`
BNAME=`basename $EXEC`
if [ "$BNAME" == "rdesktop" ]
then
- IMEXIT="true"
+ IMEXIT="true"
fi
-if [ "$EXEC" != "" ] && [ -x `which $cmd` ]
-then
- $cmd
- #### some applications can quit immediately, we waiting until x2goagent exists
- if [ "$X2GO_SESS_TYPE" == "R" ] && [ "$IMEXIT" == "false" ]
- then
- while [ -d /proc/$X2GO_AGENT_PID ]
- do
- sleep 1
- done
- fi
+if [ "$EXEC" != "" ] && [ -x `which $cmd` ]; then
+ $cmd
+ #### some applications can quit immediately, we waiting until x2goagent exists
+ if [ "$X2GO_SESS_TYPE" == "R" ] && [ "$IMEXIT" == "false" ]; then
+ while [ -d /proc/$X2GO_AGENT_PID ]; do
+ sleep 1
+ done
+ fi
else
- echo "X2GORUNCOMMAND ERR NOEXEC:$cmd" > $MESSAGE_FILE
+ echo "X2GORUNCOMMAND ERR NOEXEC:$cmd" > $MESSAGE_FILE
fi
kill -TERM $X2GO_AGENT_PID
diff --git a/x2goserver/bin/x2goshowblocks b/x2goserver/bin/x2goshowblocks
index ad64f65..e5f3d1f 100755
--- a/x2goserver/bin/x2goshowblocks
+++ b/x2goserver/bin/x2goshowblocks
@@ -30,8 +30,8 @@ my $uname=shift;
my $id=shift;
my $tbl="mounts";
my @outp=dbsys_getmounts( $id);
-for(my $i=0;$i<@outp;$i++)
+for (my $i=0;$i<@outp;$i++)
{
- my $path=(split("\\|", at outp[$i]))[1];
- print `su $uname -c "lsof 2>/dev/null | grep $path"`;
+ my $path=(split("\\|", at outp[$i]))[1];
+ print `su $uname -c "lsof 2>/dev/null | grep $path"`;
}
diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent
index ff19983..37fe767 100755
--- a/x2goserver/bin/x2gostartagent
+++ b/x2goserver/bin/x2gostartagent
@@ -38,47 +38,43 @@ X2GO_CMD=$9
X2GO_RESIZE=0
X2GO_FULLSCREEN=0
-if [ "$X2GO_STYPE" == "S" ]
-then
-
- SHADOW_MODE=`echo "$X2GO_CMD"|awk '{split($0,a,"XSHAD"); print a[1]}'`
- SHADOW_USER=`echo "$X2GO_CMD"|awk '{split($0,a,"XSHAD"); print a[2]}'`
- SHADOW_DESKTOP=`echo "$X2GO_CMD"|awk '{split($0,a,"XSHAD"); print a[3]}'`
-
- echo "suser $SHADOW_USER user $USER " >> /tmp/uagent
-
- if [ "$SHADOW_USER" != "$USER" ]
- then
-
- OUTPUT=`x2godesktopsharing client $X2GO_CLIENT $@`
- if [ "$OUTPUT" == "DENY" ]
- then
- echo "ACCESS DENIED" 1>&2
- exit -1
+if [ "$X2GO_STYPE" == "S" ]; then
+
+ SHADOW_MODE=`echo "$X2GO_CMD"|awk '{split($0,a,"XSHAD"); print a[1]}'`
+ SHADOW_USER=`echo "$X2GO_CMD"|awk '{split($0,a,"XSHAD"); print a[2]}'`
+ SHADOW_DESKTOP=`echo "$X2GO_CMD"|awk '{split($0,a,"XSHAD"); print a[3]}'`
+
+ echo "suser $SHADOW_USER user $USER " >> /tmp/uagent
+
+ if [ "$SHADOW_USER" != "$USER" ]; then
+
+ OUTPUT=`x2godesktopsharing client $X2GO_CLIENT $@`
+ if [ "$OUTPUT" == "DENY" ]; then
+ echo "ACCESS DENIED" 1>&2
+ exit -1
+ fi
+ X2GO_COOKIE=`echo $OUTPUT | awk '{print $2}'`
+ X2GO_PORT=`echo $OUTPUT | awk '{print $1}'`
+ xauth add ${HOSTNAME}/unix:${X2GO_PORT} MIT-MAGIC-COOKIE-1 ${X2GO_COOKIE}
+ xauth add ${HOSTNAME}:${X2GO_PORT} MIT-MAGIC-COOKIE-1 ${X2GO_COOKIE}
+
+ echo $X2GO_PORT
+ echo $X2GO_COOKIE
+ echo $OUTPUT | awk '{print $3}'
+ echo $OUTPUT | awk '{print $4}'
+ echo $OUTPUT | awk '{print $5}'
+ echo $OUTPUT | awk '{print $6}'
+ echo $OUTPUT | awk '{print $7}'
+ exit 0
fi
- X2GO_COOKIE=`echo $OUTPUT | awk '{print $2}'`
- X2GO_PORT=`echo $OUTPUT | awk '{print $1}'`
- xauth add ${HOSTNAME}/unix:${X2GO_PORT} MIT-MAGIC-COOKIE-1 ${X2GO_COOKIE}
- xauth add ${HOSTNAME}:${X2GO_PORT} MIT-MAGIC-COOKIE-1 ${X2GO_COOKIE}
-
- echo $X2GO_PORT
- echo $X2GO_COOKIE
- echo $OUTPUT | awk '{print $3}'
- echo $OUTPUT | awk '{print $4}'
- echo $OUTPUT | awk '{print $5}'
- echo $OUTPUT | awk '{print $6}'
- echo $OUTPUT | awk '{print $7}'
- exit
- fi
fi
LIMIT=`x2gosessionlimit`
LWORD=`echo $LIMIT | awk '{print $1}'`
-if [ "$LWORD" == "LIMIT" ]
-then
- echo $LIMIT 1>&2
- exit -1
+if [ "$LWORD" == "LIMIT" ]; then
+ echo $LIMIT 1>&2
+ exit -1
fi
export NX_CLIENT=/usr/bin/x2gosuspend-agent
@@ -87,113 +83,93 @@ COLORDEPTH=`echo "$X2GO_TYPE"|awk '{split($0,a,"-depth_"); print a[2]}'`
SESSION_TYPE="D"
-if [ "$X2GO_STYPE" == "R" ]
-then
- SESSION_TYPE="R"
-elif [ "$X2GO_STYPE" == "S" ]
-then
- SESSION_TYPE="S"
+if [ "$X2GO_STYPE" == "R" ]; then
+ SESSION_TYPE="R"
+elif [ "$X2GO_STYPE" == "S" ]; then
+ SESSION_TYPE="S"
fi
-if [ "$X2GO_CLIENT" == "" ]
-then
- X2GO_CLIENT=$HOSTNAME
+if [ "$X2GO_CLIENT" == "" ]; then
+ X2GO_CLIENT=$HOSTNAME
fi
-
USED_DISPLAYS=`x2gogetdisplays $HOSTNAME`
-while [ "$OUTPUT" != "inserted" ]
-do
- X2GO_PORT=$(($X2GO_PORT + 1))
- X2GO_PORT=`echo "for(\\$i=$X2GO_PORT;\\$br ne \"true\";\\$i++){ if(\"$USED_DISPLAYS\" =~ m/\\|\\$i\\|/){\\$br=\"false\";}else{\\$br=\"true\";print \\$i;}}"|perl`
-
- if [ -e "/tmp/.X${X2GO_PORT}-lock" ] || [ -e "/tmp/.X11-unix/X${X2GO_PORT}" ]
- then
- OUTPUT="XXX"
- else
- SESSION_NAME=${USER}-${X2GO_PORT}-`date +"%s"`
- if [ "$COLORDEPTH" != "" ]
- then
- SESSION_NAME="$SESSION_NAME"_st${SESSION_TYPE}${X2GO_CMD}_dp${COLORDEPTH}
- SESSION_NAME=`echo "$SESSION_NAME" | sed -e "s/:/PP/g"`
- fi
- OUTPUT=`x2goinsertsession $X2GO_PORT $HOSTNAME $SESSION_NAME`
- fi
+while [ "$OUTPUT" != "inserted" ]; do
+ X2GO_PORT=$(($X2GO_PORT + 1))
+ X2GO_PORT=`echo "for(\\$i=$X2GO_PORT;\\$br ne \"true\";\\$i++){ if(\"$USED_DISPLAYS\" =~ m/\\|\\$i\\|/){\\$br=\"false\";}else{\\$br=\"true\";print \\$i;}}"|perl`
+
+ if [ -e "/tmp/.X${X2GO_PORT}-lock" ] || [ -e "/tmp/.X11-unix/X${X2GO_PORT}" ]; then
+ OUTPUT="XXX"
+ else
+ SESSION_NAME=${USER}-${X2GO_PORT}-`date +"%s"`
+ if [ "$COLORDEPTH" != "" ]; then
+ SESSION_NAME="$SESSION_NAME"_st${SESSION_TYPE}${X2GO_CMD}_dp${COLORDEPTH}
+ SESSION_NAME=`echo "$SESSION_NAME" | sed -e "s/:/PP/g"`
+ fi
+ OUTPUT=`x2goinsertsession $X2GO_PORT $HOSTNAME $SESSION_NAME`
+ fi
done
USED_PORTS=`x2gogetports $HOSTNAME`
-while [ "$GR_PORT" == "" ] || [ "$SOUND_PORT" == "" ] || [ "$FS_PORT" == "" ]
-do
- OUTPUT=""
- while [ "$OUTPUT" != "inserted" ]
- do
- SSH_PORT=$(($SSH_PORT + 1))
+while [ "$GR_PORT" == "" ] || [ "$SOUND_PORT" == "" ] || [ "$FS_PORT" == "" ]; do
+ OUTPUT=""
+ while [ "$OUTPUT" != "inserted" ]; do
+ SSH_PORT=$(($SSH_PORT + 1))
- ##check if port in /etc/services
+ #check if port in /etc/services
+ SSH_PORT=`echo "for(\\$i=$SSH_PORT;\\$br ne \"true\";\\$i++){ if(\"$USED_PORTS\" =~ m/\\|\\$i\\|/){\\$br=\"false\";}else{\\$br=\"true\";print \\$i;}}"|perl`
- SSH_PORT=`echo "for(\\$i=$SSH_PORT;\\$br ne \"true\";\\$i++){ if(\"$USED_PORTS\" =~ m/\\|\\$i\\|/){\\$br=\"false\";}else{\\$br=\"true\";print \\$i;}}"|perl`
-
- SERV=`grep $SSH_PORT /etc/services`
- if [ "$SERV" == "" ]
- then
- CR=`echo "use IO::Socket; \\$sock = new IO::Socket::INET ( LocalAddr => 'localhost',LocalPort => \"$SSH_PORT\",\
+ SERV=`grep $SSH_PORT /etc/services`
+ if [ "$SERV" == "" ]; then
+ CR=`echo "use IO::Socket; \\$sock = new IO::Socket::INET ( LocalAddr => 'localhost',LocalPort => \"$SSH_PORT\",\
Proto => 'tcp',Listen => 1,Reuse =>1 ) or die ;print \"OK\";close(\\$sock);"|perl 2>/dev/null`
- if [ "$CR" == "OK" ]
- then
- OUTPUT=`x2goinsertport $HOSTNAME $SESSION_NAME $SSH_PORT`
- fi
- fi
- done
- if [ "$GR_PORT" == "" ]
- then
- GR_PORT=$SSH_PORT
- elif [ "$SOUND_PORT" == "" ]
- then
- SOUND_PORT=$SSH_PORT
- else
- FS_PORT=$SSH_PORT
- fi
+ if [ "$CR" == "OK" ]; then
+ OUTPUT=`x2goinsertport $HOSTNAME $SESSION_NAME $SSH_PORT`
+ fi
+ fi
+ done
+ if [ "$GR_PORT" == "" ]; then
+ GR_PORT=$SSH_PORT
+ elif [ "$SOUND_PORT" == "" ]; then
+ SOUND_PORT=$SSH_PORT
+ else
+ FS_PORT=$SSH_PORT
+ fi
done
-
-if [ "$X2GO_GEOMETRY" == "" ]
-then
- X2GO_GEOMETRY=fullscreen
+if [ "$X2GO_GEOMETRY" == "" ]; then
+ X2GO_GEOMETRY=fullscreen
fi
-if [ "$X2GO_GEOMETRY" == "fullscreen" ]
-then
- X2GO_RESIZE=1
- X2GO_FULLSCREEN=1
+if [ "$X2GO_GEOMETRY" == "fullscreen" ]; then
+ X2GO_RESIZE=1
+ X2GO_FULLSCREEN=1
fi
-if [ "$X2GO_STYPE" == "S" ]
-then
- X2GO_GEOMETRY=`DISPLAY=$SHADOW_DESKTOP xwininfo -root | grep geometry`
- X2GO_GEOMETRY=`echo "$X2GO_GEOMETRY" | sed -e "s/ //g"`
- X2GO_GEOMETRY=`echo "$X2GO_GEOMETRY" | sed -e "s/-geometry//"`
+
+if [ "$X2GO_STYPE" == "S" ]; then
+ X2GO_GEOMETRY=`DISPLAY=$SHADOW_DESKTOP xwininfo -root | grep geometry`
+ X2GO_GEOMETRY=`echo "$X2GO_GEOMETRY" | sed -e "s/ //g"`
+ X2GO_GEOMETRY=`echo "$X2GO_GEOMETRY" | sed -e "s/-geometry//"`
fi
SESSION_DIR=${X2GO_ROOT}/C-${SESSION_NAME}
-if [ ! -d $X2GO_ROOT ]
-then
- mkdir $X2GO_ROOT
+if [ ! -d $X2GO_ROOT ]; then
+ mkdir $X2GO_ROOT
fi
-if [ ! -d $X2GO_ROOT/ssh ]
-then
- mkdir $X2GO_ROOT/ssh
+if [ ! -d $X2GO_ROOT/ssh ]; then
+ mkdir $X2GO_ROOT/ssh
fi
-if [ ! -d $SESSION_DIR ]
-then
- mkdir $SESSION_DIR
+if [ ! -d $SESSION_DIR ]; then
+ mkdir $SESSION_DIR
fi
X2GO_COOKIE=`mcookie`
@@ -210,55 +186,38 @@ xauth add ${HOSTNAME}/unix:${X2GO_PORT} MIT-MAGIC-COOKIE-1 ${X2GO_COOKIE}
xauth add ${HOSTNAME}:${X2GO_PORT} MIT-MAGIC-COOKIE-1 ${X2GO_COOKIE}
-
if [ "$X2GO_SET_KBD" == "0" ]
then
-X2GO_HOST=nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},\
-id=${SESSION_NAME},\
-cookie=$X2GO_COOKIE,errors=${SESSION_DIR}/session.log,kbtype=null/null,\
-geometry=${X2GO_GEOMETRY},resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT},client=linux,menu=0
+ X2GO_HOST="nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},id=${SESSION_NAME},cookie=$X2GO_COOKIE,errors=${SESSION_DIR}/session.log,kbtype=null/null,geometry=${X2GO_GEOMETRY},resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT},client=linux,menu=0"
else
-X2GO_HOST=nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},\
-id=${SESSION_NAME},\
-cookie=$X2GO_COOKIE,errors=${SESSION_DIR}/session.log,kbtype=${X2GO_KBD_TYPE},\
-geometry=${X2GO_GEOMETRY},resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT},client=linux,menu=0
+ X2GO_HOST="nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},id=${SESSION_NAME},cookie=$X2GO_COOKIE,errors=${SESSION_DIR}/session.log,kbtype=${X2GO_KBD_TYPE},geometry=${X2GO_GEOMETRY},resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT},client=linux,menu=0"
fi
-
echo "${X2GO_HOST}:${X2GO_PORT}" >${SESSION_DIR}/options
-NX_AGENT=:${X2GO_PORT}
-
-
-SAVED_DISPLAY=$DISPLAY
-
-DISPLAY=nx/nx,options=${SESSION_DIR}/options:${X2GO_PORT}
+NX_AGENT=":${X2GO_PORT}"
+SAVED_DISPLAY="$DISPLAY"
+DISPLAY="nx/nx,options=${SESSION_DIR}/options:${X2GO_PORT}"
export DISPLAY
-if [ "$X2GODPI" == "" ]
-then
- X2GODPIOPTION_=""
+if [ "$X2GODPI" == "" ]; then
+ X2GODPIOPTION_=""
else
- X2GODPIOPTION_="-dpi $X2GODPI"
+ X2GODPIOPTION_="-dpi $X2GODPI"
fi
-if [ "$X2GOXDMCP" == "" ]
-then
- XDMCPOPT=""
+if [ "$X2GOXDMCP" == "" ] ;then
+ XDMCPOPT=""
else
- XDMCPOPT="-query $X2GOXDMCP"
+ XDMCPOPT="-query $X2GOXDMCP"
fi
-if [ "$X2GO_STYPE" == "S" ]
-then
- LD_LIBRARY_PATH=$X2GO_LIB x2goagent $X2GODPIOPTION_ -$SESSION_TYPE -auth ~/.Xauthority \
- -S -shadow $SHADOW_DESKTOP -shadowmode $SHADOW_MODE \
- -geometry ${X2GO_GEOMETRY} -name "X2GO-${SESSION_NAME}" ${NX_AGENT} 2>${SESSION_DIR}/session.log &
+if [ "$X2GO_STYPE" == "S" ]; then
+ LD_LIBRARY_PATH=$X2GO_LIB x2goagent $X2GODPIOPTION_ -$SESSION_TYPE -auth ~/.Xauthority -S -shadow $SHADOW_DESKTOP -shadowmode $SHADOW_MODE -geometry ${X2GO_GEOMETRY} -name "X2GO-${SESSION_NAME}" ${NX_AGENT} 2>${SESSION_DIR}/session.log &
else
- LD_LIBRARY_PATH=$X2GO_LIB x2goagent $X2GODPIOPTION_ $XDMCPOPT -$SESSION_TYPE -auth ~/.Xauthority \
- -geometry ${X2GO_GEOMETRY} -name "X2GO-${SESSION_NAME}" ${NX_AGENT} 2>${SESSION_DIR}/session.log &
+ LD_LIBRARY_PATH=$X2GO_LIB x2goagent $X2GODPIOPTION_ $XDMCPOPT -$SESSION_TYPE -auth ~/.Xauthority -geometry ${X2GO_GEOMETRY} -name "X2GO-${SESSION_NAME}" ${NX_AGENT} 2>${SESSION_DIR}/session.log &
fi
X2GO_AGENT_PID=$!
diff --git a/x2goserver/bin/x2goumount-session b/x2goserver/bin/x2goumount-session
index 92228a6..c673ad0 100755
--- a/x2goserver/bin/x2goumount-session
+++ b/x2goserver/bin/x2goumount-session
@@ -34,12 +34,12 @@ my $only_path=shift;
my $uname=$ENV{'USER'};
my $serv=hostname;
-if($only_path)
+if ($only_path)
{
- $only_path=~s/\/ramdrive\/mnt\///;
- $only_path=~ s/\//_/g;
- my $end="_media";
- $only_path="$ENV{'HOME'}/media/$only_path";
+ $only_path=~s/\/ramdrive\/mnt\///;
+ $only_path=~ s/\//_/g;
+ my $end="_media";
+ $only_path="$ENV{'HOME'}/media/$only_path";
}
@@ -55,82 +55,80 @@ close(F);
my $use_zenity=0;
-if($ENV{'GNOME_DESKTOP_SESSION_ID'} ne "")
+if ($ENV{'GNOME_DESKTOP_SESSION_ID'} ne "")
{
- $use_zenity=1;
+ $use_zenity=1;
}
-for($i=0;$i<@outp;$i++)
+for ($i=0;$i<@outp;$i++)
{
- @outp[$i]=~s/ //g;
- chomp(@outp[$i]);
- chomp(@outp[$i]);
- chomp(@outp[$i]);
- my @line=split('\|',"@outp[$i]");
- my $path="@line[0]:@line[1]";
- if($only_path)
- {
- if (@line[1] ne $only_path)
- {
- goto cont;
- }
- }
- my $j;
- my $found=0;
- my $remote;
- for($j;$j<@mounts;$j++)
- {
- if(@mounts[$j]=~m/sshfs/ && @mounts[$j]=~m/@line[0]/ && @mounts[$j]=~m/@line[1]/ )
- {
- $found=1;
- $remote=(split(" ", at mounts[$j]))[0];
- goto break;
- }
- }
-break:
- if($found)
- {
- if(system( "fusermount -u @line[1]" ) == 0)
- {
- $found=0;
- }
- else
- {
- $ENV{'DISPLAY'}=":$display";
- if($use_zenity == 0)
- {
- system("kdialog --error \"@line[1]\"&");
- }
- else
- {
- system("zenity --error --text \"@line[1]\"&");
- }
- }
- }
- if(! $found)
- {
- $remote=~s/\//_/g;
- $remote=(split(":","$remote"))[1];
- $remote="$ENV{'HOME'}/Desktop/$remote";
- if( -e "$remote(sshfs-disk)")
+ @outp[$i]=~s/ //g;
+ chomp(@outp[$i]);
+ chomp(@outp[$i]);
+ chomp(@outp[$i]);
+ my @line=split('\|',"@outp[$i]");
+ my $path="@line[0]:@line[1]";
+ if ($only_path)
+ {
+ if (@line[1] ne $only_path)
+ {
+ goto cont;
+ }
+ }
+ my $j;
+ my $found=0;
+ my $remote;
+ for ($j;$j<@mounts;$j++)
{
- unlink("$remote(sshfs-disk)");
+ if (@mounts[$j]=~m/sshfs/ && @mounts[$j]=~m/@line[0]/ && @mounts[$j]=~m/@line[1]/ )
+ {
+ $found=1;
+ $remote=(split(" ", at mounts[$j]))[0];
+ goto break;
+ }
}
-
- $remote=~s/%2framdrive%2fmnt%2f//;
- if( -e "$remote(sshfs-removable)")
+break:
+ if ($found)
{
- unlink("$remote(sshfs-removable)");
+ if (system( "fusermount -u @line[1]" ) == 0)
+ {
+ $found=0;
+ }
+ else
+ {
+ $ENV{'DISPLAY'}=":$display";
+ if ($use_zenity == 0)
+ {
+ system("kdialog --error \"@line[1]\"&");
+ }
+ else
+ {
+ system("zenity --error --text \"@line[1]\"&");
+ }
+ }
}
- if( -e "$remote(sshfs-cdrom)")
+ if (! $found)
{
- unlink("$remote(sshfs-cdrom)");
+ $remote=~s/\//_/g;
+ $remote=(split(":","$remote"))[1];
+ $remote="$ENV{'HOME'}/Desktop/$remote";
+ if ( -e "$remote(sshfs-disk)")
+ {
+ unlink("$remote(sshfs-disk)");
+ }
+ $remote=~s/%2framdrive%2fmnt%2f//;
+ if ( -e "$remote(sshfs-removable)")
+ {
+ unlink("$remote(sshfs-removable)");
+ }
+ if ( -e "$remote(sshfs-cdrom)")
+ {
+ unlink("$remote(sshfs-cdrom)");
+ }
+ db_deletemount ($session, @line[1]);
+ rmdir (@line[1]);
}
- #print "$session \"@line[1]\"\n";
- db_deletemount ($session, @line[1]);
- rmdir (@line[1]);
- }
-cont:
+cont:
}
diff --git a/x2goserver/lib/x2godbwrapper.pm b/x2goserver/lib/x2godbwrapper.pm
index be84bc8..b30185b 100644
--- a/x2goserver/lib/x2godbwrapper.pm
+++ b/x2goserver/lib/x2godbwrapper.pm
@@ -21,8 +21,8 @@
package x2godbwrapper;
use strict;
-use Config::Simple;
-use DBI;
+use Config::Simple;
+use DBI;
use POSIX;
@@ -39,285 +39,274 @@ my $dbpass;
my $dbuser;
my $sslmode;
-if($backend ne 'postgres' && $backend ne 'sqlite')
+if ($backend ne 'postgres' && $backend ne 'sqlite')
{
- die "unknown backend $backend";
+ die "unknown backend $backend";
}
-if($backend eq 'postgres')
+if ($backend eq 'postgres')
{
- $host=$Config->param("postgres.host");
- $port=$Config->param("postgres.port");
- if(!$host)
- {
- $host='localhost';
- }
- if(!$port)
- {
- $port='5432';
- }
- my $passfile;
- if($uname eq 'root')
- {
- $dbuser='x2godbuser';
- $passfile="/etc/x2go/x2gosql/passwords/x2goadmin";
- }
- else
- {
- $dbuser="x2gouser_$uname";
- $passfile="$homedir/.x2go/sqlpass";
- }
- $sslmode=$Config->param("postgres.ssl");
- if(!$sslmode)
- {
- $sslmode="prefer";
- }
- open (FL,"< $passfile") or die "Can't read password file $passfile<br><b>Use x2godbadmin on server to configure database access for user $uname</b><br>";
- $dbpass=<FL>;
- close(FL);
- chomp($dbpass);
+ $host=$Config->param("postgres.host");
+ $port=$Config->param("postgres.port");
+ if (!$host)
+ {
+ $host='localhost';
+ }
+ if (!$port)
+ {
+ $port='5432';
+ }
+ my $passfile;
+ if ($uname eq 'root')
+ {
+ $dbuser='x2godbuser';
+ $passfile="/etc/x2go/x2gosql/passwords/x2goadmin";
+ }
+ else
+ {
+ $dbuser="x2gouser_$uname";
+ $passfile="$homedir/.x2go/sqlpass";
+ }
+ $sslmode=$Config->param("postgres.ssl");
+ if (!$sslmode)
+ {
+ $sslmode="prefer";
+ }
+ open (FL,"< $passfile") or die "Can't read password file $passfile<br><b>Use x2godbadmin on server to configure database access for user $uname</b><br>";
+ $dbpass=<FL>;
+ close(FL);
+ chomp($dbpass);
}
use base 'Exporter';
our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers', 'db_getagent', 'db_resume', 'db_changestatus',
- 'db_getdisplays', 'db_insertsession', 'db_getports', 'db_insertport', 'db_createsession', 'db_insertmount',
- 'db_getmounts', 'db_deletemount', 'db_getdisplay', 'dbsys_getmounts', 'dbsys_listsessionsroot',
- 'dbsys_listsessionsroot_all', 'dbsys_rmsessionsroot');
+ 'db_getdisplays', 'db_insertsession', 'db_getports', 'db_insertport', 'db_createsession', 'db_insertmount',
+ 'db_getmounts', 'db_deletemount', 'db_getdisplay', 'dbsys_getmounts', 'dbsys_listsessionsroot',
+ 'dbsys_listsessionsroot_all', 'dbsys_rmsessionsroot');
-
-
-
-
sub dbsys_rmsessionsroot
{
- my $sid=shift or die "argument \"session_id\" missed";
- if($backend eq 'postgres')
- {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode",
- "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
-
- my $sth=$dbh->prepare("delete from sessions where session_id='$sid'");
- $sth->execute()or die;
- }
- if($backend eq 'sqlite')
- {
- `x2gosqlitewrapper rmsessionsroot $sid`;
- }
+ my $sid=shift or die "argument \"session_id\" missed";
+ if($backend eq 'postgres')
+ {
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode",
+ "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+
+ my $sth=$dbh->prepare("delete from sessions where session_id='$sid'");
+ $sth->execute() or die;
+ }
+ if($backend eq 'sqlite')
+ {
+ `x2gosqlitewrapper rmsessionsroot $sid`;
+ }
}
sub dbsys_listsessionsroot
{
- my $server=shift or die "argument \"server\" missed";
- if($backend eq 'postgres')
- {
- my @strings;
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode",
- "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
-
- my $sth=$dbh->prepare("select agent_pid, session_id, display, server, status,
- to_char(init_time,'DD.MM.YY*HH24:MI:SS'),cookie,client,gr_port,
- sound_port,to_char(last_time,'DD.MM.YY*HH24:MI:SS'),uname,
- to_char(now()-init_time,'SSSS'),fs_port from sessions
- where server='$server' order by status desc");
- $sth->execute()or die;
- my @data;
- my $i=0;
- while (@data = $sth->fetchrow_array)
- {
- @strings[$i++]=join('|', at data);
- }
- $sth->finish();
- $dbh->disconnect();
- return @strings;
- }
- if($backend eq 'sqlite')
- {
- return split("\n",`x2gosqlitewrapper listsessionsroot $server`);
- }
+ my $server=shift or die "argument \"server\" missed";
+ if ($backend eq 'postgres')
+ {
+ my @strings;
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode",
+ "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+
+ my $sth=$dbh->prepare("select agent_pid, session_id, display, server, status,
+ to_char(init_time,'DD.MM.YY*HH24:MI:SS'),cookie,client,gr_port,
+ sound_port,to_char(last_time,'DD.MM.YY*HH24:MI:SS'),uname,
+ to_char(now()-init_time,'SSSS'),fs_port from sessions
+ where server='$server' order by status desc");
+ $sth->execute()or die;
+ my @data;
+ my $i=0;
+ while (@data = $sth->fetchrow_array)
+ {
+ @strings[$i++]=join('|', at data);
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ return @strings;
+ }
+ if($backend eq 'sqlite')
+ {
+ return split("\n",`x2gosqlitewrapper listsessionsroot $server`);
+ }
}
sub dbsys_listsessionsroot_all
{
- if($backend eq 'postgres')
- {
- my @strings;
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
-
- my $sth=$dbh->prepare("select agent_pid, session_id, display, server, status,
- to_char(init_time,'DD.MM.YY*HH24:MI:SS'),cookie,client,gr_port,
- sound_port,to_char(last_time,'DD.MM.YY*HH24:MI:SS'),uname,
- to_char(now()-init_time,'SSSS'),fs_port from sessions
- order by status desc");
- $sth->execute()or die;
- my @data;
- my $i=0;
- while (@data = $sth->fetchrow_array)
- {
- @strings[$i++]=join('|', at data);
- }
- $sth->finish();
- $dbh->disconnect();
- return @strings;
- }
- if($backend eq 'sqlite')
- {
- return split("\n",`x2gosqlitewrapper listsessionsroot_all`);
- }
+ if ($backend eq 'postgres')
+ {
+ my @strings;
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $;
+ my $sth=$dbh->prepare("select agent_pid, session_id, display, server, status,
+ to_char(init_time,'DD.MM.YY*HH24:MI:SS'),cookie,client,gr_port,
+ sound_port,to_char(last_time,'DD.MM.YY*HH24:MI:SS'),uname,
+ to_char(now()-init_time,'SSSS'),fs_port from sessions
+ order by status desc");
+ $sth->execute()or die;
+ my @data;
+ my $i=0;
+ while (@data = $sth->fetchrow_array)
+ {
+ @strings[$i++]=join('|', at data);
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ return @strings;
+ }
+ if ($backend eq 'sqlite')
+ {
+ return split("\n",`x2gosqlitewrapper listsessionsroot_all`);
+ }
}
-
sub dbsys_getmounts
{
- my $sid=shift or die "argument \"session_id\" missed";
- if($backend eq 'postgres')
- {
- my @strings;
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("select client, path from mounts where session_id='$sid'");
- $sth->execute()or die;
- my @data;
- my $i=0;
- while (@data = $sth->fetchrow_array)
- {
- @strings[$i++]=join("|", at data);
- }
- $sth->finish();
- $dbh->disconnect();
- return @strings;
- }
- if($backend eq 'sqlite')
- {
- return split("\n",`x2gosqlitewrapper getmounts $sid`);
- }
-
+ my $sid=shift or die "argument \"session_id\" missed";
+ if ($backend eq 'postgres')
+ {
+ my @strings;
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("select client, path from mounts where session_id='$sid'");
+ $sth->execute()or die;
+ my @data;
+ my $i=0;
+ while (@data = $sth->fetchrow_array)
+ {
+ @strings[$i++]=join("|", at data);
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ return @strings;
+ }
+ if ($backend eq 'sqlite')
+ {
+ return split("\n",`x2gosqlitewrapper getmounts $sid`);
+ }
}
sub db_getmounts
{
- my $sid=shift or die "argument \"session_id\" missed";
- if($backend eq 'postgres')
- {
- my @strings;
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("select client, path from mounts_view where session_id='$sid'");
- $sth->execute()or die;
- my @data;
- my $i=0;
- while (@data = $sth->fetchrow_array)
- {
- @strings[$i++]=join("|", at data);
- }
- $sth->finish();
- $dbh->disconnect();
- return @strings;
- }
- if($backend eq 'sqlite')
- {
- return split("\n",`x2gosqlitewrapper getmounts $sid`);
- }
+ my $sid=shift or die "argument \"session_id\" missed";
+ if($backend eq 'postgres')
+ {
+ my @strings;
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("select client, path from mounts_view where session_id='$sid'");
+ $sth->execute()or die;
+ my @data;
+ my $i=0;
+ while (@data = $sth->fetchrow_array)
+ {
+ @strings[$i++]=join("|", at data);
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ return @strings;
+ }
+ if ($backend eq 'sqlite')
+ {
+ return split("\n",`x2gosqlitewrapper getmounts $sid`);
+ }
}
-
+
sub db_deletemount
{
- my $sid=shift or die "argument \"session_id\" missed";
- my $path=shift or die "argument \"path\" missed";
- if($backend eq 'postgres')
- {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("delete from mounts_view where session_id='$sid' and path='$path'");
- $sth->execute();
- $sth->finish();
- $dbh->disconnect();
- }
- if($backend eq 'sqlite')
- {
- `x2gosqlitewrapper deletemount $sid \"$path\"`;
- }
-
+ my $sid=shift or die "argument \"session_id\" missed";
+ my $path=shift or die "argument \"path\" missed";
+ if ($backend eq 'postgres')
+ {
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("delete from mounts_view where session_id='$sid' and path='$path'");
+ $sth->execute();
+ $sth->finish();
+ $dbh->disconnect();
+ }
+ if ($backend eq 'sqlite')
+ {
+ `x2gosqlitewrapper deletemount $sid \"$path\"`;
+ }
}
sub db_insertmount
{
- my $sid=shift or die "argument \"session_id\" missed";
- my $path=shift or die "argument \"path\" missed";
- my $client=shift or die "argument \"client\" missed";
- my $res_ok=1;
- if($backend eq 'postgres')
- {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("insert into mounts (session_id,path,client) values ('$sid','$path','$client')");
- $sth->execute();
- if(!$sth->err())
- {
- $res_ok=1;
- }
- $sth->finish();
- $dbh->disconnect();
- }
- if($backend eq 'sqlite')
- {
- if( `x2gosqlitewrapper insertmount $sid \"$path\" $client` eq "ok")
- {
- $res_ok=1;
- }
- }
- return $res_ok;
+ my $sid=shift or die "argument \"session_id\" missed";
+ my $path=shift or die "argument \"path\" missed";
+ my $client=shift or die "argument \"client\" missed";
+ my $res_ok=1;
+ if ($backend eq 'postgres')
+ {
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("insert into mounts (session_id,path,client) values ('$sid','$path','$client')");
+ $sth->execute();
+ if (!$sth->err())
+ {
+ $res_ok=1;
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ }
+ if ($backend eq 'sqlite')
+ {
+ if( `x2gosqlitewrapper insertmount $sid \"$path\" $client` eq "ok")
+ {
+ $res_ok=1;
+ }
+ }
+ return $res_ok;
}
-
sub db_insertsession
{
my $display=shift or die "argument \"display\" missed";
my $server=shift or die "argument \"server\" missed";
- my $sid=shift or die "argument \"session_id\" missed";
- if($backend eq 'postgres')
- {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("insert into sessions (display,server,uname,session_id) values ('$display','$server','$uname','$sid')");
- $sth->execute()or die $_;
- $sth->finish();
- $dbh->disconnect();
- }
- if($backend eq 'sqlite')
- {
- my $err=`x2gosqlitewrapper insertsession $display $server $sid`;
- if($err ne "ok")
- {
- die "$err: x2gosqlitewrapper insertsession $display $server $sid";
- }
- }
-
+ my $sid=shift or die "argument \"session_id\" missed";
+ if ($backend eq 'postgres')
+ {
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("insert into sessions (display,server,uname,session_id) values ('$display','$server','$uname','$sid')");
+ $sth->execute()or die $_;
+ $sth->finish();
+ $dbh->disconnect();
+ }
+ if ($backend eq 'sqlite')
+ {
+ my $err=`x2gosqlitewrapper insertsession $display $server $sid`;
+ if ($err ne "ok")
+ {
+ die "$err: x2gosqlitewrapper insertsession $display $server $sid";
+ }
+ }
}
sub db_createsession
{
- my $cookie=shift or die"argument \"cookie\" missed";
- my $pid=shift or die"argument \"pid\" missed";
- my $client=shift or die"argument \"client\" missed";
- my $gr_port=shift or die"argument \"gr_port\" missed";
- my $snd_port=shift or die"argument \"snd_port\" missed";
- my $fs_port=shift or die"argument \"fs_port\" missed";
- my $sid=shift or die "argument \"session_id\" missed";
- if($backend eq 'postgres')
- {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("update sessions_view set status='R',last_time=now(),
- cookie='$cookie',agent_pid='$pid',client='$client',gr_port='$gr_port',
- sound_port='$snd_port',fs_port='$fs_port' where session_id='$sid'");
- $sth->execute()or die;
- $sth->finish();
- $dbh->disconnect();
- }
- if($backend eq 'sqlite')
- {
- my $err= `x2gosqlitewrapper createsession $cookie $pid $client $gr_port $snd_port $fs_port $sid`;
- if($err ne "ok")
- {
- die $err;
- }
- }
-
+ my $cookie=shift or die"argument \"cookie\" missed";
+ my $pid=shift or die"argument \"pid\" missed";
+ my $client=shift or die"argument \"client\" missed";
+ my $gr_port=shift or die"argument \"gr_port\" missed";
+ my $snd_port=shift or die"argument \"snd_port\" missed";
+ my $fs_port=shift or die"argument \"fs_port\" missed";
+ my $sid=shift or die "argument \"session_id\" missed";
+ if ($backend eq 'postgres')
+ {
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("update sessions_view set status='R',last_time=now(),
+ cookie='$cookie',agent_pid='$pid',client='$client',gr_port='$gr_port',
+ sound_port='$snd_port',fs_port='$fs_port' where session_id='$sid'");
+ $sth->execute()or die;
+ $sth->finish();
+ $dbh->disconnect();
+ }
+ if ($backend eq 'sqlite')
+ {
+ my $err= `x2gosqlitewrapper createsession $cookie $pid $client $gr_port $snd_port $fs_port $sid`;
+ if ($err ne "ok")
+ {
+ die $err;
+ }
+ }
}
sub db_insertport
@@ -325,252 +314,239 @@ sub db_insertport
my $server=shift or die "argument \"server\" missed";
my $sid=shift or die "argument \"session_id\" missed";
my $sshport=shift or die "argument \"port\" missed";
- if($backend eq 'postgres')
- {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("insert into used_ports (server,session_id,port) values ('$server','$sid','$sshport')");
- $sth->execute()or die;
- $sth->finish();
- $dbh->disconnect();
- }
- if($backend eq 'sqlite')
- {
- `x2gosqlitewrapper insertport $server $sid $sshport`;
- }
-
+ if ($backend eq 'postgres')
+ {
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("insert into used_ports (server,session_id,port) values ('$server','$sid','$sshport')");
+ $sth->execute()or die;
+ $sth->finish();
+ $dbh->disconnect();
+ }
+ if ($backend eq 'sqlite')
+ {
+ `x2gosqlitewrapper insertport $server $sid $sshport`;
+ }
}
-
sub db_resume
{
- my $client=shift or die "argument \"client\" missed";
- my $sid=shift or die "argument \"session_id\" missed";
- if($backend eq 'postgres')
- {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("update sessions_view set last_time=now(),status='R',client='$client' where session_id = '$sid'");
- $sth->execute()or die;
- $sth->finish();
- $dbh->disconnect();
- }
- if($backend eq 'sqlite')
- {
- `x2gosqlitewrapper resume $client $sid`;
- }
-
+ my $client=shift or die "argument \"client\" missed";
+ my $sid=shift or die "argument \"session_id\" missed";
+ if ($backend eq 'postgres')
+ {
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("update sessions_view set last_time=now(),status='R',client='$client' where session_id = '$sid'");
+ $sth->execute()or die;
+ $sth->finish();
+ $dbh->disconnect();
+ }
+ if ($backend eq 'sqlite')
+ {
+ `x2gosqlitewrapper resume $client $sid`;
+ }
}
sub db_changestatus
{
- my $status=shift or die "argument \"status\" missed";
- my $sid=shift or die "argument \"session_id\" missed";
- if($backend eq 'postgres')
- {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("update sessions_view set last_time=now(),status='$status' where session_id = '$sid'");
- $sth->execute()or die;
- $sth->finish();
- $dbh->disconnect();
- }
- if($backend eq 'sqlite')
- {
- `x2gosqlitewrapper changestatus $status $sid`;
- }
-
+ my $status=shift or die "argument \"status\" missed";
+ my $sid=shift or die "argument \"session_id\" missed";
+ if ($backend eq 'postgres')
+ {
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("update sessions_view set last_time=now(),status='$status' where session_id = '$sid'");
+ $sth->execute()or die;
+ $sth->finish();
+ $dbh->disconnect();
+ }
+ if ($backend eq 'sqlite')
+ {
+ `x2gosqlitewrapper changestatus $status $sid`;
+ }
}
sub db_getdisplays
{
- #ignore $server
- my $server=shift or die "argument \"server\" missed";
- if($backend eq 'postgres')
- {
- my @strings;
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("select display from servers_view");
- $sth->execute()or die;
- my @data;
- my $i=0;
- while (@data = $sth->fetchrow_array)
- {
- @strings[$i++]='|'. at data[0].'|';
- }
- $sth->finish();
- $dbh->disconnect();
- return @strings;
- }
- if($backend eq 'sqlite')
- {
- return split("\n",`x2gosqlitewrapper getdisplays $server`);
- }
-
+ #ignore $server
+ my $server=shift or die "argument \"server\" missed";
+ if ($backend eq 'postgres')
+ {
+ my @strings;
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("select display from servers_view");
+ $sth->execute()or die;
+ my @data;
+ my $i=0;
+ while (@data = $sth->fetchrow_array)
+ {
+ @strings[$i++]='|'. at data[0].'|';
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ return @strings;
+ }
+ if ($backend eq 'sqlite')
+ {
+ return split("\n",`x2gosqlitewrapper getdisplays $server`);
+ }
}
sub db_getports
{
- #ignore $server
- my $server=shift or die "argument \"server\" missed";
- if($backend eq 'postgres')
- {
- my @strings;
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("select port from ports_view");
- $sth->execute()or die;
- my @data;
- my $i=0;
- while (@data = $sth->fetchrow_array)
- {
- @strings[$i++]='|'. at data[0].'|';
- }
- $sth->finish();
- $dbh->disconnect();
- return @strings;
- }
- if($backend eq 'sqlite')
- {
- return split("\n",`x2gosqlitewrapper getports $server`);
- }
-
+ #ignore $server
+ my $server=shift or die "argument \"server\" missed";
+ if ($backend eq 'postgres')
+ {
+ my @strings;
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("select port from ports_view");
+ $sth->execute()or die;
+ my @data;
+ my $i=0;
+ while (@data = $sth->fetchrow_array)
+ {
+ @strings[$i++]='|'. at data[0].'|';
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ return @strings;
+ }
+ if ($backend eq 'sqlite')
+ {
+ return split("\n",`x2gosqlitewrapper getports $server`);
+ }
}
sub db_getservers
{
- if($backend eq 'postgres')
- {
- my @strings;
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
-
- my $sth=$dbh->prepare("select server,count(*) from servers_view where status != 'F' group by server");
- $sth->execute()or die;
- my @data;
- my $i=0;
- while (@data = $sth->fetchrow_array)
- {
- @strings[$i++]=@data[0]." ". at data[1];
- }
- $sth->finish();
- $dbh->disconnect();
- return @strings;
- }
- if($backend eq 'sqlite')
- {
- return split("\n",`x2gosqlitewrapper getservers`);
- }
-
+ if ($backend eq 'postgres')
+ {
+ my @strings;
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("select server,count(*) from servers_view where status != 'F' group by server");
+ $sth->execute()or die;
+ my @data;
+ my $i=0;
+ while (@data = $sth->fetchrow_array)
+ {
+ @strings[$i++]=@data[0]." ". at data[1];
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ return @strings;
+ }
+ if ($backend eq 'sqlite')
+ {
+ return split("\n",`x2gosqlitewrapper getservers`);
+ }
}
sub db_getagent
{
- my $sid=shift or die "argument \"session_id\" missed";
- my $agent;
- if($backend eq 'postgres')
- {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
-
- my $sth=$dbh->prepare("select agent_pid from sessions_view
- where session_id ='$sid'");
- $sth->execute()or die;
- my @data;
- my $i=0;
- if(@data = $sth->fetchrow_array)
- {
- $agent=@data[0];
- }
- $sth->finish();
- $dbh->disconnect();
- }
- if($backend eq 'sqlite')
- {
- $agent=`x2gosqlitewrapper getagent $sid`;
- }
- return $agent;
+ my $sid=shift or die "argument \"session_id\" missed";
+ my $agent;
+ if ($backend eq 'postgres')
+ {
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("select agent_pid from sessions_view
+ where session_id ='$sid'");
+ $sth->execute()or die;
+ my @data;
+ my $i=0;
+ if (@data = $sth->fetchrow_array)
+ {
+ $agent=@data[0];
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ }
+ if($backend eq 'sqlite')
+ {
+ $agent=`x2gosqlitewrapper getagent $sid`;
+ }
+ return $agent;
}
sub db_getdisplay
{
- my $sid=shift or die "argument \"session_id\" missed";
- my $display;
- if($backend eq 'postgres')
- {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
-
- my $sth=$dbh->prepare("select display from sessions_view
- where session_id ='$sid'");
- $sth->execute()or die;
- my @data;
- my $i=0;
- if(@data = $sth->fetchrow_array)
- {
- $display=@data[0];
- }
- $sth->finish();
- $dbh->disconnect();
- }
- if($backend eq 'sqlite')
- {
- $display=`x2gosqlitewrapper getdisplay $sid`;
- }
- return $display;
+ my $sid=shift or die "argument \"session_id\" missed";
+ my $display;
+ if ($backend eq 'postgres')
+ {
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("select display from sessions_view
+ where session_id ='$sid'");
+ $sth->execute() or die;
+ my @data;
+ my $i=0;
+ if (@data = $sth->fetchrow_array)
+ {
+ $display=@data[0];
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ }
+ if ($backend eq 'sqlite')
+ {
+ $display=`x2gosqlitewrapper getdisplay $sid`;
+ }
+ return $display;
}
+
sub db_listsessions
{
- my $server=shift or die "argument \"server\" missed";
- if($backend eq 'postgres')
- {
- my @strings;
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
-
- my $sth=$dbh->prepare("select agent_pid, session_id, display, server, status,
- to_char(init_time,'DD.MM.YY*HH24:MI:SS'), cookie, client, gr_port,
- sound_port, to_char( last_time, 'DD.MM.YY*HH24:MI:SS'), uname,
- to_char(now()- init_time,'SSSS'), fs_port from sessions_view
- where status !='F' and server='$server' and
- ( session_id not like '%XSHAD%') order by status desc");
- $sth->execute()or die;
- my @data;
- my $i=0;
- while (@data = $sth->fetchrow_array)
- {
- @strings[$i++]=join('|', at data);
- }
- $sth->finish();
- $dbh->disconnect();
- return @strings;
- }
- if($backend eq 'sqlite')
- {
- return split("\n",`x2gosqlitewrapper listsessions $server`);
- }
-
+ my $server=shift or die "argument \"server\" missed";
+ if ($backend eq 'postgres')
+ {
+ my @strings;
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("select agent_pid, session_id, display, server, status,
+ to_char(init_time,'DD.MM.YY*HH24:MI:SS'), cookie, client, gr_port,
+ sound_port, to_char( last_time, 'DD.MM.YY*HH24:MI:SS'), uname,
+ to_char(now()- init_time,'SSSS'), fs_port from sessions_view
+ where status !='F' and server='$server' and
+ (session_id not like '%XSHAD%') order by status desc");
+ $sth->execute() or die;
+ my @data;
+ my $i=0;
+ while (@data = $sth->fetchrow_array)
+ {
+ @strings[$i++]=join('|', at data);
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ return @strings;
+ }
+ if ($backend eq 'sqlite')
+ {
+ return split("\n",`x2gosqlitewrapper listsessions $server`);
+ }
}
sub db_listsessions_all
{
- if($backend eq 'postgres')
- {
- my @strings;
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
-
- my $sth=$dbh->prepare("select agent_pid, session_id, display, server, status,
- to_char(init_time,'DD.MM.YY*HH24:MI:SS'), cookie, client, gr_port,
- sound_port, to_char( last_time, 'DD.MM.YY*HH24:MI:SS'), uname,
- to_char(now()- init_time,'SSSS'), fs_port from sessions_view
- where status !='F' and
- ( session_id not like '%XSHAD%') order by status desc");
- $sth->execute()or die;
- my @data;
- my $i=0;
- while (@data = $sth->fetchrow_array)
- {
- @strings[$i++]=join('|', at data);
- }
- $sth->finish();
- $dbh->disconnect();
- return @strings;
- }
- if($backend eq 'sqlite')
- {
- return split("\n",`x2gosqlitewrapper listsessions_all`);
- }
-
+ if($backend eq 'postgres')
+ {
+ my @strings;
+ my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+ my $sth=$dbh->prepare("select agent_pid, session_id, display, server, status,
+ to_char(init_time,'DD.MM.YY*HH24:MI:SS'), cookie, client, gr_port,
+ sound_port, to_char( last_time, 'DD.MM.YY*HH24:MI:SS'), uname,
+ to_char(now()- init_time,'SSSS'), fs_port from sessions_view
+ where status !='F' and
+ (session_id not like '%XSHAD%') order by status desc");
+ $sth->execute()or die;
+ my @data;
+ my $i=0;
+ while (@data = $sth->fetchrow_array)
+ {
+ @strings[$i++]=join('|', at data);
+ }
+ $sth->finish();
+ $dbh->disconnect();
+ return @strings;
+ }
+ if ($backend eq 'sqlite')
+ {
+ return split("\n",`x2gosqlitewrapper listsessions_all`);
+ }
}
diff --git a/x2goserver/lib/x2golistsessions_root b/x2goserver/lib/x2golistsessions_root
index daf7a79..1e60493 100755
--- a/x2goserver/lib/x2golistsessions_root
+++ b/x2goserver/lib/x2golistsessions_root
@@ -23,27 +23,25 @@
use Sys::Hostname;
use strict;
-
sub check_stat
{
- my $sess=shift;
- my $user=shift;
- my $log="~$user/.x2go/C-$sess/session.log";
- my $text=`tail -1 $log`;
- if($text =~ m/Session suspended/)
- {
- return 0;
- }
- return 1;
+ my $sess=shift;
+ my $user=shift;
+ my $log="~$user/.x2go/C-$sess/session.log";
+ my $text=`tail -1 $log`;
+ if ($text =~ m/Session suspended/)
+ {
+ return 0;
+ }
+ return 1;
}
-
my $uname;
my $serv=shift;
-if( ! $serv)
+if ( ! $serv)
{
- $serv=hostname;
+ $serv=hostname;
}
my $outp=`x2golistsessions_sql $serv 2>/dev/null`;
@@ -51,23 +49,23 @@ my $outp=`x2golistsessions_sql $serv 2>/dev/null`;
my @outp=split("\n","$outp");
-for(my $i=0;$i<@outp;$i++)
+for (my $i=0;$i<@outp;$i++)
{
- my @sinfo=split('\\|',"@outp[$i]");
- if(@sinfo[4]eq 'F')
- {
- print "@outp[$i]\n";
- }
- else
- {
- if(@sinfo[4]eq 'R')
- {
- if(!check_stat(@sinfo[1], at sinfo[11]))
- {
- system("su - @sinfo[11] -c \"x2gochangestatus 'S' @sinfo[1]\" > /dev/null");
- @outp[$i] =~ s/\|R\|/\|S\|/;
- }
- }
- print "@outp[$i]\n";
- }
+ my @sinfo=split('\\|',"@outp[$i]");
+ if (@sinfo[4]eq 'F')
+ {
+ print "@outp[$i]\n";
+ }
+ else
+ {
+ if (@sinfo[4]eq 'R')
+ {
+ if (!check_stat(@sinfo[1], at sinfo[11]))
+ {
+ system("su - @sinfo[11] -c \"x2gochangestatus 'S' @sinfo[1]\" > /dev/null");
+ @outp[$i] =~ s/\|R\|/\|S\|/;
+ }
+ }
+ print "@outp[$i]\n";
+ }
}
diff --git a/x2goserver/lib/x2golistsessions_sql b/x2goserver/lib/x2golistsessions_sql
index 4f1abdc..ffaa3c6 100755
--- a/x2goserver/lib/x2golistsessions_sql
+++ b/x2goserver/lib/x2golistsessions_sql
@@ -25,25 +25,23 @@ use strict;
use lib "/usr/lib/x2go";
use x2godbwrapper;
-
-
my $serv=shift;
my @array;
if($serv eq "--all-servers")
{
- @array=dbsys_listsessionsroot_all();
+ @array=dbsys_listsessionsroot_all();
}
else
{
- @array=dbsys_listsessionsroot ($serv);
+ @array=dbsys_listsessionsroot ($serv);
}
my $i;
for ( $i=0;$i<@array;$i++)
{
- my @ln=split('\|', at array[$i]);
- if(@ln[4] eq "F")
- {
- dbsys_rmsessionsroot( @ln[1]);
- }
- print "@array[$i]\n";
+ my @ln=split('\|', at array[$i]);
+ if (@ln[4] eq "F")
+ {
+ dbsys_rmsessionsroot( @ln[1]);
+ }
+ print "@array[$i]\n";
}
diff --git a/x2goserver/lib/x2gosessionlimit b/x2goserver/lib/x2gosessionlimit
index 36b275c..3878c82 100755
--- a/x2goserver/lib/x2gosessionlimit
+++ b/x2goserver/lib/x2gosessionlimit
@@ -29,20 +29,20 @@ $Config->read('/etc/x2go/x2goserver.conf' );
sub getGroupLimit
{
- my $group=shift;
- my $strlimit=$Config->param("limit groups.$group");
- if($strlimit ne "")
- {
- if($strlimit == 0)
- {
- print "0\n";
- exit 0;
- }
- if($strlimit > $maxlimit)
- {
- $maxlimit=$strlimit;
- }
- }
+ my $group=shift;
+ my $strlimit=$Config->param("limit groups.$group");
+ if ($strlimit ne "")
+ {
+ if ($strlimit == 0)
+ {
+ print "0\n";
+ exit 0;
+ }
+ if ($strlimit > $maxlimit)
+ {
+ $maxlimit=$strlimit;
+ }
+ }
}
my $uname;
@@ -56,18 +56,18 @@ my $strlimit=$Config->param("limit users.$uname");
if($strlimit ne "")
{
- if($strlimit == 0)
- {
- print "0\n";
- exit 0;
- }
- if($strlimit <= $scount)
- {
- print "$strlimit\n";
- exit 0;
- }
- print "$strlimit\n";
- exit 0;
+ if ($strlimit == 0)
+ {
+ print "0\n";
+ exit 0;
+ }
+ if ($strlimit <= $scount)
+ {
+ print "$strlimit\n";
+ exit 0;
+ }
+ print "$strlimit\n";
+ exit 0;
}
@@ -75,23 +75,23 @@ my ($name, $pass, $uid, $pgid, $quota, $comment, $gcos, $dir, $shell, $expire) =
while (my ($name, $passwd, $gid, $members) = getgrent())
{
- if( $pgid eq $gid)
- {
- getGroupLimit $name;
- }
- my @memebers=split(" ",$members);
- foreach my $member (@memebers)
- {
- if($uname eq $member )
- {
- getGroupLimit $name;
- }
- }
+ if ( $pgid eq $gid)
+ {
+ getGroupLimit $name;
+ }
+ my @memebers=split(" ",$members);
+ foreach my $member (@memebers)
+ {
+ if ($uname eq $member )
+ {
+ getGroupLimit $name;
+ }
+ }
}
-if($maxlimit <= $scount)
+if ($maxlimit <= $scount)
{
- print "$maxlimit\n";
- exit 0;
+ print "$maxlimit\n";
+ exit 0;
}
print "$maxlimit\n";
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