[X2Go-Commits] python-x2go.git - brokerclient (branch) updated: 6c87cc5cfc6864e49a435085fd2885fe356a841b

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


The branch, brokerclient has been updated
       via  6c87cc5cfc6864e49a435085fd2885fe356a841b (commit)
      from  b54973e98c0dae4a7846392a74bb546e6cf1aae1 (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                  |    8 ++++++++
 x2go/__init__.py                  |    2 +-
 x2go/backends/proxy/base.py       |   10 ++++++++--
 x2go/backends/terminal/_stdout.py |   20 +++++++++-----------
 x2go/client.py                    |    3 ++-
 x2go/forward.py                   |   23 ++++++++++++++++++-----
 x2go/session.py                   |   12 +++++++++++-
 7 files changed, 57 insertions(+), 21 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 07cacaf..d20d79d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+python-x2go (0.0.36-0~nwt1) lucid maverick testing unstable; urgency=low
+
+  * fixed non-starting sshfs issue
+  * made XServer VcXsrv known to Python X2go (relevant for Windows)
+  * catching forward tunnel setup failure by session and client hook method
+
+ -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Thu, 20 Jan 2011 23:00:00 +0100
+
 python-x2go (0.0.35-0~nwt1) lucid maverick testing unstable; urgency=low
 
   * added PulseAudio support for Windows
diff --git a/x2go/__init__.py b/x2go/__init__.py
index c1752e7..98c326a 100644
--- a/x2go/__init__.py
+++ b/x2go/__init__.py
@@ -153,7 +153,7 @@ Contact
 """
 
 __NAME__    = 'python-x2go'
-__VERSION__ = '0.0.35'
+__VERSION__ = '0.0.36'
 
 from gevent import monkey
 monkey.patch_all()
diff --git a/x2go/backends/proxy/base.py b/x2go/backends/proxy/base.py
index 2760fed..33a418f 100644
--- a/x2go/backends/proxy/base.py
+++ b/x2go/backends/proxy/base.py
@@ -72,7 +72,8 @@ class X2goProxyBASE(threading.Thread):
 
     def __init__(self, session_info=None, 
                  ssh_transport=None, session_log="session.log", 
-                 sessions_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SESSIONS_ROOTDIR), 
+                 sessions_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SESSIONS_ROOTDIR),
+                 session_instance=None,
                  logger=None, loglevel=log.loglevel_DEFAULT, ):
         """\
         @param session_info: session information provided as an C{X2goServerSessionInfo} backend
@@ -100,6 +101,7 @@ class X2goProxyBASE(threading.Thread):
         self.session_info = session_info
         self.ssh_transport = ssh_transport
         self.session_log = session_log
+        self.session_instance = session_instance
         self.PROXY_ENV = os.environ.copy()
         self.proxy = None
 
@@ -161,7 +163,11 @@ class X2goProxyBASE(threading.Thread):
 
         local_graphics_port = self.session_info.graphics_port
         local_graphics_port = utils.detect_unused_port(bind_address='', preferred_port=local_graphics_port)
-        self.fw_tunnel = forward.start_forward_tunnel(local_port=local_graphics_port, remote_port=self.session_info.graphics_port, ssh_transport=self.ssh_transport, logger=self.logger, )
+        self.fw_tunnel = forward.start_forward_tunnel(local_port=local_graphics_port, 
+                                                      remote_port=self.session_info.graphics_port, 
+                                                      ssh_transport=self.ssh_transport, 
+                                                      session_instance=self.session_instance,
+                                                      logger=self.logger, )
 
         # update the proxy port in PROXY_ARGS
         self._update_local_proxy_socket(local_graphics_port)
diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py
index ea5dc88..e9c2342 100644
--- a/x2go/backends/terminal/_stdout.py
+++ b/x2go/backends/terminal/_stdout.py
@@ -289,7 +289,7 @@ class X2goTerminalSessionSTDOUT(object):
         self.params.update()
 
         self.profile_name = profile_name
-        self.proxy_class = proxy_backend
+        self.proxy_backend = proxy_backend
 
         self.snd_port = snd_port
         self.print_action = print_action
@@ -715,13 +715,9 @@ class X2goTerminalSessionSTDOUT(object):
                      ">& /dev/null & exit",
                    ]
 
