This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository python-x2go. commit 2cc0568307db4c231eb3566b4d06a8d60f8c7cb9 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Mar 24 13:49:55 2014 +0100 Allow catching "connection refused" errors while talking to an X2Go Session Broker (X2GoBrokerConnectionException). --- debian/changelog | 2 ++ x2go/backends/profiles/httpbroker.py | 21 +++++++++++++++++---- x2go/x2go_exceptions.py | 2 ++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1907a4b..b41a366 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,8 @@ python-x2go (0.5.0.0-0x2go1) UNRELEASED; urgency=low - Speed-optimize session profile ID <-> name mapping. - Handle injection of PKey (Paramiko SSH key) objects for authentication from the broker session profiles backend. + - Allow catching "connection refused" errors while talking to an X2Go + Session Broker (X2GoBrokerConnectionException). * debian/control: + Add dependencies: python-requests, python-simplejson. * python-x2go.spec: diff --git a/x2go/backends/profiles/httpbroker.py b/x2go/backends/profiles/httpbroker.py index 30e9b54..e8a2684 100644 --- a/x2go/backends/profiles/httpbroker.py +++ b/x2go/backends/profiles/httpbroker.py @@ -40,6 +40,7 @@ from x2go.defaults import CURRENT_LOCAL_USER as _CURRENT_LOCAL_USER import x2go.backends.profiles.base as base import x2go.log as log from x2go.utils import genkeypair +import x2go.x2go_exceptions from x2go.x2go_exceptions import X2GoNotImplementedYetException @@ -136,7 +137,10 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): 'user': broker_username or '', 'password': broker_password or '', } - r = requests.post(self.broker_url, data=request_data) + try: + r = requests.post(self.broker_url, data=request_data) + except requests.exceptions.ConnectionError: + raise x2go.x2go_exceptions.X2GoBrokerConnectionException('Failed to connect to URL %s' % self.broker_url) if r.status_code == 200: self.broker_username = broker_username or '' self.broker_password = broker_password or '' @@ -167,7 +171,10 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): def is_broker_authenticated(self): if self._broker_auth_successful is None: # do a test auth against the given broker URL - self.broker_simpleauth(self.broker_username, self.broker_password) + try: + self.broker_simpleauth(self.broker_username, self.broker_password) + except x2go.x2go_exceptions.X2GoBrokerConnectionException: + self._broker_auth_successful = False return self._broker_auth_successful def broker_listprofiles(self): @@ -177,7 +184,10 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): 'user': self.broker_username, 'password': self.broker_password, } - r = requests.post(self.broker_url, data=request_data) + try: + r = requests.post(self.broker_url, data=request_data) + except requests.exceptions.ConnectionError: + raise x2go.x2go_exceptions.X2GoBrokerConnectionException('Failed to connect to URL %s' % self.broker_url) if r.status_code == 200 and r.headers['content-type'].startswith("text/json"): payload = json.loads(r.text) if payload.has_key('mutable_profile_ids'): @@ -197,7 +207,10 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): 'password': self.broker_password, 'pubkey': self.broker_my_pubkey, } - r = requests.post(self.broker_url, data=request_data) + try: + r = requests.post(self.broker_url, data=request_data) + except requests.exceptions.ConnectionError: + raise x2go.x2go_exceptions.X2GoBrokerConnectionException('Failed to connect to URL %s' % self.broker_url) if r.status_code == 200 and r.headers['content-type'].startswith("text/json"): payload = json.loads(r.text) self._broker_profile_cache[profile_id] = payload['selected_session'] if payload['task'] == 'selectsession' else {} diff --git a/x2go/x2go_exceptions.py b/x2go/x2go_exceptions.py index 0ee1f57..2cda50c 100644 --- a/x2go/x2go_exceptions.py +++ b/x2go/x2go_exceptions.py @@ -69,6 +69,7 @@ class X2GoNotImplementedYetException(_X2GoException): pass class X2GoDesktopSharingDenied(_X2GoException): pass class X2GoDesktopSharingDenied(_X2GoException): pass class X2GoTimeOutException(_X2GoException): pass +class X2GoBrokerConnectionException(_X2GoException): pass if _X2GOCLIENT_OS != 'Windows': # faking Windows errors on non-Windows systems... class WindowsError(_X2GoException): pass @@ -100,3 +101,4 @@ class X2goSSHProxyAuthenticationException(_X2GoException): pass class X2goNotImplementedYetException(_X2GoException): pass class X2goDesktopSharingException(_X2GoException): pass class X2goTimeOutException(_X2GoException): pass + -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git