[X2go-Commits] python-x2go.git - master (branch) updated: 0.1.1.4-32-g956ae90

X2go dev team git-admin at x2go.org
Thu Sep 15 00:15:33 CEST 2011


The branch, master has been updated
       via  956ae90c84e189d3ef764e36db60d06b47f80fbd (commit)
      from  019e478b242d2879de567cbcf35d04b0b7a88799 (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 956ae90c84e189d3ef764e36db60d06b47f80fbd
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Thu Sep 15 00:13:56 2011 +0200

    Add support for x2goumount-session calls.

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

Summary of changes:
 debian/changelog                  |    2 +-
 x2go/backends/terminal/_stdout.py |   18 +++++++++++++++
 x2go/client.py                    |   42 +++++++++++++++++++++++++++++++++++++
 x2go/session.py                   |   36 ++++++++++++++++++++++++++++++-
 4 files changed, 96 insertions(+), 2 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index c5c9f26..8350ba2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,7 +7,7 @@ python-x2go (0.1.2.0-0~x2go1) UNRELEASED; urgency=low
 python-x2go (0.1.1.7-0-x2go1) UNRELEASED; urgency=low
 
   * New upstream version (0.1.1.6), bugfix release for 0.1.1.x series:
-    - continue development... 
+    - Add support for x2goumount-session calls.
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Wed, 14 Sep 2011 21:35:54 +0200
 
diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py
index 8f00822..c5bbdbc 100644
--- a/x2go/backends/terminal/_stdout.py
+++ b/x2go/backends/terminal/_stdout.py
@@ -678,6 +678,24 @@ 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_NOTICE)
 
+    def unshare_all_local_folders(self):
+        """\
+        Unshare all local folders mount in the X2go session.
+
+        @return: returns C{True} if all local folders could be successfully unmounted from the X2go server session
+        @rtype: bool
+
+        """
+        self.logger('unsharing all local folders for session %s' % self.session_info, log.loglevel_INFO)
+
+        cmd_line = [ 'export HOSTNAME &&',
+                     'x2goumount-session', 
+                     self.session_info,
+                   ]
+
+        (stdin, stdout, stderr) = self.control_session._x2go_exec_command(cmd_line)
+        self.logger('x2goumount-session output is : %s' % stdout.read().split('\n'), log.loglevel_NOTICE)
+
     def color_depth(self):
         """\
         Retrieve the session's color depth.
diff --git a/x2go/client.py b/x2go/client.py
index e589f5a..8316360 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -1501,6 +1501,48 @@ class X2goClient(object):
             return False
     __share_local_folder_with_session = share_local_folder_with_session
 
+    def unshare_all_local_folders_from_session(self, session_uuid=None, folder_name=_LOCAL_HOME, profile_name=None):
+        """\
+        Unshare all local folders mounted in X2go session registered as
+        C{session_uuid}.
+
+        When calling this method all client-side mounted folders on the X2go 
+        server (via sshfs) for session with ID <session_uuid> will get
+        unmounted.
+
+        @param session_uuid: the X2go session's UUID registry hash
+        @type session_uuid: C{str}
+        @param profile_name: alternatively, the profile name can be used to unshare
+            mounted folders
+        @type profile_name: C{str}
+
+        @return: returns C{True} if all local folders could be successfully unmounted
+        @rtype: C{bool}
+
+        """
+        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).unshare_all_local_folders()
+        else:
+            self.logger('Cannot find a terminal session for profile ,,%s\'\' from which to unmount local folders' % profile_name, loglevel=log.loglevel_WARN)
+            return False
+    __unshare_all_local_folders_from_session = unshare_all_local_folders_from_session
+
+    def session_get_shared_folders(self, session_uuid):
+        """\
+        Get a list of local folders mounted within X2go session with session hash <session_uuid>
+        from this client.
+
+        @return: returns a C{list} of those local folder names that are mounted within X2go session <session_uuid>.
+        @rtype: C{list}
+
+        """
+        return self(session_uuid).get_shared_folders()
+    __session_get_shared_folders = session_get_shared_folders
+
     ###
     ### Provide access to the X2goClient's session registry
     ### 
diff --git a/x2go/session.py b/x2go/session.py
index 53b5dd5..39a950c 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -236,6 +236,7 @@ class X2goSession(object):
         self.terminal_params = {}
         self.sshproxy_params = {}
         self.update_params(params)
+        self.shared_folders = []
 
         self.session_environment = {}
 
@@ -1396,13 +1397,46 @@ class X2goSession(object):
         """
         if self.has_terminal_session():
             if self.allow_share_local_folders:
-                return self.terminal_session.share_local_folder(folder_name=folder_name)
+                if self.terminal_session.share_local_folder(folder_name=folder_name):
+                    self.shared_folders.append(folder_name)
+                    return True
+                return False
             else:
                 self.logger('local folder sharing is disabled for this session profile', loglevel=log.loglevel_WARN)
         else:
             raise X2goSessionException('this X2goSession object does not have any associated terminal')
     __share_local_folder = share_local_folder
 
+    def unshare_all_local_folders(self):
+        """\
+        Unshare all local folders mounted within this X2go session.
+
+        @return: returns C{True} if all local folders could be successfully unmounted
+            inside this X2go session
+        @rtype: C{bool}
+
+        """
+        if self.has_terminal_session():
+            if self.allow_share_local_folders:
+                self.shared_folders = []
+                return self.terminal_session.unshare_all_local_folders()
+            else:
+                self.logger('local folder sharing is disabled for this session profile', loglevel=log.loglevel_WARN)
+        else:
+            raise X2goSessionException('this X2goSession object does not have any associated terminal')
+    __unshare_all_local_folders = unshare_all_local_folders
+
+    def get_shared_folders(self):
+        """\
+        Get a list of local folders mounted within this X2go session from this client.
+
+        @return: returns a C{list} of those folder names that are mounted with this X2go session.
+        @rtype: C{list}
+
+        """
+        return self.shared_folders
+    __get_shared_folders = get_shared_folders
+
     def is_locked(self):
         """\
         Query session if it is locked by some command being processed.


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