[X2Go-Commits] x2gobroker.git - build-main (branch) updated: 0.0.0.5-33-g993c8cd

X2Go dev team git-admin at x2go.org
Sun May 19 13:03:21 CEST 2013


The branch, build-main has been updated
       via  993c8cda4b2aa59cf181cb54d2fa5dfc90102c53 (commit)
      from  cacfe491f405d6db68079b6166d729f4c502d0dd (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 -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 x2gobroker/agent.py               |   19 +++++++++++++++----
 x2gobroker/brokers/base_broker.py |    7 +++++++
 2 files changed, 22 insertions(+), 4 deletions(-)

The diff of changes is:
diff --git a/x2gobroker/agent.py b/x2gobroker/agent.py
index ad2a989..1ea3373 100644
--- a/x2gobroker/agent.py
+++ b/x2gobroker/agent.py
@@ -22,6 +22,7 @@
 import subprocess
 import paramiko
 import cStringIO
+import gevent
 
 import x2gobroker._paramiko
 x2gobroker._paramiko.monkey_patch_paramiko()
@@ -61,6 +62,7 @@ def call_local_broker_agent(username, mode, cmdline_args=[]):
     if result[0].startswith('OK'):
         return [ r for r in result[1:] if r ]
 
+
 def call_remote_broker_agent(username, mode, cmdline_args=[], remote_agent=None):
     """\
     Launch remote X2Go Broker Agent via SSH and process its output.
@@ -109,6 +111,7 @@ def call_remote_broker_agent(username, mode, cmdline_args=[], remote_agent=None)
     except paramiko.SSHException:
         logger_error.error('could not connect to remote X2Go Broker Agent (user: {user}, hostname: {hostname}, port: {port}'.format(user=remote_username, hostname=remote_hostname, port=remote_port))
 
+
 def list_sessions(username, query_mode='LOCAL', remote_agent=None):
     """\
     Query X2Go Broker Agent for a session list for a given username.
@@ -126,6 +129,7 @@ def list_sessions(username, query_mode='LOCAL', remote_agent=None):
     else:
         return call_remote_broker_agent(username, mode='listsessions', remote_agent=remote_agent)
 
+
 def find_busy_servers(username, query_mode='LOCAL', remote_agent=None):
     """\
     Query X2Go Broker Agent for a list of  servers with running
@@ -157,6 +161,7 @@ def find_busy_servers(username, query_mode='LOCAL', remote_agent=None):
 
     return server_usage
 
+
 def add_authorized_key(username, pubkey_hash, authorized_keys_file='%h/.x2go/authorized_keys', query_mode='LOCAL', remote_agent=None):
     """\
     Add a public key hash to the user's authorized_keys file.
@@ -178,7 +183,8 @@ def add_authorized_key(username, pubkey_hash, authorized_keys_file='%h/.x2go/aut
     else:
         return call_remote_broker_agent(username, mode='addauthkey', cmdline_args=[pubkey_hash, authorized_keys_file, ], remote_agent=remote_agent)
 
-def delete_authorized_key(username, pubkey_hash, authorized_keys_file='%h/.x2go/authorized_keys', query_mode='LOCAL', remote_agent=None):
+
+def delete_authorized_key(username, pubkey_hash, authorized_keys_file='%h/.x2go/authorized_keys', query_mode='LOCAL', remote_agent=None, delay_deletion=0):
     """\
     Remove a public key hash from the user's authorized_keys file.
 
@@ -194,10 +200,14 @@ def delete_authorized_key(username, pubkey_hash, authorized_keys_file='%h/.x2go/
     @type remote_agent: C{dict}
 
     """
-    if query_mode.upper() == u'LOCAL':
-        return call_local_broker_agent(username, mode='delauthkey', cmdline_args=[pubkey_hash, authorized_keys_file, ])
+    if delay_deletion > 0:
+        gevent.spawn_later(delay_deletion, delete_authorized_key, username=username, authorized_keys_file=authorized_keys_file, query_mode=query_mode, remote_agent=remote_agent, )
     else:
-        return call_remote_broker_agent(username, mode='delauthkey', cmdline_args=[pubkey_hash, authorized_keys_file, ], remote_agent=remote_agent)
+        if query_mode.upper() == u'LOCAL':
+            return call_local_broker_agent(username, mode='delauthkey', cmdline_args=[pubkey_hash, authorized_keys_file, ])
+        else:
+            return call_remote_broker_agent(username, mode='delauthkey', cmdline_args=[pubkey_hash, authorized_keys_file, ], remote_agent=remote_agent)
+
 
 def get_servers(username, query_mode='LOCAL', remote_agent=None):
     """\
@@ -218,6 +228,7 @@ def get_servers(username, query_mode='LOCAL', remote_agent=None):
     else:
         return call_local_broker_agent(username, mode='getservers', remote_agent=remote_agent)
 
+
 def genkeypair(local_username, client_address, key_type='RSA'):
     """\
     Generate an SSH pub/priv key pair without writing the private key to file.
diff --git a/x2gobroker/brokers/base_broker.py b/x2gobroker/brokers/base_broker.py
index c3dbc7f..a19f6d9 100644
--- a/x2gobroker/brokers/base_broker.py
+++ b/x2gobroker/brokers/base_broker.py
@@ -871,6 +871,13 @@ class X2GoBroker(object):
             selected_session.update({
                 'authentication_privkey': privkey,
             })
+            x2gobroker.agent.delete_authorized_key(username=username,
+                                                   pubkey_hash=pubkey,
+                                                   authorized_keys_file=self.get_authorized_keys_file(profile_id),
+                                                   query_mode=agent_query_mode,
+                                                   remote_agent=remote_agent,
+                                                   delay_deletion=60,
+            ),
 
         return selected_session
 


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).




More information about the x2go-commits mailing list