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

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


The branch, brokerclient has been updated
       via  a3aeee64302c605f726415803ea15e41e2e22b3f (commit)
      from  7c1a074b2bb0fde3707bdb9d4c9c2967ed24413d (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 |   20 ++++++++++++++++++--
 x2go/client.py                    |    7 +++++--
 x2go/defaults.py                  |    3 ++-
 x2go/session.py                   |   26 +++++++++++++++++---------
 x2go/utils.py                     |   32 +++++++++++++++++++++++++++++---
 5 files changed, 71 insertions(+), 17 deletions(-)

The diff of changes is:
diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py
index ea93ef0..cb6edbc 100644
--- a/x2go/backends/terminal/_stdout.py
+++ b/x2go/backends/terminal/_stdout.py
@@ -223,6 +223,7 @@ class X2goTerminalSessionSTDOUT(object):
                  session_type="application", snd_system='pulse', cmd=None,
                  rdp_server=None, rdp_options=None,
                  xdmcp_server=None,
+                 convert_encoding=False, server_encoding='UTF-8', client_encoding='UTF-8',
                  rootdir=None,
                  profile_name='UNKNOWN', profile_id=utils._genSessionProfileId(),
                  print_action=None, print_action_args={},
@@ -277,6 +278,10 @@ class X2goTerminalSessionSTDOUT(object):
         self.params.rdp_options = rdp_options
         self.params.xdmcp_server = xdmcp_server
 
+        self.params.convert_encoding = convert_encoding
+        self.params.client_encoding = client_encoding
+        self.params.server_encoding = server_encoding
+
         self.params.rootdir = (type(rootdir) is types.StringType) and rootdir or self.sessions_rootdir
         self.params.update()
 
@@ -538,14 +543,25 @@ class X2goTerminalSessionSTDOUT(object):
 
         self.control_session._x2go_sftp_write(_x2go_key_fname, _x2go_key_bundle)
 
+        _convert_encoding = self.params.convert_encoding
+        _client_encoding = self.params.client_encoding
+        _server_encoding = self.params.server_encoding
+
         if _X2GOCLIENT_OS == 'Windows':
             folder_name = folder_name.replace('\\', '/')
             folder_name = folder_name.replace(':', '')
             folder_name = '/windrive/%s' % folder_name
+            _convert_encoding = True
+            _client_encoding = 'WINDOWS-1252'
+
+        if _convert_encoding:
+            export_iconv_settings = 'export X2GO_ICONV=modules=iconv,from_code=%s,to_code=%s &&' % (_client_encoding, _server_encoding)
+        else:
+            export_iconv_settings = ''
 
         if folder_type is 'disk':
 
-            cmd_line = [ 'export HOSTNAME &&',
+            cmd_line = [ '%s export HOSTNAME &&' % export_iconv_settings,
                          'x2gomountdirs', 
                          'dir',
                          str(self.session_info.name), 
@@ -557,7 +573,7 @@ class X2goTerminalSessionSTDOUT(object):
 
         elif folder_type is 'spool':
 
-            cmd_line = [ 'export HOSTNAME &&',
+            cmd_line = [ '%s export HOSTNAME &&' % export_iconv_settings,
                          'x2gomountdirs', 
                          'dir',
                          str(self.session_info.name), 
diff --git a/x2go/client.py b/x2go/client.py
index 61e6ac9..846f50f 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -433,7 +433,7 @@ class X2goClient(object):
         return sessions
 
     def register_session(self, server=None, profile_id=None, profile_name=None, session_name=None,
-                         printing=False, share_local_folders=[], return_object=False,
+                         printing=False, allow_share_local_folders=False, share_local_folders=[], return_object=False,
                          add_to_known_hosts=False, known_hosts=None, 
                          force=False, **kwargs):
         """\
@@ -473,9 +473,11 @@ class X2goClient(object):
         @type profile_name: C{str}
         @param printing: enable X2go printing support for the to-be-registered X2go session
         @type printing: C{bool}
+        @param allow_share_local_folders: set local folder sharing to enabled/disabled
+        @type allow_share_local_folders: C{bool}
         @param share_local_folders: a list of local folders (as strings) to be shared directly
             after session start up
-        @type share_local_folders: list
+        @type share_local_folders: C{list}
         @param return_object: normally this method returns a unique session UUID. If 
             C{return_object} is set to C{True} an X2goSession object will be returned 
             instead
@@ -521,6 +523,7 @@ class X2goClient(object):
             _profile_name = profile_name or sys.argv[0]
             _params = kwargs
             _params['printing'] = printing
+            _params['allow_share_local_folders'] = allow_share_local_folders
             _params['share_local_folders'] = share_local_folders
             _params['client_instance'] = self
 
diff --git a/x2go/defaults.py b/x2go/defaults.py
index e5eb76a..3538b23 100644
--- a/x2go/defaults.py
+++ b/x2go/defaults.py
@@ -233,8 +233,9 @@ else:
 
 X2GO_SESSIONPROFILE_DEFAULTS = {
     'speed': 2, 'pack': '16m-jpeg', 'quality': 9, 'link':'ADSL',
-    'iconvto': 'UTF-8', 'iconvfrom': 'ISO-8859-15', 'useiconv': False,
+    'iconvto': 'UTF-8', 'iconvfrom': 'UTF-8', 'useiconv': False,
     'usesshproxy': False, 'sshproxyhost': '', 'sshproxyuser': '', 'sshproxytunnel': '', 'sshproxykeyfile': '',
+    'useexports': True,
     'fstunnel': True,
     'export': '',
     'fullscreen': False,
diff --git a/x2go/session.py b/x2go/session.py
index ff104af..d54de5c 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -56,9 +56,10 @@ _X2GO_SESSION_PARAMS = ('geometry', 'depth', 'link', 'pack',
                         'cache_type', 'kblayout', 'kbtype',
                         'session_type', 'snd_system', 'cmd',
                         'rdp_server', 'rdp_options',
-                        'xdmcp_server', 
+                        'xdmcp_server',
                         'rootdir', 'loglevel', 'profile_name', 'profile_id',
                         'print_action', 'print_action_args',
+                        'convert_encoding', 'client_encoding', 'server_encoding',
                         'proxy_class', 'logger',
                         'control_backend', 'terminal_backend', 'proxy_backend',
                         'profiles_backend', 'settings_backend', 'printing_backend',
@@ -75,7 +76,9 @@ class X2goSession(object):
                  use_sshproxy=False,
                  profile_id=None, profile_name='UNKNOWN',
                  session_name=None,
-                 printing=None, share_local_folders=[],
+                 printing=False,
+                 allow_share_local_folders=False,
+                 share_local_folders=[],
                  control_backend=_X2goControlSession,
                  terminal_backend=_X2goTerminalSession,
                  info_backend=_X2goServerSessionInfo,
@@ -124,6 +127,7 @@ class X2goSession(object):
         self.session_name = session_name
         self.server = server
         self.printing = printing
+        self.allow_share_local_folders = allow_share_local_folders
         self.share_local_folders = share_local_folders
         self._control_backend = control_backend
         self._terminal_backend = terminal_backend
@@ -246,10 +250,10 @@ class X2goSession(object):
             else:
                 del _sshproxy_params[p]
                 del _terminal_params[p]
-        try:
-            del _sshproxy_params['use_sshproxy']
-        except KeyError:
-            pass
+        try: del _sshproxy_params['use_sshproxy']
+        except KeyError: pass
+        try: del _control_params['allow_share_local_folders']
+        except KeyError: pass
 
         self.control_params.update(_control_params)
         self.terminal_params.update(_terminal_params)
@@ -558,7 +562,8 @@ class X2goSession(object):
                 if SUPPORTED_SOUND and _terminal.params.snd_system is not 'none':
                     _terminal.start_sound()
 
-                if (SUPPORTED_PRINTING and self.printing) or (SUPPORTED_FOLDERSHARING and self.share_local_folders):
+
+                if (SUPPORTED_PRINTING and self.printing) or (SUPPORTED_FOLDERSHARING and self.allow_share_local_folders and self.share_local_folders):
                     _terminal.start_sshfs()
 
                 try:
@@ -570,7 +575,7 @@ class X2goSession(object):
                 if SUPPORTED_FOLDERSHARING and self.share_local_folders:
                     if _control.get_transport().reverse_tunnels[_terminal.get_session_name()]['sshfs'][1] is not None:
                         for _folder in self.share_local_folders:
-                            _terminal.share_local_folder(_folder)
+                            self.share_local_folder(_folder)
 
                 # only run the session startup command if we do not resume...
                 if _new_session:
@@ -799,7 +804,10 @@ class X2goSession(object):
         @rtype: C{bool}
 
         """
-        return self.terminal_session.share_local_folder(folder_name=folder_name)
+        if self.allow_share_local_folders:
+            return self.terminal_session.share_local_folder(folder_name=folder_name)
+        else:
+            self.logger('local folder sharing is disabled for this session profile', loglevel=log.loglevel_WARN)
     __share_local_folder = share_local_folder
 
     def session_cleanup(self):
diff --git a/x2go/utils.py b/x2go/utils.py
index 5d5c2d2..68767c7 100644
--- a/x2go/utils.py
+++ b/x2go/utils.py
@@ -124,6 +124,7 @@ def _convert_SessionProfileOptions_2_SessionParams(_options):
             'layout': 'kblayout',
             'speed': 'link',
             'sshport': 'port',
+            'useexports': 'allow_share_local_folders',
             'export': 'share_local_folders',
             'print': 'printing',
             'name': 'profile_name',
@@ -132,6 +133,9 @@ def _convert_SessionProfileOptions_2_SessionParams(_options):
             'rdpserver': 'rdp_server',
             'rdpoptions': 'rdp_options',
             'xdmcpserver': 'xdmcp_server',
+            'useiconv': 'convert_encoding',
+            'iconvto': 'server_encoding',
+            'iconvfrom': 'client_encoding',
             'usesshproxy': 'use_sshproxy',
             'sshproxyhost': 'sshproxy_host',
             'sshproxyuser': 'sshproxy_user',
@@ -204,9 +208,6 @@ def _convert_SessionProfileOptions_2_SessionParams(_options):
 
         # currently known but ignored in Python X2go
         _ignored_options = [
-            'iconvto',
-            'iconvfrom',
-            'useiconv',
             'dpi',
             'setdpi',
             'usekbd',
@@ -236,3 +237,28 @@ def touch_file(filename):
         os.makedirs(os.path.dirname(filename), mode=00700)
     f = open(filename, 'w')
     f.close()
+
+
+def unique(seq):
+    # order preserving
+    noDupes = []
+    [noDupes.append(i) for i in seq if not noDupes.count(i)]
+    return noDupes
+
+
+def known_encodings():
+    from encodings.aliases import aliases
+    _raw_encname_list = []
+    _raw_encname_list.extend(aliases.keys())
+    _raw_encname_list.extend(aliases.values())
+    _raw_encname_list.sort()
+    _encname_list = []
+    for _raw_encname in _raw_encname_list:
+        _encname = _raw_encname.upper()
+        _encname = _encname.replace('_', '-')
+        _encname_list.append(_encname)
+    _encname_list.sort()
+    _encname_list = unique(_encname_list)
+    return _encname_list
+
+


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