[X2Go-Commits] python-x2go.git - build-baikal (branch) updated: 21c8f1eaffd64391842746ca2475957901b607e2

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


The branch, build-baikal has been updated
       via  21c8f1eaffd64391842746ca2475957901b607e2 (commit)
      from  b5333aed586ed72e33d8346eaf3f8be9594b680f (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 |   11 +++++++++++
 x2go/client.py                    |    2 ++
 x2go/rforward.py                  |   13 ++++++++++---
 x2go/session.py                   |   11 +++++++++++
 4 files changed, 34 insertions(+), 3 deletions(-)

The diff of changes is:
diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py
index 2745d76..4726654 100644
--- a/x2go/backends/terminal/_stdout.py
+++ b/x2go/backends/terminal/_stdout.py
@@ -236,6 +236,7 @@ class X2goTerminalSessionSTDOUT(object):
                  client_rootdir=os.path.join(_LOCAL_HOME, _X2GO_CLIENT_ROOTDIR),
                  sessions_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SESSIONS_ROOTDIR),
                  client_instance=None,
+                 session_instance=None,
                  logger=None, loglevel=log.loglevel_DEFAULT):
         """\
         Initialize an X2go session. With the L{X2goTerminalSessionSTDOUT} class you can start
@@ -293,6 +294,7 @@ class X2goTerminalSessionSTDOUT(object):
         self.print_action = print_action
         self.print_action_args = print_action_args
         self.printing_backend = printing_backend
+        self.session_instance = session_instance
         self.client_instance = client_instance
 
         self._mk_sessions_rootdir(self.params.rootdir)
@@ -342,6 +344,13 @@ class X2goTerminalSessionSTDOUT(object):
             else:
                 raise OSError, e
 
+    def set_session_instance(self, session_instance):
+        """\
+        STILL UNDOCUMENTED
+
+        """
+        self.session_instance = session_instance
+
     def get_session_name(self):
         """\
         STILL UNDOCUMENTED
@@ -379,6 +388,7 @@ class X2goTerminalSessionSTDOUT(object):
                                                        remote_host='localhost', 
                                                        remote_port=4713, 
                                                        ssh_transport=self.control_session.get_transport(),
+                                                       session_instance=self.session_instance,
                                                        logger=self.logger
                                                       )
                 else:
@@ -404,6 +414,7 @@ class X2goTerminalSessionSTDOUT(object):
                                                    remote_host='localhost', 
                                                    remote_port=16001, 
                                                    ssh_transport=self.control_session.get_transport(),
+                                                   session_instance=self.session_instance,
                                                    logger=self.logger
                                                   )
 
diff --git a/x2go/client.py b/x2go/client.py
index 70b3c24..59bf3c9 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -299,6 +299,8 @@ class X2goClient(object):
         self.logger('HOOK_pulseaudio_server_died: The pulseaudio daemon has just died away')
     def HOOK_on_sound_tunnel_failed(self, profile_name='UNKNOWN', session_name='UNKNOWN'):
         self.logger('HOOK_on_sound_tunnel_failed: setting up X2go sound for %s (%s) support failed' % (profile_name, session_name))
+    def HOOK_rforward_request_denied(self, profile_name='UNKNOWN', session_name='UNKNOWN', server_port=0):
+        self.logger('TCP port (reverse) forwarding request for session %s to server port %s has been denied by the X2go server. This is a common issue with SSH, it might help to restart the X2go server\'s SSH daemon.' % (session_name, server_port), loglevel=log.loglevel_WARN)
 
     def HOOK_on_session_has_started_by_me(self, session_uuid='UNKNOWN', profile_name='UNKNOWN', session_name='UNKNOWN'):
         self.logger('HOOK_on_session_has_started_by_me (session_uuid: %s, profile_name: %s): a new session %s has been started by this application' %  (session_uuid, profile_name, session_name), loglevel=log.loglevel_NOTICE)
diff --git a/x2go/rforward.py b/x2go/rforward.py
index 93fa5a0..9a0d0fe 100644
--- a/x2go/rforward.py
+++ b/x2go/rforward.py
@@ -77,7 +77,7 @@ class X2goRevFwTunnel(threading.Thread):
     through Paramiko/SSH.
 
     """
-    def __init__(self, server_port, remote_host, remote_port, ssh_transport, logger=None, loglevel=log.loglevel_DEFAULT):
+    def __init__(self, server_port, remote_host, remote_port, ssh_transport, session_instance=None, logger=None, loglevel=log.loglevel_DEFAULT):
         """\
         Setup a reverse tunnel through Paramiko/SSH.
 
@@ -115,6 +115,7 @@ class X2goRevFwTunnel(threading.Thread):
         self.remote_host = remote_host
         self.remote_port = remote_port
         self.ssh_transport = ssh_transport
+        self.session_instance = session_instance
 
         self.open_channels = {}
         self.incoming_channel = threading.Condition()
@@ -184,8 +185,14 @@ class X2goRevFwTunnel(threading.Thread):
             # if port forward request fails, we try to tell the server to cancel all foregoing port forward requests on 
             # self.server_port
             self.ssh_transport.cancel_port_forward('', self.server_port)
-            gevent.sleep(0.5)
-            self._requested_port = self.ssh_transport.request_port_forward('', self.server_port, handler=x2go_transport_tcp_handler)
+            gevent.sleep(1)
+            try:
+                self._requested_port = self.ssh_transport.request_port_forward('', self.server_port, handler=x2go_transport_tcp_handler)
+            except paramiko.SSHException, e:
+                if self.session_instance:
+                    self.session_instance.HOOK_rforward_request_denied(server_port=self.server_port)
+                else:
+                    self.logger('Encountered SSHException: %s (for reverse TCP port forward with local destination port %s' % (str(e), self.server_port), loglevel=log.loglevel_WARN)
 
     def run(self):
         """\
diff --git a/x2go/session.py b/x2go/session.py
index f7dd3d6..fdde85b 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -183,6 +183,16 @@ class X2goSession(object):
         self.init_control_session()
         self.terminal_session = None
 
+    def HOOK_rforward_request_denied(self, server_port=0):
+        """\
+        STILL UNDOCUMENTED
+
+        """
+        if self.client_instance:
+            self.client_instance.HOOK_rforward_request_denied(profile_name=self.profile_name, session_name=self.session_name, server_port=server_port)
+        else:
+            self.logger('TCP port (reverse) forwarding request for session %s to server port %s has been denied by server %s. This is a common issue with SSH, it might help to restart the server\'s SSH daemon.' % (self.session_name, server_port, self.profile_name), loglevel=log.loglevel_WARN)
+
     def init_control_session(self):
         """\
         STILL UNDOCUMENTED
@@ -613,6 +623,7 @@ class X2goSession(object):
             _terminal = _control.resume(session_name=self.session_name, 
                                         logger=self.logger, **self.terminal_params)
             self.terminal_session = _terminal
+            self.terminal_session.set_session_instance(self)
 
             if self.session_name is None:
                 _new_session = True


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