[X2Go-Commits] python-x2go.git - brokerclient (branch) updated: a786acc8b8b6e5cd558fa702be6a9718ab812550

X2Go dev team git-admin at x2go.org
Tue Jan 7 16:19:33 CET 2014


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




More information about the x2go-commits mailing list