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@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],@sinfo[1],@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