-        print 'SOUNDSYSTEM: %s' % self.params.snd_system
-
         if self.params.snd_system == 'pulse':
             cmd_line = [ 'PULSE_CLIENTCONFIG=%s/.pulse-client.conf' % self.session_info.remote_container ] + cmd_line
 
-        print cmd_line
-
         (stdin, stdout, stderr) = self.control_session._x2go_exec_command(cmd_line)
 
         return stdout.read(), stderr.read()
@@ -818,9 +814,10 @@ class X2goTerminalSessionSTDOUT(object):
                                                                )
 
         # set up SSH tunnel for X11 graphical elements
-        self.proxy = self.proxy_class(session_info=self.session_info, 
+        self.proxy = self.proxy_backend(session_info=self.session_info, 
                                       ssh_transport=self.control_session.get_transport(), 
                                       sessions_rootdir=self.sessions_rootdir, 
+                                      session_instance=self.session_instance,
                                       logger=self.logger)
         self.proxy_subprocess = self.proxy.start_proxy()
         self.active_threads.append(self.proxy)
@@ -853,11 +850,12 @@ class X2goTerminalSessionSTDOUT(object):
 
         (stdin, stdout, stderr) = self.control_session._x2go_exec_command(cmd_line)
 
-        self.proxy = self.proxy_class(session_info=self.session_info, 
-                                      ssh_transport=self.control_session.get_transport(), 
-                                      sessions_rootdir=self.sessions_rootdir,
-                                      logger=self.logger
-                                     )
+        self.proxy = self.proxy_backend(session_info=self.session_info, 
+                                        ssh_transport=self.control_session.get_transport(), 
+                                        sessions_rootdir=self.sessions_rootdir,
+                                        session_instance=self.session_instance,
+                                        logger=self.logger
+                                       )
         self.proxy_subprocess = self.proxy.start_proxy()
 
         # local path may be a Windows path, so we use the path separator of the local system
diff --git a/x2go/client.py b/x2go/client.py
index 59bf3c9..d5b2078 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -301,7 +301,8 @@ class X2goClient(object):
         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_forwarding_tunnel_setup_failed(self, profile_name='UNKNOWN', session_name='UNKNOWN', chain_host='UNKNOWN', chain_port=0):
+        self.logger('Forwarding tunnel request to [%s]:%s for session %s (%s) was denied by remote X2go/SSH server. Session startup failed.' % (chain_host, chain_port, self.session_name, self.profile_name), loglevel=log.loglevel_ERROR)
     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)
     def HOOK_on_session_has_started_by_other(self, session_uuid='UNKNOWN', profile_name='UNKNOWN', session_name='UNKNOWN'):
