[X2Go-Commits] python-x2go.git - brokerclient (branch) updated: 0.4.0.8-20-g22e1546

X2Go dev team git-admin at x2go.org
Tue Jan 7 16:21:48 CET 2014


The branch, brokerclient has been updated
       via  22e15469440ef430a7fb2cc793db30ad99849bc1 (commit)
      from  0bf478f7f33a0842cdf940c9d320d9dbae39a888 (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/backends/terminal/_stdout.py |    3 ++-
 x2go/client.py                    |    7 +++++++
 x2go/session.py                   |   22 ++++++++++++++++++++--
 x2go/x2go_exceptions.py           |    3 ++-
 5 files changed, 33 insertions(+), 4 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 538cff8..c0a3652 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -23,6 +23,8 @@ python-x2go (0.4.0.9-0~x2go1) UNRELEASED; urgency=low
       data injections via ~/.*shrc files. (Fixes: #335).
     - Properly handle (=expand) the "~" character in key filenames. (Brought to
       attention by Eldamir on IRC. Thanks!).
+    - Differentiate between desktop sharing errors and desktop sharing access that gets
+      denied by the other/remote user.
 
   [ Orion Poplawski ]
   * debian/control:
diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py
index 4f28311..fafff4f 100644
--- a/x2go/backends/terminal/_stdout.py
+++ b/x2go/backends/terminal/_stdout.py
@@ -1379,6 +1379,7 @@ class X2GoTerminalSessionSTDOUT(object):
         @rtype: C{bool}
 
         @raise X2GoTerminalSessionException: if the session startup failed
+        @raise X2GoDesktopSharingDenied: if desktop sharing fails because of denial by the user running the desktop to be shared
 
         """
         self.params.rewrite_session_type()
@@ -1433,7 +1434,7 @@ class X2GoTerminalSessionSTDOUT(object):
         # if the first line of stdout is a "DEN(Y)" string then we will presume that
         # we tried to use X2Go desktop sharing and the sharing was rejected
         if "ACCESS DENIED" in _stderr and "XSHAD" in _stderr:
-            raise x2go_exceptions.X2GoDesktopSharingException('X2Go desktop sharing has been denied by the remote user')
+            raise x2go_exceptions.X2GoDesktopSharingDenied('X2Go desktop sharing has been denied by the remote user')
 
         try:
             self.session_info.initialize(_stdout,
diff --git a/x2go/client.py b/x2go/client.py
index 80bb160..210be04 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -385,6 +385,13 @@ class X2GoClient(object):
         """
         self.logger('HOOK_session_startup_failed: session startup for session profile ,,%s'' failed.' % profile_name, loglevel=log.loglevel_WARN)
 
+    def HOOK_desktop_sharing_denied(self, profile_name='UNKNOWN'):
+        """\
+        HOOK method: called if the startup of a shadow session was denied by the other user.
+
+        """
+        self.logger('HOOK_desktop_sharing_failed: desktop sharing for profile ,,%s'' was denied by the other user.' % profile_name, loglevel=log.loglevel_WARN)
+
     def HOOK_list_desktops_timeout(self, profile_name='UNKNOWN'):
         """\
         HOOK method: called if the x2golistdesktops command generates a timeout due to long execution time.
diff --git a/x2go/session.py b/x2go/session.py
index 0febe0d..5a5396c 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -478,6 +478,16 @@ class X2GoSession(object):
         else:
             self.logger('HOOK_session_startup_failed: session startup for session profile ,,%s\'\' failed.' % self.profile_name, loglevel=log.loglevel_WARN)
 
+    def HOOK_desktop_sharing_denied(self):
+        """\
+        HOOK method: called if the startup of a shadow session was denied by the other user.
+
+        """
+        if self.client_instance:
+            self.client_instance.HOOK_desktop_sharing_denied(profile_name=self.profile_name)
+        else:
+            self.logger('HOOK_desktop_sharing_denied: desktop sharing for session profile ,,%s\'\' was denied by the other user.' % self.profile_name, loglevel=log.loglevel_WARN)
+
     def HOOK_list_desktops_timeout(self):
         """\
         HOOK method: called if the x2golistdesktops command generates a timeout due to long execution time.
@@ -2036,7 +2046,7 @@ class X2GoSession(object):
         @return: returns C{True} if starting the session has been successful, C{False} otherwise
         @rtype: C{bool}
 
-        @raise X2GoDesktopSharingException: if the given desktop ID is not an available desktop session on the remote server
+        @raise X2GoDesktopSharingException: if a given desktop ID does not specify an available desktop session
         @raise X2GoSessionException: if the available desktop session appears to be dead, in fact
 
         """
@@ -2074,7 +2084,7 @@ class X2GoSession(object):
         @return: returns C{True} if starting the session has been successful, C{False} otherwise
         @rtype: C{bool}
 
-        @raise X2GoDesktopSharingException: if the given desktop ID is not an available desktop session on the remote server
+        @raise X2GoDesktopSharingException: if a given desktop ID does not specify an available desktop session
         @raise X2GoSessionException: if the available desktop session appears to be dead, in fact
 
         """
@@ -2131,6 +2141,14 @@ class X2GoSession(object):
 
                 raise x2go_exceptions.X2GoSessionException('the session on desktop %s is seemingly dead' % _desktop)
 
+            except x2go_exceptions.X2GoDesktopSharingDenied:
+
+                self._progress_status = -1
+                progress_event.set()
+
+                self.HOOK_desktop_sharing_denied()
+                return False
+
             self._progress_status = 90
             progress_event.set()
 
diff --git a/x2go/x2go_exceptions.py b/x2go/x2go_exceptions.py
index 30985b2..e4a1653 100644
--- a/x2go/x2go_exceptions.py
+++ b/x2go/x2go_exceptions.py
@@ -66,7 +66,8 @@ class X2GoMIMEboxQueueException(_X2GoException): pass
 class X2GoSSHProxyException(_X2GoException): pass
 class X2GoSSHProxyAuthenticationException(_X2GoException): pass
 class X2GoNotImplementedYetException(_X2GoException): pass
-class X2GoDesktopSharingException(_X2GoException): pass
+class X2GoDesktopSharingDenied(_X2GoException): pass
+class X2GoDesktopSharingDenied(_X2GoException): pass
 class X2GoTimeOutException(_X2GoException): pass
 if _X2GOCLIENT_OS != 'Windows':
     # faking Windows errors on non-Windows systems...


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