This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch release/4.0.1.x in repository x2goserver. commit b2f033b72632500218c9d7e689b31c2a53cfcafb Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Oct 26 08:27:14 2017 +0200 x2goserver/{bin/x2golistshadowsessions,lib/x2go{dbwrapper.pm,sqlitewrapper.pl}}: backport listshadowsessions* DB functions and unmark them as FIXME entries. --- debian/changelog | 3 ++ x2goserver/bin/x2golistshadowsessions | 2 -- x2goserver/lib/x2godbwrapper.pm | 61 ++++++++++++++++++++++++++++++++++- x2goserver/lib/x2gosqlitewrapper.pl | 40 +++++++++++++++++++++++ 4 files changed, 103 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 57d615a..4d63a80 100644 --- a/debian/changelog +++ b/debian/changelog @@ -43,6 +43,9 @@ x2goserver (4.0.1.21-0x2go1) UNRELEASED; urgency=medium - x2goserver-xsession/etc/Xsession: add support for OS RT via /etc/os-rt-release (file needs to be created by upstream first, bug pending.) + - x2goserver/{bin/x2golistshadowsessions, + lib/x2go{dbwrapper.pm,sqlitewrapper.pl}}: backport listshadowsessions* + DB functions and unmark them as FIXME entries. * x2goserver.spec: - Add mandatory perl-generators Build-Requires as per https://fedoraproject.org/wiki/Changes/Build_Root_Without_Perl diff --git a/x2goserver/bin/x2golistshadowsessions b/x2goserver/bin/x2golistshadowsessions index 1382799..8a90833 100755 --- a/x2goserver/bin/x2golistshadowsessions +++ b/x2goserver/bin/x2golistshadowsessions @@ -89,12 +89,10 @@ if( ! $serv) my @outp; if($serv eq "--all-servers") { - # FIXME: this also needs a backport to work. @outp=db_listshadowsessions_all(); } else { - # FIXME: this also needs a backport to work. @outp=db_listshadowsessions($serv); } diff --git a/x2goserver/lib/x2godbwrapper.pm b/x2goserver/lib/x2godbwrapper.pm index e70bdad..7978e76 100644 --- a/x2goserver/lib/x2godbwrapper.pm +++ b/x2goserver/lib/x2godbwrapper.pm @@ -88,7 +88,7 @@ use base 'Exporter'; our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers', 'db_getagent', 'db_resume', 'db_changestatus', 'db_getstatus', 'db_getdisplays', 'db_insertsession', 'db_getports', 'db_insertport', 'db_rmport', 'db_createsession', 'db_insertmount', 'db_getmounts', 'db_deletemount', 'db_getdisplay', 'dbsys_getmounts', 'dbsys_listsessionsroot', - 'dbsys_listsessionsroot_all', 'dbsys_rmsessionsroot', 'dbsys_deletemounts'); + 'dbsys_listsessionsroot_all', 'dbsys_rmsessionsroot', 'dbsys_deletemounts', 'db_listshadowsessions', 'db_listshadowsessions_all'); sub dbsys_rmsessionsroot { @@ -674,3 +674,62 @@ sub db_listsessions_all return split("\n",`$x2go_lib_path/x2gosqlitewrapper listsessions_all`); } } + +sub db_listshadowsessions +{ + my $server=shift or die "argument \"server\" missed"; + if($backend eq 'postgres') + { + my @sessions; + 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,'YYYY-MM-DD\"T\"HH24:MI:SS'), cookie, client, gr_port, + sound_port, to_char( last_time, 'YYYY-MM-DD\"T\"HH24:MI:SS'), uname, + to_char(now()- init_time,'SSSS'), fs_port from sessions_view + where status !='F' and server='$server' and + (session_id like '%XSHAD%') order by status desc"); + $sth->execute() or die; + my @data; + my $i=0; + while (@data = $sth->fetchrow_array) + { + @sessions[$i++]=join('|',@data); + } + $sth->finish(); + undef $dbh; + return @sessions; + } + if ($backend eq 'sqlite') + { + return split("\n",`$x2go_lib_path/x2gosqlitewrapper listshadowsessions $server`); + } +} + +sub db_listshadowsessions_all +{ + if($backend eq 'postgres') + { + my @sessions; + 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,'YYYY-MM-DD\"T\"HH24:MI:SS'), cookie, client, gr_port, + sound_port, to_char( last_time, 'YYYY-MM-DD\"T\"HH24:MI:SS'), uname, + to_char(now()- init_time,'SSSS'), fs_port from sessions_view + where status !='F' and + (session_id is like '%XSHAD%') order by status desc"); + $sth->execute()or die; + my @data; + my $i=0; + while (@data = $sth->fetchrow_array) + { + @sessions[$i++]=join('|',@data); + } + $sth->finish(); + undef $dbh; + return @sessions; + } + if ($backend eq 'sqlite') + { + return split("\n",`$x2go_lib_path/x2gosqlitewrapper listshadowsessions_all`); + } +} diff --git a/x2goserver/lib/x2gosqlitewrapper.pl b/x2goserver/lib/x2gosqlitewrapper.pl index f8fd046..4604c6e 100755 --- a/x2goserver/lib/x2gosqlitewrapper.pl +++ b/x2goserver/lib/x2gosqlitewrapper.pl @@ -509,6 +509,46 @@ elsif($cmd eq "listsessions_all") } fetchrow_printall_array($sth); } + +elsif($cmd eq "listshadowsessions") +{ + my $server=shift or die "argument \"server\" missed"; + my @strings; + my $sth=$dbh->prepare("select agent_pid, session_id, display, server, status, + strftime('%Y-%m-%dT%H:%M:%S',init_time), + cookie,client,gr_port,sound_port, + strftime('%Y-%m-%dT%H:%M:%S',last_time), + uname, + strftime('%s','now','localtime') - strftime('%s',init_time),fs_port from sessions + where status !='F' and server=? and uname=? + and (session_id like '%XSHAD%') order by status desc"); + $sth->execute($server, $realuser); + if ($sth->err()) + { + syslog('error', "listshadowsessions (SQLite3 session db backend) failed with exitcode: $sth->err()"); + die(); + } + fetchrow_printall_array($sth); +} + +elsif($cmd eq "listshadowsessions_all") +{ + my @strings; + my $sth=$dbh->prepare("select agent_pid, session_id, display, server, status, + strftime('%Y-%m-%dT%H:%M:%S',init_time), + cookie,client,gr_port,sound_port, + strftime('%Y-%m-%dT%H:%M:%S',last_time), + uname, + strftime('%s','now','localtime') - strftime('%s',init_time),fs_port from sessions + where status !='F' and uname=? and (session_id like '%XSHAD%') order by status desc"); + $sth->execute($realuser); + if ($sth->err()) + { + syslog('error', "listshadowsessions_all (SQLite3 session db backend) failed with exitcode: $sth->err()"); + die(); + } + fetchrow_printall_array($sth); +} else { print "unknown command $cmd\n"; -- Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git