[X2Go-Commits] [x2goserver] 01/03: Properly clean up shadow sessions for the session database.

git-admin at x2go.org git-admin at x2go.org
Thu Feb 5 12:06:10 CET 2015


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2goserver.

commit 335a8efb18f7baad1333148b2bcef64ea2b1550a
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Thu Feb 5 11:48:38 2015 +0100

    Properly clean up shadow sessions for the session database.
---
 debian/changelog                  |    1 +
 x2goserver/sbin/x2gocleansessions |   16 +++++++++++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/debian/changelog b/debian/changelog
index ac1bef1..5ff2927 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -66,6 +66,7 @@ x2goserver (4.1.0.0-0x2go1.1) UNRELEASED; urgency=low
     - Make it possible to change the state of shadow sessions.
     - Provide --debug option for x2gocleansession that allows running
       x2gocleansessions in foreground (and in debug mode).
+    - Properly clean up shadow sessions for the session database.
   * 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/sbin/x2gocleansessions b/x2goserver/sbin/x2gocleansessions
index 4cfe224..83e57a1 100755
--- a/x2goserver/sbin/x2gocleansessions
+++ b/x2goserver/sbin/x2gocleansessions
@@ -149,6 +149,9 @@ elsif ($pid == 0 )
 	my %remembered_sessions_since = ();
 	my $last_reniced = 0;
 
+	my $user;
+	my $effective_user;
+
 	while(sleep 2)
 	{
 		my $outp=system_capture_stdout_output("$x2go_lib_path/x2golistsessions_sql", "$serv");
@@ -214,7 +217,18 @@ elsif ($pid == 0 )
 			}
 			elsif (! check_pid (@sinfo[0], at sinfo[1], at sinfo[12]))
 			{
-				system("su", "@sinfo[11]", "-s", "/bin/sh", "-c", "$x2go_lib_path/x2gochangestatus 'F' @sinfo[1]");
+				$user = @sinfo[11];
+
+				# For shadow sessions we need to su to the user who provided the shared desktop (not the one who
+				# requested the desktop sharing)...
+				if ( @sinfo[1] =~ m/$user-[0-9]{2,}-[0-9]{10,}_stS(0|1)XSHAD.*XSHAD.*/ )
+				{
+					$effective_user = @sinfo[1];
+					$effective_user =~ s/$user\-[0-9]{2,}\-[0-9]{10}_stS[0-1]XSHAD(.*)XSHAD.*/$1/;
+					$user = $effective_user;
+				}
+
+				system("su", "$user", "-s", "/bin/sh", "-c", "$x2go_lib_path/x2gochangestatus 'F' @sinfo[1]");
 				my $display = @sinfo[2];
 				if (-S "/tmp/.X11-unix/X$display") {
 					# remove the NX-X11 socket file (we don't know how the agent disappeared,

--
Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git


More information about the x2go-commits mailing list