[X2Go-Commits] python-x2go.git - twofactorauth (branch) updated: 0.2.0.10-9-gf7d6e95

X2Go dev team git-admin at x2go.org
Sat Sep 14 15:57:43 CEST 2013


The branch, twofactorauth has been updated
       via  f7d6e9545fd25b055a80d5442f94916d676f2e3f (commit)
      from  feac4d0816d71ffe3fb3bf46c5dd0b9b919917ea (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:
 debian/changelog |    2 ++
 x2go/client.py   |   11 ++++++++++
 x2go/defaults.py |    4 ++--
 x2go/session.py  |   59 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 x2go/utils.py    |   10 +++++++--
 5 files changed, 77 insertions(+), 9 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index dd87a28..c942d7b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,8 @@ python-x2go (0.2.0.11-0~x2go1) UNRELEASED; urgency=low
     - Prepare for staying compatible with new SSH proxy feature
       in X2Go Client.
     - Add sshproxy_port option to session (SSH proxy) options.
+    - Implementation of session profile parameters ,,sshproxysameuser''
+      and ,,sshproxysameauth''.
   * /debian/rules:
     + Allow package build on systems with missing dh_python2.
 
diff --git a/x2go/client.py b/x2go/client.py
index e52b535..8098270 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -1197,6 +1197,17 @@ class X2goClient(object):
         return self.session_registry(session_uuid).check_host()
     __check_session_host = check_session_host
 
+    def session_reuses_sshproxy_authinfo(self, session_uuid):
+        """\
+        Check if session with unique identifier <session_uuid> is configured to re-use the X2Go session's
+        password / key for proxy authentication, as well.
+
+        @return: returns C{True} if the session is configured to re-use session password / key for proxy authentication
+        @rtype: C{bool}
+        """
+        return self.session_registry(session_uuid).reuses_sshproxy_authinfo()
+    __session_reuses_sshproxy_authinfo = session_reuses_sshproxy_authinfo
+
     def session_uses_sshproxy(self, session_uuid):
         """\
         Check if session with unique identifier <session_uuid> is configured to use an
diff --git a/x2go/defaults.py b/x2go/defaults.py
index 61022c3..d08f146 100644
--- a/x2go/defaults.py
+++ b/x2go/defaults.py
@@ -295,7 +295,7 @@ X2GO_SESSIONPROFILE_DEFAULTS = {
     'autologin': False, 'autostart': False, 'setsessiontitle': False, 'sessiontitle': "",
     'speed': 2, 'pack': '16m-jpeg', 'quality': 9,
     'iconvto': 'UTF-8', 'iconvfrom': 'UTF-8', 'useiconv': False,
-    'usesshproxy': False, 'sshproxyhost': '', 'sshproxyport': 22, 'sshproxyuser': '', 'sshproxytunnel': '', 'sshproxykeyfile': '',
+    'usesshproxy': False, 'sshproxyhost': 'proxyhost.mydomain', 'sshproxyport': 22, 'sshproxyuser': '', 'sshproxytunnel': 'localhost:44444:server.mydomain.private:22', 'sshproxykeyfile': '',
     'sshproxytype': 'SSH', 'sshproxysameuser': False, 'sshproxysamepass': False, 'sshproxyautologin': False,
     'useexports': True, 'fstunnel': True, 'export': '',
     'usemimebox': False, 'mimeboxextensions': '', 'mimeboxaction': 'OPEN',
@@ -304,7 +304,7 @@ X2GO_SESSIONPROFILE_DEFAULTS = {
     'usekbd': True, 'layout': 'us', 'type': 'pc105/us', 'variant': '',
     'sound': False, 'soundsystem': 'pulse', 'startsoundsystem': False, 'soundtunnel':True, 'defsndport':True, 'sndport':4713,
     'name': 'NEW_PROFILE', 'icon': ':icons/128x128/x2gosession.png',
-    'host': '', 'user': CURRENT_LOCAL_USER, 'key': '', 'sshport': 22, 'krblogin': False,
+    'host': 'server.mydomain', 'user': CURRENT_LOCAL_USER, 'key': '', 'sshport': 22, 'krblogin': False,
     'rootless': True, 'applications': X2GO_GENERIC_APPLICATIONS, 'command':'TERMINAL', 'published': False,
     'directrdp': False, 'directrdpsettings': '', 'rdpclient': 'rdesktop', 'rdpport': 3389,
     'rdpoptions': '-u X2GO_USER -p X2GO_PASSWORD', 'rdpserver': '',
diff --git a/x2go/session.py b/x2go/session.py
index 8609cbe..228c4bc 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -83,7 +83,8 @@ from defaults import X2GO_SSH_ROOTDIR as _X2GO_SSH_ROOTDIR
 
 from defaults import SUPPORTED_SOUND, SUPPORTED_PRINTING, SUPPORTED_FOLDERSHARING, SUPPORTED_MIMEBOX
 
-_X2GO_SESSION_PARAMS = ('use_sshproxy', 'profile_id', 'session_name',
+_X2GO_SESSION_PARAMS = ('use_sshproxy', 'sshproxy_reuse_authinfo',
+                        'profile_id', 'session_name',
                         'auto_start_or_resume', 'auto_connect',
                         'printing', 'allow_mimebox',
                         'mimebox_extensions', 'mimebox_action',
@@ -130,6 +131,7 @@ class X2goSession(object):
     """
     def __init__(self, server=None, port=22, control_session=None,
                  use_sshproxy=False,
+                 sshproxy_reuse_authinfo=False,
                  profile_id=None, profile_name='UNKNOWN',
                  session_name=None,
                  auto_start_or_resume=False,
@@ -164,6 +166,8 @@ class X2goSession(object):
         @type control_session: C{X2goControlSession*} instance
         @param use_sshproxy: for communication with X2Go server use an SSH proxy host
         @type use_sshproxy: C{bool}
+        @param sshproxy_reuse_authinfo: for proxy authentication re-use the X2Go sessions password / key file
+        @type sshproxy_reuse_authinfo: C{bool}
         @param profile_id: profile ID
         @type profile_id: C{str}
         @param profile_name: profile name
@@ -296,6 +300,9 @@ class X2goSession(object):
             if not re.match('.*_stRPUBLISHED_.*',self.session_name):
                 self.published_applications = params['published_applications'] = False
 
+        self.use_sshproxy = use_sshproxy
+        self.sshproxy_reuse_authinfo = sshproxy_reuse_authinfo
+
         self.control_params = {}
         self.terminal_params = {}
         self.sshproxy_params = {}
@@ -323,7 +330,6 @@ class X2goSession(object):
 
         self.add_to_known_hosts = add_to_known_hosts
         self.known_hosts = known_hosts
-        self.use_sshproxy = use_sshproxy
 
         self._current_status = {
             'timestamp': time.time(),
@@ -717,6 +723,10 @@ class X2goSession(object):
             del params['use_sshproxy']
         except KeyError: pass
         try:
+            self.sshproxy_reuse_authinfo = params['sshproxy_reuse_authinfo']
+            del params['sshproxy_reuse_authinfo']
+        except KeyError: pass
+        try:
             self.auto_connect = params['auto_connect']
             del params['auto_connect']
         except KeyError: pass
@@ -725,6 +735,14 @@ class X2goSession(object):
             del params['auto_start_or_resume']
         except KeyError: pass
 
+        if self.sshproxy_reuse_authinfo:
+            if params.has_key('key_filename'):
+                params['sshproxy_key_filename'] = params['key_filename']
+            if params.has_key('pkey'):
+                params['sshproxy_pkey'] = params['pkey']
+            if params.has_key('password'):
+                params['sshproxy_password'] = params['password']
+
         _terminal_params = copy.deepcopy(params)
         _control_params = copy.deepcopy(params)
         _sshproxy_params = copy.deepcopy(params)
@@ -992,6 +1010,18 @@ class X2goSession(object):
         return self.use_sshproxy
     __uses_sshproxy = uses_sshproxy
 
+    def reuses_sshproxy_authinfo(self):
+        """\
+        Check if a session is configured to re-use the X2Go session's password / key for
+        proxy authentication, as well.
+
+        @return: returns C{True} if the session is configured to re-use session password / key for proxy authentication
+        @rtype: C{bool}
+
+        """
+        return self.sshproxy_reuse_authinfo
+    __reuses_sshproxy_authinfo = reuses_sshproxy_authinfo
+
     def can_sshproxy_auto_connect(self):
         """\
         Check if a session's SSH proxy (if used) is configured adequately to be able to auto-connect
@@ -1065,7 +1095,7 @@ class X2goSession(object):
     __do_auto_connect = do_auto_connect
 
     def connect(self, username='', password='', add_to_known_hosts=False, force_password_auth=False,
-                use_sshproxy=False, sshproxy_user='', sshproxy_password=''):
+                use_sshproxy=None, sshproxy_reuse_authinfo=False, sshproxy_user='', sshproxy_password=''):
         """\
         Connects to the L{X2goSession}'s server host. This method basically wraps around 
         the C{X2goControlSession*.connect()} method.
@@ -1085,6 +1115,8 @@ class X2goSession(object):
         @type force_password_auth: C{bool}
         @param use_sshproxy: use an SSH proxy host for connecting the target X2Go server
         @type use_sshproxy: C{bool}
+        @param sshproxy_reuse_authinfo: for proxy authentication re-use the X2Go sessions password / key file
+        @type sshproxy_reuse_authinfo: C{bool}
         @param sshproxy_user: username for authentication against the SSH proxy host
         @type sshproxy_user: C{str}
         @param sshproxy_password: password for authentication against the SSH proxy host
@@ -1102,6 +1134,13 @@ class X2goSession(object):
             self.logger('control session is already connected, skipping authentication', loglevel=log.loglevel_DEBUG)
             self.connected = True
         else:
+
+            if use_sshproxy is not None:
+                self.use_sshproxy = use_sshproxy
+
+            if sshproxy_reuse_authinfo is not None:
+                self.sshproxy_reuse_authinfo = sshproxy_reuse_authinfo
+
             if username:
                 self.control_params['username'] = username
             if add_to_known_hosts is not None:
@@ -1110,10 +1149,20 @@ class X2goSession(object):
                 self.control_params['force_password_auth'] = force_password_auth
             if sshproxy_user:
                 self.sshproxy_params['sshproxy_user'] = sshproxy_user
+
             if sshproxy_password:
                 self.sshproxy_params['sshproxy_password'] = sshproxy_password
+
             self.control_params['password'] = password
 
+            if self.sshproxy_reuse_authinfo:
+                if self.control_params.has_key('key_filename'):
+                    self.sshproxy_params['sshproxy_key_filename'] = self.control_params['key_filename']
+                if _params.has_key('pkey'):
+                    self.sshproxy_params['sshproxy_pkey'] = self.control_params['pkey']
+                if params.has_key('password'):
+                    self.sshproxy_params['sshproxy_password'] = self.control_params['password']
+
             _params = {}
             _params.update(self.control_params)
             _params.update(self.sshproxy_params)
@@ -1123,8 +1172,8 @@ class X2goSession(object):
 
             try:
                 self.connected = self.control_session.connect(self.server,
-                                                              use_sshproxy=self.use_sshproxy, 
-                                                              session_instance=self, 
+                                                              use_sshproxy=self.use_sshproxy,
+                                                              session_instance=self,
                                                               **_params)
             except x2go_exceptions.X2goControlSessionException, e:
                 raise x2go_exceptions.X2goSessionException(str(e))
diff --git a/x2go/utils.py b/x2go/utils.py
index 4e8d468..6e2fd05 100644
--- a/x2go/utils.py
+++ b/x2go/utils.py
@@ -307,6 +307,14 @@ def _convert_SessionProfileOptions_2_SessionParams(options):
         del _params['dpi']
     del _params['setdpi']
 
+    if options['sshproxysameuser']:
+        _params['sshproxy_user'] = _params['username']
+    del _params['sshproxysameuser']
+    if options['sshproxysamepass']:
+        _params['sshproxy_reuse_authinfo'] = True
+        _params['sshproxy_key_filename'] = _params['key_filename']
+    del _params['sshproxysamepass']
+
     # currently known but ignored in Python X2go
     _ignored_options = [
             'startsoundsystem',
@@ -321,8 +329,6 @@ def _convert_SessionProfileOptions_2_SessionParams(options):
             'rdpclient',
             'rdpport',
             'sshproxytype',
-            'sshproxysameuser',
-            'sshproxysamepass',
             'sshproxyautologin',
     ]
     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