[X2Go-Commits] python-x2go.git - build-baikal (branch) updated: 0.1.1.4-111-g84683b8

X2Go dev team git-admin at x2go.org
Wed Jan 8 15:26:49 CET 2014


The branch, build-baikal has been updated
       via  84683b883de5c853506c116d715f8c054de4a2bf (commit)
      from  5aa1c6f22f593c1efb58c1f0342746f5772ea540 (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 |    2 ++
 x2go/client.py   |   48 ++++++++++++++++++++++++++++++++++++++
 x2go/session.py  |   68 ++++++++++++++++++++++++++++++++++++++++++++++--------
 3 files changed, 109 insertions(+), 9 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index b74c497..f60caf1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -25,6 +25,8 @@ python-x2go (0.1.2.0-0~x2go1) UNRELEASED; urgency=low
     - Fix X2Go desktop sharing support.
     - New feature, allow/fix sessions on localhost system.
     - Tolerate names containing "-" characters.
+    - Provide hook methods for SSHFS failures (local folder sharing, printing,
+      MIME box).
   * Depend on python-xlib.
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Sat, 28 Sep 2012 01:44:21 +0100
diff --git a/x2go/client.py b/x2go/client.py
index 880c79d..85481fb 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -595,6 +595,54 @@ class X2goClient(object):
         """
         self.logger('HOOK_on_session_has_terminated (session_uuid: %s, profile_name: %s): session %s has terminated' % (session_uuid, profile_name, session_name), loglevel=log.loglevel_NOTICE)
 
+    def HOOK_printing_not_available(self, profile_name='UNKNOWN', session_name='UNKNOWN'):
+        """\
+        HOOK method: called if X2Go client-side printing is not available.
+
+        @param profile_name: profile name of session that called this hook method
+        @type profile_name: C{str}
+        @param session_name: X2Go session name
+        @type session_name: C{str}
+
+        """
+        self.logger('HOOK_foldersharing_not_available: X2Go\'s client-side printing feature is not available with this session (%s) of profile %s.' % (session_name, profile_name), loglevel=log.loglevel_WARN)
+
+    def HOOK_mimebox_not_available(self, profile_name='UNKNOWN', session_name='UNKNOWN'):
+        """\
+        HOOK method: called if the X2Go MIME box is not available.
+
+        @param profile_name: profile name of session that called this hook method
+        @type profile_name: C{str}
+        @param session_name: X2Go session name
+        @type session_name: C{str}
+
+        """
+        self.logger('HOOK_mimebox_not_available: X2Go\'s MIME box feature is not available with this session (%s) of profile %s.' % (session_name, profile_name), loglevel=log.loglevel_WARN)
+
+    def HOOK_foldersharing_not_available(self, profile_name='UNKNOWN', session_name='UNKNOWN'):
+        """\
+        HOOK method: called if X2Go client-side folder-sharing is not available.
+
+        @param profile_name: profile name of session that called this hook method
+        @type profile_name: C{str}
+        @param session_name: X2Go session name
+        @type session_name: C{str}
+
+        """
+        self.logger('HOOK_foldersharing_not_available: X2Go\'s client-side folder sharing feature is not available with this session (%s) of profile %s.' % (session_name, profile_name), loglevel=log.loglevel_WARN)
+
+    def HOOK_sshfs_not_available(self, profile_name='UNKNOWN', session_name='UNKNOWN'):
+        """\
+        HOOK method: called if the X2Go server denies SSHFS access.
+
+        @param profile_name: profile name of session that called this hook method
+        @type profile_name: C{str}
+        @param session_name: X2Go session name
+        @type session_name: C{str}
+
+        """
+        self.logger('HOOK_sshfs_not_available: the remote X2Go server (%s) denies SSHFS access for session %s. This will result in client-side folder sharing, printing and the MIME box feature being unavailable' % (session_name, profile_name), loglevel=log.loglevel_WARN)
+
     def _detect_backend_classes(self):
         # CONTROL session backend
         if type(self.control_backend) is types.StringType:
diff --git a/x2go/session.py b/x2go/session.py
index 5d58b63..c4b71b5 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -324,6 +324,46 @@ class X2goSession(object):
         # get rid of the faulty session...
         self.terminate()
 
+    def HOOK_printing_not_available(self):
+        """\
+        HOOK method: called if X2Go client-side printing is not available.
+
+        """
+        if self.client_instance:
+            self.client_instance.HOOK_printing_not_available(profile_name=self.profile_name, session_name=self.session_name)
+        else:
+            self.logger('HOOK_foldersharing_not_available: X2Go\'s client-side printing feature is not available with this session (%s) of profile %s.' % (self.session_name, self.profile_name), loglevel=log.loglevel_WARN)
+
+    def HOOK_mimebox_not_available(self):
+        """\
+        HOOK method: called if the X2Go MIME box is not available.
+
+        """
+        if self.client_instance:
+            self.client_instance.HOOK_mimebox_not_available(profile_name=self.profile_name, session_name=self.session_name)
+        else:
+            self.logger('HOOK_mimebox_not_available: X2Go\'s MIME box feature is not available with this session (%s) of profile %s.' % (self.session_name, self.profile_name), loglevel=log.loglevel_WARN)
+
+    def HOOK_foldersharing_not_available(self):
+        """\
+        HOOK method: called if X2Go client-side folder-sharing is not available.
+
+        """
+        if self.client_instance:
+            self.client_instance.HOOK_foldersharing_not_available(profile_name=self.profile_name, session_name=self.session_name)
+        else:
+            self.logger('HOOK_foldersharing_not_available: X2Go\'s client-side folder sharing feature is not available with this session (%s) of profile %s.' % (self.session_name, self.profile_name), loglevel=log.loglevel_WARN)
+
+    def HOOK_sshfs_not_available(self):
+        """\
+        HOOK method: called if the X2Go server denies SSHFS access.
+
+        """
+        if self.client_instance:
+            self.client_instance.HOOK_foldersharing_not_available(profile_name=self.profile_name, session_name=self.session_name)
+        else:
+            self.logger('HOOK_sshfs_not_available: the remote X2Go server (%s) denies SSHFS access for session %s. This will result in client-side folder sharing, printing and the MIME box feature being unavailable' % (self.profile_name, self.session_name), loglevel=log.loglevel_WARN)
+
     def HOOK_check_host_dialog(self, host, port, fingerprint='no fingerprint', fingerprint_type='RSA'):
         """\
         HOOK method: called if a host check is requested. This hook has to either return C{True} (default) or C{False}.
@@ -1164,7 +1204,7 @@ class X2goSession(object):
                         self.terminal_session and not self.faulty and self.terminal_session.start_sshfs()
                 except x2go_exceptions.X2goUserException, e:
                     self.logger('%s' % str(e), loglevel=log.loglevel_WARN)
-                    # TODO: handle this exception as a notification hook method...
+                    self.HOOK_sshfs_not_available()
                     self._SUPPORTED_PRINTING = False
                     self._SUPPORTED_MIMEBOX = False
                     self._SUPPORTED_FOLDERSHARING = False
@@ -1175,17 +1215,27 @@ class X2goSession(object):
                         self.terminal_session and not self.faulty and self.session_environment.update({'X2GO_SPOOLDIR': self.terminal_session.get_printing_spooldir(), })
                 except x2go_exceptions.X2goUserException, e:
                     self.logger('%s' % str(e), loglevel=log.loglevel_WARN)
-                    # TODO: handle this exception as a notification hook method...
+                    self.HOOK_printing_not_available()
                     self._SUPPORTED_PRINTING = False
 
-                if self._SUPPORTED_MIMEBOX and self.allow_mimebox:
-                    self.terminal_session and not self.faulty and self.terminal_session.start_mimebox(mimebox_extensions=self.mimebox_extensions, mimebox_action=self.mimebox_action)
-                    self.terminal_session and self.session_environment.update({'X2GO_MIMEBOX': self.terminal_session.get_mimebox_spooldir(), })
+                try:
+                    if self._SUPPORTED_MIMEBOX and self.allow_mimebox:
+                        self.terminal_session and not self.faulty and self.terminal_session.start_mimebox(mimebox_extensions=self.mimebox_extensions, mimebox_action=self.mimebox_action)
+                        self.terminal_session and self.session_environment.update({'X2GO_MIMEBOX': self.terminal_session.get_mimebox_spooldir(), })
+                except x2go_exceptions.X2goUserException, e:
+                    self.logger('%s' % str(e), loglevel=log.loglevel_WARN)
+                    self.HOOK_mimebox_not_available()
+                    self._SUPPORTED_MIMEBOX = False
 
-                if self.share_local_folders and self.terminal_session and not self.faulty and self.is_folder_sharing_available():
-                    if _control.get_transport().reverse_tunnels[self.terminal_session.get_session_name()]['sshfs'][1] is not None:
-                        for _folder in self.share_local_folders:
-                            self.share_local_folder(_folder)
+                try:
+                    if self.share_local_folders and self.terminal_session and not self.faulty and self.is_folder_sharing_available():
+                        if _control.get_transport().reverse_tunnels[self.terminal_session.get_session_name()]['sshfs'][1] is not None:
+                            for _folder in self.share_local_folders:
+                                self.share_local_folder(_folder)
+                except x2go_exceptions.X2goUserException, e:
+                    self.logger('%s' % str(e), loglevel=log.loglevel_WARN)
+                    self.HOOK_foldersharing_not_available()
+                    self._SUPPORTED_FOLDERSHARING = False
 
                 self.virgin = False
                 self.suspended = False


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