[X2Go-Commits] python-x2go.git - twofactorauth (branch) updated: 83aac18e0c9d14234efcad2226bf7535bfe9c5a3

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


The branch, twofactorauth has been updated
       via  83aac18e0c9d14234efcad2226bf7535bfe9c5a3 (commit)
      from  fff4c5d721f7bb447a5da8f108730bdfc1627a91 (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:
 x2go/backends/terminal/_stdout.py |    2 +-
 x2go/client.py                    |   55 ++++++++++++++++++++++++++++++-------
 x2go/registry.py                  |   22 ++++++++++++++-
 3 files changed, 67 insertions(+), 12 deletions(-)

The diff of changes is:
diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py
index 963345e..10bd484 100644
--- a/x2go/backends/terminal/_stdout.py
+++ b/x2go/backends/terminal/_stdout.py
@@ -557,7 +557,7 @@ class X2goTerminalSessionSTDOUT(object):
                        ]
 
         (stdin, stdout, stderr) = self.control_session._x2go_exec_command(cmd_line)
-        self.logger('x2gomountdirs output is : %s' % stdout.read().split('\n'), log.loglevel_INFO)
+        self.logger('x2gomountdirs output is : %s' % stdout.read().split('\n'), log.loglevel_NOTICE)
 
     def run_command(self, cmd=None):
         """\
diff --git a/x2go/client.py b/x2go/client.py
index ef3e1e5..1d5d659 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -259,6 +259,7 @@ class X2goClient(object):
                 # presume the running XServer listens on :0
                 os.environ.update({'DISPLAY': 'localhost:0'})
 
+        self.auto_register_sessions = auto_register_sessions
         self.session_registry = X2goSessionRegistry(self, logger=self.logger)
         self.session_guardian = X2goSessionGuardian(self, auto_update_listsessions_cache=auto_update_listsessions_cache & use_listsessions_cache, 
                                                     auto_update_sessionregistry=auto_update_sessionregistry,
@@ -665,11 +666,13 @@ class X2goClient(object):
         @rtype: C{bool}
 
         """
-        return self.session_registry(session_uuid).connect(username=username, password=password,
-                                                           sshproxy_user=sshproxy_user, sshproxy_password=sshproxy_password,
-                                                           add_to_known_hosts=add_to_known_hosts,
-                                                           force_password_auth=force_password_auth,
-                                                          )
+        _success = self.session_registry(session_uuid).connect(username=username, password=password,
+                                                               sshproxy_user=sshproxy_user, sshproxy_password=sshproxy_password,
+                                                               add_to_known_hosts=add_to_known_hosts,
+                                                               force_password_auth=force_password_auth,
+                                                              )
+        if self.auto_register_sessions:
+            self.session_registry.register_available_server_sessions(profile_name=self.get_session_profile_name(session_uuid))
     __connect_session = connect_session
 
     def disconnect_session(self, session_uuid):
@@ -970,7 +973,7 @@ class X2goClient(object):
             return session_name not in [ s for s in self.server_running_sessions(session_uuid)  + self.server_suspended_sessions(session_uuid) ]
     __has_session_terminated = has_session_terminated
 
-    def share_local_folder_with_session(self, session_uuid, folder_name):
+    def share_local_folder_with_session(self, session_uuid=None, folder_name=_LOCAL_HOME, profile_name=None):
         """\
         Share a local folder with the X2go session registered as C{session_uuid}.
 
@@ -988,7 +991,15 @@ class X2goClient(object):
         @rtype: C{bool}
 
         """
-        return self.session_registry(session_uuid).share_local_folder(folder_name=folder_name)
+        if session_uuid is None and profile_name:
+            _associated = self._X2goClient__client_associated_sessions_of_profile_name(profile_name, return_objects=False)
+            if len(_associated) > 0:
+                session_uuid = _associated[0]
+        if session_uuid:
+            return self.session_registry(session_uuid).share_local_folder(folder_name=folder_name)
+        else:
+            self.logger('Cannot find a terminal session for profile ,,%s\'\' to share a local folder with' % profile_name, loglevel=log.loglevel_WARN)
+            return False
     __share_local_folder_with_session = share_local_folder_with_session
 
     ###
