[X2Go-Commits] python-x2go.git - twofactorauth (branch) updated: 21c8f1eaffd64391842746ca2475957901b607e2
X2Go dev team
git-admin at x2go.org
Sat Sep 14 15:55:52 CEST 2013
The branch, twofactorauth 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