[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