@@ -1012,6 +1023,23 @@ class X2goClient(object):
         return self.session_registry.has_connected_sessions
     __client_has_connected_sessions = client_has_connected_sessions
 
+    def client_associated_sessions(self, return_objects=False, return_profile_names=False):
+        """\
+        STILL UNDOCUMENTED
+
+        """
+        return self.session_registry.associated_sessions(return_objects=return_objects, return_profile_names=return_profile_names)
+    __client_associated_sessions = client_associated_sessions
+
+    @property
+    def client_has_associated_sessions(self):
+        """\
+        STILL UNDOCUMENTED
+
+        """
+        return self.session_registry.has_associated_sessions
+    __client_has_associated_sessions = client_has_associated_sessions
+
     def client_running_sessions(self, return_objects=False, return_profile_names=False):
         """\
         STILL UNDOCUMENTED
@@ -1102,7 +1130,15 @@ class X2goClient(object):
 
         """
         return self.session_registry.connected_sessions_of_profile_name(profile_name, return_objects=return_objects)
-    __client_connected_sessions = client_connected_sessions
+    __client_connected_sessions_of_profile_name = client_connected_sessions_of_profile_name
+
+    def client_associated_sessions_of_profile_name(self, profile_name, return_objects=False):
+        """\
+        STILL UNDOCUMENTED
+
+        """
+        return self.session_registry.associated_sessions_of_profile_name(profile_name, return_objects=return_objects)
+    __client_associated_sessions_of_profile_name = client_associated_sessions_of_profile_name
 
     ###
     ### Provide access to the X2go server's sessions DB
@@ -1276,8 +1312,7 @@ class X2goClient(object):
 
         if register_sessions:
             self.session_registry.register_available_server_sessions(profile_name=self.get_session_profile_name(session_uuid),
-                                                                     session_list=_session_list, 
-                                                                     update_sessionregistry=False)
+                                                                     session_list=_session_list)
 
         return _session_list
     __list_sessions = list_sessions
diff --git a/x2go/registry.py b/x2go/registry.py
index fd40b39..ac600e3 100644
--- a/x2go/registry.py
+++ b/x2go/registry.py
@@ -370,7 +370,10 @@ class X2goSessionRegistry(object):
             raise X2goSessionException('no session of name ,,%s\'\' registered' % session_name)
 
     def _sessionsWithState(self, state, return_objects=True, return_profile_names=False, return_profile_ids=False):
-        sessions = [ ts for ts in self.registry.values() if eval('ts.%s' % state) ]
+        if state == 'associated':
+            sessions = [ ts for ts in self.registry.values() if ts.has_terminal_session() ]
+        else:
+            sessions = [ ts for ts in self.registry.values() if eval('ts.%s' % state) ]
         if return_profile_names:
             profile_names = []
             for session in sessions:
@@ -395,6 +398,13 @@ class X2goSessionRegistry(object):
         """
         return self._sessionsWithState('connected', return_objects=return_objects, return_profile_names=return_profile_names, return_profile_ids=return_profile_ids)
 
+    def associated_sessions(self, return_objects=True, return_profile_names=False, return_profile_ids=False):
+        """\
+        STILL UNDOCUMENTED
+
+        """
+        return self._sessionsWithState('associated', return_objects=return_objects, return_profile_names=return_profile_names, return_profile_ids=return_profile_ids)
+
     def virgin_sessions(self, return_objects=True, return_profile_names=False, return_profile_ids=False):
         """\
         STILL UNDOCUMENTED
@@ -473,6 +483,16 @@ class X2goSessionRegistry(object):
         else:
             return self.connected_sessions() and [ s.get_uuid() for s in self.connected_sessions() if s.profile_name == profile_name ]
 
+    def associated_sessions_of_profile_name(self, profile_name, return_objects=False):
+        """\
+        STILL UNDOCUMENTED
+
+        """
+        if return_objects:
+            return self.associated_sessions() and [ s for s in self.associated_sessions() if s.profile_name == profile_name ]
+        else:
+            return self.associated_sessions() and [ s.get_uuid() for s in self.associated_sessions() if s.profile_name == profile_name ]
+
     def registered_sessions_of_profile_name(self, profile_name, return_objects=False):
         """\
         STILL UNDOCUMENTED


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