The branch, twofactorauth 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@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).