[X2Go-Commits] python-x2go.git - twofactorauth (branch) updated: 0.1.1.4-164-g521d91d

X2Go dev team git-admin at x2go.org
Sat Sep 14 15:57:21 CEST 2013


The branch, twofactorauth has been updated
       via  521d91dfd683e3221ba0d37d24c5419f4dfb4852 (commit)
      from  41e9e07ffcd534af310b1a7dd48c04d9fbd72356 (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:
 debian/changelog                  |    3 +++
 x2go/backends/terminal/_stdout.py |    7 +++++++
 x2go/client.py                    |   22 ++++++++++++++++++++
 x2go/session.py                   |   41 ++++++++++++++++++++++++++++++++++---
 4 files changed, 70 insertions(+), 3 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index a9594b0..785a616 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -72,6 +72,9 @@ python-x2go (0.1.2.0-0~x2go1) UNRELEASED; urgency=low
     - Docstring fix, add X2goClient method is_session_profile(), return registered
       session for a specific session name if it has already been registered instead
       of registering a new session.
+    - Provide X2goClient method get_session_info(), do not auto start/resume sessions
+      in published applications mode, provide hook method for auto-connecting
+      interactively.
   * Depend on python-xlib.
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Sat, 28 Sep 2012 01:44:21 +0100
diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py
index 32798af..6cfbac1 100644
--- a/x2go/backends/terminal/_stdout.py
+++ b/x2go/backends/terminal/_stdout.py
@@ -393,6 +393,13 @@ class X2goTerminalSessionSTDOUT(object):
         """
         return self.session_info.name
 
+    def get_session_info(self):
+        """\
+        STILL UNDOCUMENTED
+
+        """
+        return self.session_info
+
     def get_session_cmd(self):
         """\
         STILL UNDOCUMENTED
diff --git a/x2go/client.py b/x2go/client.py
index 68da3fb..ef04361 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -331,6 +331,13 @@ class X2goClient(object):
         self.auto_update_listdesktops_cache = auto_update_listdesktops_cache
         self.auto_update_listmounts_cache = auto_update_listmounts_cache
 
+    def HOOK_profile_auto_connect(self, profile_name='UNKNOWN'):
+        """\
+        HOOK method: called if a session demands to auto connect the session profile.
+
+        """
+        self.logger('HOOK_profile_auto_connect: profile ,,%s'' wants to be auto-connected to the X2Go server.' % profile_name, loglevel=log.loglevel_WARN)
+
     def HOOK_session_startup_failed(self, profile_name='UNKNOWN'):
         """\
         HOOK method: called if the startup of a session failed.
@@ -1071,6 +1078,21 @@ class X2goClient(object):
         return self.session_registry(session_uuid).get_session_name()
     __get_session_name = get_session_name
 
+    def get_session_info(self, session_uuid):
+        """\
+        Retrieve the server-side X2Go session information object for the session that has
+        been registered under C{session_uuid}.
+
+        @param session_uuid: the X2Go session's UUID registry hash
+        @type session_uuid: C{str}
+
+        @return: X2Go session info
+        @rtype: C{obj}
+
+        """
+        return self.session_registry(session_uuid).get_session_info()
+    __get_session_info = get_session_info
+
     def set_session_username(self, session_uuid, username):
         """\
         Set the session username for the L{X2goSession} that has been registered under C{session_uuid}.
diff --git a/x2go/session.py b/x2go/session.py
index 1bbea20..8ec10f0 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -308,6 +308,16 @@ class X2goSession(object):
         if self.is_connected():
             self.retrieve_server_features()
 
+    def HOOK_auto_connect(self):
+        """\
+        HOOK method: called if the session demands to auto connect.
+
+        """
+        if self.client_instance:
+            self.client_instance.HOOK_profile_auto_connect(profile_name=self.profile_name)
+        else:
+            self.logger('HOOK_auto_connect: profile ,,%s'' wants to auto-connect to the X2Go server.' % self.profile_name, loglevel=log.loglevel_WARN)
+
     def HOOK_session_startup_failed(self):
         """\
         HOOK method: called if the startup of a session failed.
@@ -716,6 +726,18 @@ class X2goSession(object):
         return self.session_name
     __get_session_name = get_session_name
 
+    def get_session_info(self):
+        """\
+        Retrieve the server-side X2Go session info object for this session.
+
+        @return: X2Go session info
+        @rtype: C{obj}
+
+        """
+        if self.has_terminal_session():
+            self.terminal_session.get_session_info()
+    __get_session_info = get_session_info
+
     def get_session_cmd(self):
         """\
         Retrieve the server-side command that is used to start a session
@@ -890,6 +912,8 @@ class X2goSession(object):
             else:
                 if self.can_auto_connect() and self.auto_connect:
                     gevent.spawn(self.connect)
+                else:
+                    gevent.spawn(self.HOOK_auto_connect)
 
     def connect(self, username='', password='', add_to_known_hosts=False, force_password_auth=False,
                 use_sshproxy=False, sshproxy_user='', sshproxy_password=''):
@@ -1296,7 +1320,11 @@ class X2goSession(object):
 
     def do_auto_start_or_resume(self, newest=True, oldest=False, all_suspended=False, start=True, redirect_to_client=True):
         """\
-        Automatically start or resume this session.
+        Automatically start or resume this session, if already associated with a server session. Otherwise
+        resume a server-side available/suspended session (see options to declare which session to resume).
+        If no session is available for resuming a new session will be launched.
+
+        Sessions in published applications mode are not resumed/started by this method.
 
         @param newest: if resuming, only resume newest/youngest session
         @type newest: C{bool}
@@ -1314,10 +1342,16 @@ class X2goSession(object):
         if self.client_instance and redirect_to_client:
             return self.client_instance.session_auto_start_or_resume(self())
         else:
-            if self.session_name is not None:
+            if self.session_name is not None and 'PUBLISHED' not in self.session_name:
                 return self.resume()
             else:
                 session_infos = self.list_sessions()
+
+                # only auto start/resume non-pubapp sessions
+                for session_name in session_infos.keys():
+                    if session_infos[session_name].is_published_applications_provider():
+                        del session_infos[session_name]
+
                 if session_infos:
                     if newest:
                         return self.resume(session_name=utils.session_names_by_timestamp(session_infos)[-1])
@@ -1327,7 +1361,8 @@ class X2goSession(object):
                         for session_name in [ _sn for _sn in session_infos.keys() if session_infos[_sn].is_suspended() ]:
                             return self.resume(session_name=session_name)
                 else:
-                    return self.start()
+                    if not self.published_applications:
+                        return self.start()
 
     def resume(self, session_name=None):
         """\


hooks/post-receive
-- 
python-x2go.git (Python X2Go Client API)

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 "python-x2go.git" (Python X2Go Client API).




More information about the x2go-commits mailing list