[X2Go-Commits] [x2goserver] 01/01: x2goserver/{bin/x2golistshadowsessions, lib/x2go{dbwrapper.pm, sqlitewrapper.pl}}: backport listshadowsessions* DB functions and unmark them as FIXME entries.

git-admin at x2go.org git-admin at x2go.org
Thu Oct 26 08:35:21 CEST 2017


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 at 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('|', at 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('|', at 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


More information about the x2go-commits mailing list