The branch, twofactorauth has been updated via a786acc8b8b6e5cd558fa702be6a9718ab812550 (commit) from 12260727cde62560a4549f8f9736b63becbe58c9 (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/__init__.py | 2 +- x2go/backends/control/stdout.py | 24 +++++++++++++++++------- x2go/backends/terminal/stdout.py | 36 +++++++++++++++++++++++++++++------- x2go/session.py | 1 + x2go/utils.py | 4 ++-- 5 files changed, 50 insertions(+), 17 deletions(-) The diff of changes is: diff --git a/x2go/__init__.py b/x2go/__init__.py index 4022a13..71455ab 100644 --- a/x2go/__init__.py +++ b/x2go/__init__.py @@ -153,7 +153,7 @@ Contact """ __NAME__ = 'python-x2go' -__VERSION__ = '0.0.22' +__VERSION__ = '0.0.23' from gevent import monkey monkey.patch_all() diff --git a/x2go/backends/control/stdout.py b/x2go/backends/control/stdout.py index f9f32ef..9bda4de 100644 --- a/x2go/backends/control/stdout.py +++ b/x2go/backends/control/stdout.py @@ -43,6 +43,21 @@ from x2go.backends.info import X2goServerSessionInfo as _X2goServerSessionInfo from x2go.backends.info import X2goServerSessionList as _X2goServerSessionList from x2go.backends.proxy import X2goProxy as _X2goProxy +def _rerewrite_blanks(cmd): + # X2go run command replace X2GO_SPACE_CHAR string with blanks + if cmd: + cmd = cmd.replace("X2GO_SPACE_CHAR", " ") + return cmd + +def _rewrite_password(cmd, password): + + # if there is a ,,-p :X2GOPASSWORD:'' parameter in RDP options then we will replace + # it by our X2go session password + if cmd: + cmd = cmd.replace(':X2GOPASSWORD:', password) + return cmd + + class X2goControlSessionSTDOUT(paramiko.SSHClient): """\ STILL UNDOCUMENTED @@ -122,13 +137,8 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient): timeout = gevent.Timeout(10) timeout.start() try: - self.logger('executing command on X2go server: %s' % cmd, loglevel) - return self.exec_command(cmd, **kwargs) - #g = gevent.spawn(self.exec_command, cmd, **kwargs) - #if g.exception is None: - # return g.get(block=True, timeout=10) - #else: - # raise g.exception + self.logger('executing command on X2go server: %s' % _rerewrite_blanks(cmd), loglevel) + return self.exec_command(_rewrite_password(cmd, self._session_password), **kwargs) except AttributeError: raise x2go_exceptions.X2goControlSessionException('the X2go control session has died unexpectedly') except EOFError: diff --git a/x2go/backends/terminal/stdout.py b/x2go/backends/terminal/stdout.py index 9d1ca62..1f260ae 100644 --- a/x2go/backends/terminal/stdout.py +++ b/x2go/backends/terminal/stdout.py @@ -56,7 +56,7 @@ from x2go.backends.info import X2goServerSessionInfo as _X2goServerSessionInfo from x2go.backends.info import X2goServerSessionList as _X2goServerSessionList from x2go.backends.proxy import X2goProxy as _X2goProxy -def _rewrite_cmd(cmd): +def _rewrite_cmd(cmd, params=None): # start with an empty string cmd = cmd or '' @@ -65,8 +65,11 @@ def _rewrite_cmd(cmd): if cmd in defaults.window_managers.keys(): cmd = defaults.window_managers[cmd] - # X2go run command replace X2GO_SPACE_CHAR string with blanks - cmd.replace(" ", "X2GO_SPACE_CHAR") + if (cmd == 'RDP') and (type(params) == X2goSessionParams): + if params.geometry == 'fullscreen': + cmd = 'rdesktop -f -N %s %s' % (params.rdp_options, params.rdp_server) + else: + cmd = 'rdesktop -g %s -N %s %s' % (params.geometry, params.rdp_options, params.rdp_server) # place quot marks around cmd if not empty string if cmd: @@ -74,6 +77,13 @@ def _rewrite_cmd(cmd): return cmd +def _rewrite_blanks(cmd): + # X2go run command replace X2GO_SPACE_CHAR string with blanks + if cmd: + cmd = cmd.replace(" ", "X2GO_SPACE_CHAR") + return cmd + + class X2goSessionParams(object): """\ The L{X2goSessionParams} class is used to store all parameters that @@ -100,10 +110,16 @@ class X2goSessionParams(object): self.session_type = 'D' return if cmd: - if cmd in defaults.window_managers.keys(): + if cmd == 'RDP': + self.session_type = 'R' + return + if cmd.startswith('rdesktop'): + self.session_type = 'R' + return + elif cmd in defaults.window_managers.keys(): self.session_type = 'D' return - if os.path.basename(cmd) in defaults.window_managers.values(): + elif os.path.basename(cmd) in defaults.window_managers.values(): self.session_type = 'D' return self.session_type = 'R' @@ -199,6 +215,7 @@ class X2goTerminalSessionSTDOUT(object): geometry="800x600", depth=24, link="adsl", pack="16m-jpeg-9", cache_type="unix-kde", kblayout='us', kbtype='pc105/us', session_type="application", snd_system='pulse', cmd=None, + rdp_server=None, rdp_options=None, rootdir=None, profile_name='UNKNOWN', profile_id=utils._genSessionProfileId(), print_action=None, print_action_args={}, @@ -241,6 +258,10 @@ class X2goTerminalSessionSTDOUT(object): self.params.kbtype = kbtype self.params.snd_system = snd_system self.params.cmd = cmd + + self.params.rdp_server = rdp_server + self.params.rdp_options = rdp_options + self.params.rootdir = (type(rootdir) is types.StringType) and rootdir or os.path.join(_LOCAL_HOME,_X2GO_SESSION_ROOTDIR) self.params.update() @@ -546,12 +567,11 @@ class X2goTerminalSessionSTDOUT(object): str(self.session_info.agent_pid), str(self.session_info.name), str(self.session_info.snd_port), - _rewrite_cmd(self.params.cmd), + _rewrite_blanks(_rewrite_cmd(self.params.cmd, params=self.params)), str(self.params.snd_system), str(self.params.session_type), ">& /dev/null & exit", ] - if self.params.snd_system is 'pulse': cmd_line = [ 'PULSE_CLIENTCONFIG=%s/.pulse-client.conf' % self.session_info.remote_container ] + cmd_line @@ -614,6 +634,8 @@ class X2goTerminalSessionSTDOUT(object): if self.params.kblayout or self.params.kbtype: setkbd = "1" + self.params.update() + cmd_line = [ "x2gostartagent", str(self.params.geometry), str(self.params.link), diff --git a/x2go/session.py b/x2go/session.py index 6020b9e..03d25a1 100644 --- a/x2go/session.py +++ b/x2go/session.py @@ -47,6 +47,7 @@ from defaults import SUPPORTED_SOUND, SUPPORTED_PRINTING, SUPPORTED_FOLDERSHARIN _X2GO_SESSION_PARAMS = ('geometry', 'depth', 'link', 'pack', 'cache_type', 'kblayout', 'kbtype', 'session_type', 'snd_system', 'cmd', + 'rdp_server', 'rdp_options', 'rootdir', 'loglevel', 'profile_name', 'profile_id', 'print_action', 'print_action_args', 'proxy_class', 'logger', diff --git a/x2go/utils.py b/x2go/utils.py index 58c4c7a..8a2fa06 100644 --- a/x2go/utils.py +++ b/x2go/utils.py @@ -122,6 +122,8 @@ def _convert_SessionProfileOptions_2_SessionParams(_options): 'name': 'profile_name', 'key': 'key_filename', 'command': 'cmd', + 'rdpserver': 'rdp_server', + 'rdpoptions': 'rdp_options', } _speed_dict = { '1': 'modem', @@ -200,8 +202,6 @@ def _convert_SessionProfileOptions_2_SessionParams(_options): 'sndport', 'icon', 'applications', - 'rdpoptions', - 'rdpserver', 'xdmcpserver', ] for i in _ignored_options: 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).