This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch brokerclient in repository python-x2go. from 8014735 Provide basic session profile backend for a http broker. new a473529 brokerclient: adapt to recent changes in the JSON webUI of the broker new 882d76a logger: don't write the complete given URL to the log new b2062ab drop debug code new 921fa74 Make session profile backends more unicode robust. new 36ec609 more work on session broker client code (connecting to a session now works) The 5 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: debian/changelog | 1 + x2go/backends/profiles/base.py | 18 +++++----- x2go/backends/profiles/httpbroker.py | 66 ++++++++++++++++++++++++---------- x2go/client.py | 15 +++++--- 4 files changed, 69 insertions(+), 31 deletions(-) -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch brokerclient in repository python-x2go. commit 882d76ad24675c8162807c893405a557688af8f5 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sun Mar 9 12:46:30 2014 +0100 logger: don't write the complete given URL to the log --- x2go/backends/profiles/httpbroker.py | 1 + x2go/client.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/x2go/backends/profiles/httpbroker.py b/x2go/backends/profiles/httpbroker.py index c24f46d..9b7994a 100644 --- a/x2go/backends/profiles/httpbroker.py +++ b/x2go/backends/profiles/httpbroker.py @@ -84,6 +84,7 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): self.broker_url = "{protocol}://{hostname}{port}{path}".format(**p) base.X2GoSessionProfiles.__init__(self, session_profile_defaults=session_profile_defaults, logger=logger, loglevel=loglevel) + self.logger("Using session broker at URL: %s" % self.broker_url, log.loglevel_NOTICE) def broker_simpleauth(self, broker_user, broker_password): payload = { diff --git a/x2go/client.py b/x2go/client.py index b0bace6..51fcb5c 100644 --- a/x2go/client.py +++ b/x2go/client.py @@ -274,7 +274,6 @@ class X2GoClient(object): if broker_url.startswith('ssh://'): profiles_backend = 'sshbroker' elif broker_url.startswith('http://') or broker_url.startswith('https://'): - self.logger('using http(s) broker at URL %s' % broker_url, loglevel=log.loglevel_NOTICE) profiles_backend = 'httpbroker' self.profiles_backend = utils._get_backend_class(profiles_backend, "X2GoSessionProfiles") self.settings_backend = utils._get_backend_class(settings_backend, "X2GoClientSettings") -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch brokerclient in repository python-x2go. commit a4735298c176afa74cdd05cac4c07bc87b38eff5 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sun Mar 9 12:46:03 2014 +0100 brokerclient: adapt to recent changes in the JSON webUI of the broker --- x2go/backends/profiles/httpbroker.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/x2go/backends/profiles/httpbroker.py b/x2go/backends/profiles/httpbroker.py index 1739597..c24f46d 100644 --- a/x2go/backends/profiles/httpbroker.py +++ b/x2go/backends/profiles/httpbroker.py @@ -99,13 +99,14 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): def broker_listsessions(self): payload = { - 'task': 'listsessions', + 'task': 'listprofiles', 'user': self.broker_user, 'password': self.broker_password, } r = requests.post(self.broker_url, data=payload) if r.status_code == 200 and r.headers['content-type'].startswith("text/json"): - return json.loads(r.text) + payload = json.loads(r.text) + return payload['profiles'] if payload['task'] == 'listprofiles' else {} def _populate_session_profiles(self): """\ -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch brokerclient in repository python-x2go. commit b2062ab44f0ff4e596e044799e8c1193441860df Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sun Mar 9 12:50:31 2014 +0100 drop debug code --- x2go/client.py | 1 - 1 file changed, 1 deletion(-) diff --git a/x2go/client.py b/x2go/client.py index 51fcb5c..b64fe9f 100644 --- a/x2go/client.py +++ b/x2go/client.py @@ -269,7 +269,6 @@ class X2GoClient(object): self.info_backend = utils._get_backend_class(info_backend, "X2GoServerSessionInfo") self.list_backend = utils._get_backend_class(list_backend, "X2GoServerSessionList") self.proxy_backend = utils._get_backend_class(proxy_backend, "X2GoProxy") - print broker_url if broker_url is not None: if broker_url.startswith('ssh://'): profiles_backend = 'sshbroker' -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch brokerclient in repository python-x2go. commit 921fa74fdd6c70c12de8110d4a2652ff4b215431 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Mar 10 16:03:11 2014 +0100 Make session profile backends more unicode robust. --- debian/changelog | 1 + x2go/backends/profiles/base.py | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3d245b2..3d7ff02 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,7 @@ python-x2go (0.5.0.0-0x2go1) UNRELEASED; urgency=low - Fix setting default values in X2GoClientXConfig class. - Default to xdg-open as default PDF viewer command. - Provide basic session profile backend for a http broker. + - Make session profile backends more unicode robust. -- Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Sun, 05 Jan 2014 16:35:57 +0100 diff --git a/x2go/backends/profiles/base.py b/x2go/backends/profiles/base.py index 7660165..541e521 100644 --- a/x2go/backends/profiles/base.py +++ b/x2go/backends/profiles/base.py @@ -153,7 +153,7 @@ class X2GoSessionProfiles(): _metatype = 'RDP/direct' else: _metatype = 'not supported' - self._profile_metatypes[_profile_id] = _metatype + self._profile_metatypes[_profile_id] = unicode(_metatype) else: return self._profile_metatypes[_profile_id] @@ -240,7 +240,7 @@ class X2GoSessionProfiles(): _export_path = ':'.join(_path.split(':')[:-1]) value[_export_path] = _auto_export_path - return value + return unicode(value) else: raise X2GoProfileException('no such session profile parameter: %s' % parameter) @@ -305,7 +305,7 @@ class X2GoSessionProfiles(): @rtype: C{bool} """ - return profile_id in self.profile_ids + return unicode(profile_id) in self.profile_ids @property def profile_names(self): @@ -328,7 +328,7 @@ class X2GoSessionProfiles(): @rtype: C{bool} """ - return profile_name in self.profile_names + return unicode(profile_name) in self.profile_names def to_profile_id(self, profile_name): """\ @@ -343,7 +343,7 @@ class X2GoSessionProfiles(): """ _profile_ids = [ p for p in self.profile_ids if self.to_profile_name(p) == profile_name ] if len(_profile_ids) == 1: - return _profile_ids[0] + return unicode(_profile_ids[0]) elif len(_profile_ids) == 0: return None else: @@ -362,9 +362,9 @@ class X2GoSessionProfiles(): """ _profile_config = self.get_profile_config(profile_id=profile_id) if _profile_config.has_key('name'): - return _profile_config['name'] + return unicode(_profile_config['name']) else: - return '' + return u'' def add_profile(self, profile_id=None, force_add=False, **kwargs): """\ @@ -398,7 +398,7 @@ class X2GoSessionProfiles(): self._cached_profile_ids = [] self._cached_profile_names = [] - return profile_id + return unicode(profile_id) def delete_profile(self, profile_id_or_name): """\ @@ -497,6 +497,8 @@ class X2GoSessionProfiles(): _profile_id = profile_id_or_name else: raise X2GoProfileException('No session profile with id or name ,,%s\'\' exists.' % profile_id_or_name) + if _profile_id is not None: + _profile_id = unicode(_profile_id) return _profile_id def to_session_params(self, profile_id_or_name=None, profile_id=None): -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch brokerclient in repository python-x2go. commit 36ec609d03eb3bc6c43139e84f2c2b5901273582 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Mar 10 16:08:20 2014 +0100 more work on session broker client code (connecting to a session now works) --- x2go/backends/profiles/httpbroker.py | 60 ++++++++++++++++++++++++---------- x2go/client.py | 13 ++++++-- 2 files changed, 54 insertions(+), 19 deletions(-) diff --git a/x2go/backends/profiles/httpbroker.py b/x2go/backends/profiles/httpbroker.py index 9b7994a..c2f8f12 100644 --- a/x2go/backends/profiles/httpbroker.py +++ b/x2go/backends/profiles/httpbroker.py @@ -29,6 +29,7 @@ __NAME__ = 'x2gosessionprofiles-pylib' import copy import re import requests +import types try: import simplejson as json except ImportError: import json @@ -46,7 +47,7 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): def __init__(self, session_profile_defaults=None, broker_url="http://localhost:8080/json/", - broker_user=None, + broker_username=None, broker_password=None, logger=None, loglevel=log.loglevel_DEFAULT, **kwargs): @@ -68,9 +69,9 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): match = re.match('^(?P<protocol>(http(|s)))://(|(?P<user>[a-zA-Z0-9_\.-]+)(|:(?P<password>.*))@)(?P<hostname>[a-zA-Z0-9\.-]+)(|:(?P<port>[0-9]+))($|/(?P<path>.*)$)', broker_url) p = match.groupdict() if p['user']: - self.broker_user = p['user'] + self.broker_username = p['user'] else: - self.broker_user = broker_user + self.broker_username = broker_username if p['password']: self.broker_password = p['password'] else: @@ -86,29 +87,47 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): base.X2GoSessionProfiles.__init__(self, session_profile_defaults=session_profile_defaults, logger=logger, loglevel=loglevel) self.logger("Using session broker at URL: %s" % self.broker_url, log.loglevel_NOTICE) - def broker_simpleauth(self, broker_user, broker_password): - payload = { - 'user': broker_user, + def get_broker_username(self): + return self.broker_username + + def get_broker_url(self): + return self.broker_url + + def broker_simpleauth(self, broker_username, broker_password): + request_data = { + 'user': broker_username, 'password': broker_password, } - r = requests.post(self.broker_url, data=payload) + r = requests.post(self.broker_url, data=request_data) if r.status_code == 200: - self.broker_user = broker_user + self.broker_username = broker_username self.broker_password = broker_password return True return False - def broker_listsessions(self): - payload = { + def broker_listprofiles(self): + request_data = { 'task': 'listprofiles', - 'user': self.broker_user, + 'user': self.broker_username, 'password': self.broker_password, } - r = requests.post(self.broker_url, data=payload) + r = requests.post(self.broker_url, data=request_data) if r.status_code == 200 and r.headers['content-type'].startswith("text/json"): payload = json.loads(r.text) return payload['profiles'] if payload['task'] == 'listprofiles' else {} + def broker_selectsession(self, profile_id): + request_data = { + 'task': 'selectsession', + 'profile-id': profile_id, + 'user': self.broker_username, + 'password': self.broker_password, + } + r = requests.post(self.broker_url, data=request_data) + if r.status_code == 200 and r.headers['content-type'].startswith("text/json"): + payload = json.loads(r.text) + return payload['selected_session'] if payload['task'] == 'selectsession' else {} + def _populate_session_profiles(self): """\ Populate the set of session profiles by loading the session @@ -118,11 +137,15 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): @rtype: C{dict} """ - session_profiles = self.broker_listsessions() + session_profiles = self.broker_listprofiles() _session_profiles = copy.deepcopy(session_profiles) for session_profile in _session_profiles: + session_profile = unicode(session_profile) for key, default_value in self.defaultSessionProfile.iteritems(): + key = unicode(key) + if type(default_value) is types.StringType: + default_value = unicode(default_value) if not session_profiles[session_profile].has_key(key): session_profiles[session_profile][key] = default_value @@ -132,16 +155,19 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): print "not suported" def _delete_profile(self, profile_id): - del self.session_profiles[profile_id] + del self.session_profiles[unicode(profile_id)] def _update_value(self, profile_id, option, value): - self.session_profiles[profile_id][option] = value + if type(value) is types.StringType: + value = unicode(value) + self.session_profiles[unicode(profile_id)][unicode(option)] = value def _get_profile_parameter(self, profile_id, option, key_type): - return key_type(self.session_profiles[profile_id][option]) + return key_type(self.session_profiles[unicode(profile_id)][unicode(option)]) def _get_profile_options(self, profile_id): - return self.session_profiles[profile_id].keys() + return self.session_profiles[unicode(profile_id)].keys() def _get_profile_ids(self): + self.session_profiles.keys() return self.session_profiles.keys() diff --git a/x2go/client.py b/x2go/client.py index b64fe9f..d23d807 100644 --- a/x2go/client.py +++ b/x2go/client.py @@ -871,10 +871,15 @@ class X2GoClient(object): """ # detect profile name and profile id properly + if profile_id and self.session_profiles.has_profile_id(profile_id): _p = profile_id elif profile_name and self.session_profiles.has_profile_name(profile_name): _p = profile_name + elif profile_id and self.session_profiles.check_profile_id_or_name(profile_id): + _p = self.session_profiles.check_profile_id_or_name(profile_id) + elif profile_name and self.session_profiles.check_profile_id_or_name(profile_name): + _p = self.session_profiles.check_profile_id_or_name(profile_name) else: _p = None @@ -892,7 +897,6 @@ class X2GoClient(object): if known_hosts is None: known_hosts = os.path.join(_LOCAL_HOME, self.ssh_rootdir, 'known_hosts') - if _p: _params = self.session_profiles.to_session_params(profile_id=_profile_id) @@ -903,7 +907,12 @@ class X2GoClient(object): if k in kwargs.keys(): _params[k] = kwargs[k] - server = _params['server'] + if hasattr(self.session_profiles, 'broker_selectsession'): + selected_session = self.session_profiles.broker_selectsession(_p) + server = selected_session['server'] + _params['port'] = int(selected_session['port']) + else: + server = _params['server'] del _params['server'] _params['client_instance'] = self -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git