[X2go-Commits] x2gobroker.git - master (branch) updated: 0.0.0.5-34-gd46aa2e

X2Go dev team git-admin at x2go.org
Mon Mar 4 11:10:43 CET 2013


The branch, master has been updated
       via  d46aa2e207f31deda85dc0f896d53989cc244fe3 (commit)
       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 -----------------------------------------------------------------
commit d46aa2e207f31deda85dc0f896d53989cc244fe3
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Mon Mar 4 11:10:39 2013 +0100

    Implement session autologin feature (earlier commits). /debian/control: Dependency for python-x2gobroker: python-gevent.

commit 993c8cda4b2aa59cf181cb54d2fa5dfc90102c53
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Mon Mar 4 11:08:58 2013 +0100

    implement deletion of authorized_keys

-----------------------------------------------------------------------

Summary of changes:
 debian/changelog                  |    3 +++
 debian/control                    |    1 +
 x2gobroker/agent.py               |   19 +++++++++++++++----
 x2gobroker/brokers/base_broker.py |    7 +++++++
 4 files changed, 26 insertions(+), 4 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 93164d9..57c160d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,12 +4,15 @@ x2gobroker (0.0.0.6-0~x2go1) UNRELEASED; urgency=low
   * New upstream version (0.0.0.6):
     - Rewrite empty user parameter in session profile. Fill in
       the UID that has been used for broker authentication.
+    - Implement session autologin feature.
   * /debian/*.default:
     - Be more explanatory about the X2GOBROKER_DEBUG option and allow
       to enable debug mode for the different services independently.
       (Fixes: #126).
   * /debian/x2gobroker-daemon.postinst:
     - Fix home path for user x2gobroker. (Fixes: #127).
+  * /debian/control:
+    - Dependency for python-x2gobroker: python-gevent.
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Wed, 27 Feb 2013 23:04:10 +0100
 
diff --git a/debian/control b/debian/control
index 3190f5c..fbee287 100644
--- a/debian/control
+++ b/debian/control
@@ -152,6 +152,7 @@ Depends:
  python-netaddr,
  python-webpy (>= 1:0.37),
  python-paramiko,
+ python-gevent,
 Suggests:
  apache2 | httpd,
 Description: X2Go http(s) based session broker (Python modules)
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