The branch, statusflag has been updated via ce08dfb62d7dc63eb9fa4def310047d9ed3b1486 (commit) from 57f6f46492bf568fbcc23c7fae84f57cff8b0971 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ce08dfb62d7dc63eb9fa4def310047d9ed3b1486 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Tue Jun 4 23:55:43 2013 +0200 add support for suspending/terminating sessions via the X2Go Session Broker ----------------------------------------------------------------------- Summary of changes: lib/x2gobroker-agent.pl | 12 ++++++++++-- x2gobroker/agent.py | 37 +++++++++++++++++++++++++++++++++++++ x2gobroker/brokers/base_broker.py | 1 + 3 files changed, 48 insertions(+), 2 deletions(-) The diff of changes is: diff --git a/lib/x2gobroker-agent.pl b/lib/x2gobroker-agent.pl index c5310b2..79d2d1f 100755 --- a/lib/x2gobroker-agent.pl +++ b/lib/x2gobroker-agent.pl @@ -187,12 +187,20 @@ if($mode eq 'delauthkey') DelAuthKey($uid, $uidNumber, $gidNumber, $home, $pubkey, $authkeyfile); } -if($mode eq 'suspend') +if($mode eq 'suspendsession') { InitX2GoUser($uid, $uidNumber, $gidNumber, $home); print "OK\n"; my $sid=shift; - exec ("/bin/su - $uid -c \"x2gosuspend-session $sid\""); + exec ("/bin/su - $uid -c \"$(x2gopath lib)/x2gochangestatus S $sid\""); +} + +if($mode eq 'terminatesession') +{ + InitX2GoUser($uid, $uidNumber, $gidNumber, $home); + print "OK\n"; + my $sid=shift; + exec ("/bin/su - $uid -c \"$(x2gopath lib)/x2gochangestatus T $sid\""); } if($mode eq 'ping') diff --git a/x2gobroker/agent.py b/x2gobroker/agent.py index 2f2b2d2..e88c805 100644 --- a/x2gobroker/agent.py +++ b/x2gobroker/agent.py @@ -173,6 +173,43 @@ def list_sessions(username, query_mode='LOCAL', remote_agent=None): else: return call_remote_broker_agent(username, mode='listsessions', remote_agent=remote_agent) + +def suspend_session(username, session_name, query_mode='LOCAL', remote_agent=None): + """\ + Trigger a session suspensions via the X2Go Broker Agent. + + @param username: suspend the session on behalf of this username + @type username: C{unicode} + @param query_mode: query mode used when calling X2Go Broker Agent (C{LOCAL} or C{SSH}) + @type query_mode: C{unicode} + @param remote_agent: information about the remote agent that is to be called. + @type remote_agent: C{dict} + + """ + if unicode(query_mode).upper() == u'LOCAL': + return call_local_broker_agent(username, mode='suspendsession', cmdline_args=[session_name, ], ) + else: + return call_remote_broker_agent(username, mode='suspendsession', cmdline_args=[session_name, ], remote_agent=remote_agent) + + +def terminate_session(username, session_name, query_mode='LOCAL', remote_agent=None): + """\ + Trigger a session termination via the X2Go Broker Agent. + + @param username: terminate the session on behalf of this username + @type username: C{unicode} + @param query_mode: query mode used when calling X2Go Broker Agent (C{LOCAL} or C{SSH}) + @type query_mode: C{unicode} + @param remote_agent: information about the remote agent that is to be called. + @type remote_agent: C{dict} + + """ + if unicode(query_mode).upper() == u'LOCAL': + return call_local_broker_agent(username, mode='terminatesession', cmdline_args=[session_name, ], ) + else: + return call_remote_broker_agent(username, mode='terminatesession', cmdline_args=[session_name, ], remote_agent=remote_agent) + + def has_sessions(username, query_mode='LOCAL', remote_agent=None): """\ Query X2Go Broker Agent to detect running/suspended sessions on diff --git a/x2gobroker/brokers/base_broker.py b/x2gobroker/brokers/base_broker.py index 52e68c6..153ab70 100644 --- a/x2gobroker/brokers/base_broker.py +++ b/x2gobroker/brokers/base_broker.py @@ -977,6 +977,7 @@ class X2GoBroker(object): session_info = suspended_sessions[0] else: session_info = running_sessions[0] + x2gobroker.agent.suspend_session(session_name=session_info.split('|')[1], query_mode=agent_query_mode) server_name = session_info.split('|')[3] # if we have an explicit IP address for server_name, let's use that instead... hooks/post-receive -- x2gobroker.git (HTTP(S) Session broker for X2Go) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "x2gobroker.git" (HTTP(S) Session broker for X2Go).