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