diff --git a/x2go/forward.py b/x2go/forward.py
index 61ee3fd..74378a9 100644
--- a/x2go/forward.py
+++ b/x2go/forward.py
@@ -59,7 +59,7 @@ class X2goFwServer(StreamServer):
     @type loglevel: C{int}
 
     """
-    def __init__ (self, listener, remote_host, remote_port, ssh_transport, logger=None, loglevel=log.loglevel_DEFAULT,):
+    def __init__ (self, listener, remote_host, remote_port, ssh_transport, session_instance=None, logger=None, loglevel=log.loglevel_DEFAULT,):
         if logger is None:
             self.logger = log.X2goLogger(loglevel=loglevel)
         else:
@@ -72,6 +72,7 @@ class X2goFwServer(StreamServer):
         self.chain_host = remote_host
         self.chain_port = remote_port
         self.ssh_transport = ssh_transport
+        self.session_instance = session_instance
 
         StreamServer.__init__(self, listener, self.x2go_forward_tunnel_handle)
 
@@ -94,11 +95,12 @@ class X2goFwServer(StreamServer):
             self.logger('incoming request to %s:%d failed: %s' % (self.chain_host,
                                                                   self.chain_port,
                                                                   repr(e)), loglevel=log.loglevel_ERROR)
-            raise x2go_exceptions.X2goFwTunnelException('forwarding tunnel setup failed')
 
         if self.chan is None:
             self.logger('incoming request to %s:%d was rejected by the SSH server.' %
                         (self.chain_host, self.chain_port), loglevel=log.loglevel_ERROR)
+            if self.session_instance:
+                self.session_instance.HOOK_forwarding_tunnel_setup_failed(chain_host=self.chain_host, chain_port=self.chain_port)
             return
         self.logger('connected!  Tunnel open %r -> %r -> %r' % (fw_socket.getpeername(),
                                                                 chan_peername, (self.chain_host, self.chain_port)),
@@ -135,19 +137,26 @@ class X2goFwServer(StreamServer):
 
 def start_forward_tunnel(local_host='localhost', local_port=22022,
                          remote_host='localhost', remote_port=22,
-                         ssh_transport=None, logger=None, ):
+                         ssh_transport=None, 
+                         session_instance=None,
+                         logger=None, ):
     """\
     Setup up a Paramiko/SSH port forwarding tunnel (like openssh -L option).
 
     The tunnel is used to transport X2go graphics data through a proxy application like nxproxy.
 
-    @param local_port: local starting point of the forwarding tunnel
+    @param local_host: local starting point of the forwarding tunnel
+    @type local_host: C{int}
+    @param local_port: listen port of the local starting point
     @type local_port: C{int}
     @param remote_host: from the endpoint of the tunnel, connect to host C{<remote_host>}...
     @type remote_host: C{str}
     @param remote_port: ... on port C{<remote_port>}
     @type remote_port: C{int}
     @param ssh_transport: the Paramiko/SSH transport (i.e. the X2go sessions Paramiko/SSH transport object)
+    @type ssh_transport: C{instance}
+    @param session_instance: the L{X2goSession} instance that initiates this tunnel
+    @type session_instance: C{instance}
     @param logger: an X2goLogger object
     @type logger: C{instance}
 
@@ -156,7 +165,11 @@ def start_forward_tunnel(local_host='localhost', local_port=22022,
 
     """
     try:
-        fw_server = X2goFwServer(listener=(local_host, local_port), remote_host=remote_host, remote_port=remote_port, ssh_transport=ssh_transport, logger=logger)
+        fw_server = X2goFwServer(listener=(local_host, local_port), 
+                                 remote_host=remote_host, remote_port=remote_port, 
+                                 ssh_transport=ssh_transport, session_instance=session_instance, 
+                                 logger=logger, 
+                                )
         try:
             fw_server.start()
             return fw_server
diff --git a/x2go/session.py b/x2go/session.py
index ee81ce0..a96b500 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -194,6 +194,16 @@ class X2goSession(object):
         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 HOOK_forwarding_tunnel_setup_failed(self, chain_host='UNKNOWN', chain_port=0):
+        """\
+        STILL UNDOCUMENTED
+
+        """
+        if self.client_instance:
+            self.client_instance.HOOK_forwarding_tunnel_setup_failed(profile_name=self.profile_name, session_name=self.session_name, chain_host=chain_host, chain_port=chain_port)
+        else:
+            self.logger('Forwarding tunnel request to [%s]:%s for session %s (%s) was denied by remote X2go/SSH server. Session startup failed.' % (chain_host, chain_port, self.session_name, self.profile_name), loglevel=log.loglevel_WARN)
+
     def init_control_session(self):
         """\
         STILL UNDOCUMENTED
@@ -638,7 +648,7 @@ class X2goSession(object):
 
                 if (SUPPORTED_PRINTING and self.printing) or \
                    (SUPPORTED_DROPBOX and self.allow_dropbox) or \
-                   (SUPPORTED_FOLDERSHARING and self.allow_share_local_folders and self.share_local_folders):
+                   (SUPPORTED_FOLDERSHARING and self.allow_share_local_folders):
                     _terminal.start_sshfs()
 
                 try:


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