[X2Go-Commits] python-x2go.git - release/0.4.0.x (branch) updated: 6c87cc5cfc6864e49a435085fd2885fe356a841b

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


The branch, release/0.4.0.x 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