[X2Go-Commits] pyhoca-gui.git - master (branch) updated: 0.4.0.8-7-g7256699

X2Go dev team git-admin at x2go.org
Sun Sep 8 01:15:45 CEST 2013


The branch, master has been updated
       via  7256699ba90dca0b6001e19a0ac6576660a9e4ff (commit)
      from  6706416c0874f361a68d67072f3abb76fb733cbe (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 -----------------------------------------------------------------
commit 7256699ba90dca0b6001e19a0ac6576660a9e4ff
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Sun Sep 8 01:15:29 2013 +0200

    Support encrypted on SSH proxy whith password authentication on X2Go Server.

-----------------------------------------------------------------------

Summary of changes:
 debian/changelog           |    2 ++
 pyhoca/wxgui/logon.py      |   19 +++++++++++++++----
 pyhoca/wxgui/passphrase.py |   43 ++++++++++++++++++++++++++-----------------
 3 files changed, 43 insertions(+), 21 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 2bf268e..0ef6293 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,8 @@ pyhoca-gui (0.4.0.9-0~x2go1) UNRELEASED; urgency=low
     - Add support for encrypted/locked/passphrase-protected SSH private key
       files.
     - Only show notifications if there really is something to show.
+    - Support encrypted on SSH proxy whith password authentication on X2Go
+      Server.
   * /debian/copyright:
     + Update file. Add entry for file icon2exe.py.
 
diff --git a/pyhoca/wxgui/logon.py b/pyhoca/wxgui/logon.py
index 83e9cb5..c287339 100644
--- a/pyhoca/wxgui/logon.py
+++ b/pyhoca/wxgui/logon.py
@@ -42,7 +42,7 @@ import wx
 import os
 
 # PyHoca-GUI modules
-# ... NONE ...
+import passphrase
 
 if os.environ.has_key('DESKTOP_SESSION'):
     WINDOW_MANAGER = os.environ['DESKTOP_SESSION']
@@ -283,9 +283,9 @@ class PyHocaGUI_DialogBoxPassword(wx.Dialog):
         wx.BeginBusyCursor()
         session_uuid = self._PyHocaGUI._X2GoClient__client_registered_sessions_of_profile_name(self.current_profile_name)[0]
         try:
-            self._PyHocaGUI._X2GoClient__connect_session(session_uuid, 
-                                                         username=username, 
-                                                         password=password, 
+            self._PyHocaGUI._X2GoClient__connect_session(session_uuid,
+                                                         username=username,
+                                                         password=password,
                                                          force_password_auth=force_password_auth,
                                                          add_to_known_hosts=self._PyHocaGUI.add_to_known_hosts,
                                                          sshproxy_user=sshproxy_user,
@@ -312,6 +312,17 @@ class PyHocaGUI_DialogBoxPassword(wx.Dialog):
                     _sp.write_user_config = True
                     _sp.write()
 
+        except x2go.X2GoSSHProxyPasswordRequiredException:
+            key_filename = None
+            try:
+                if not self._PyHocaGUI._X2GoClient__get_session(session_uuid).sshproxy_params['sshproxy_look_for_keys']:
+                    key_filename = self._PyHocaGUI._X2GoClient__get_session(session_uuid).sshproxy_params['sshproxy_key_filename']
+            except KeyError:
+                pass
+            self._pyhoca_logger('SSH private key file (for SSH proxy) is encrypted and requires a passphrase', loglevel=x2go.log.loglevel_INFO, )
+            _passphrase_window = passphrase.PyHocaGUI_DialogBoxPassphrase(self._PyHocaGUI, self.current_profile_name, caller=self, password=password, sshproxy_auth=True, key_filename=key_filename)
+            self._PyHocaGUI._logon_windows[self.current_profile_name] = _passphrase_window
+
         except x2go.AuthenticationException:
             if self.sshproxy_auth and (not self.sshproxy_started):
                 try: wx.EndBusyCursor()
diff --git a/pyhoca/wxgui/passphrase.py b/pyhoca/wxgui/passphrase.py
index c81dc55..497f9d0 100644
--- a/pyhoca/wxgui/passphrase.py
+++ b/pyhoca/wxgui/passphrase.py
@@ -55,7 +55,7 @@ class PyHocaGUI_DialogBoxPassphrase(wx.Dialog):
     SSH key passphrase window for L{PyHocaGUI}.
 
     """
-    def __init__(self, _PyHocaGUI, profile_name, caller=None, sshproxy_auth=False, sshproxy_passphrase='', key_filename=None):
+    def __init__(self, _PyHocaGUI, profile_name, caller=None, password='', sshproxy_auth=False, sshproxy_passphrase='', key_filename=''):
         """\
         Passphrase window (constructor)
 
@@ -81,12 +81,13 @@ class PyHocaGUI_DialogBoxPassphrase(wx.Dialog):
 
         self._PyHocaGUI._sub_windows.append(self)
 
-        self.passphrase = None
+        self.passphrase = ''
+        self.password = password
         self.key_filename = key_filename
         self.sshproxy_auth = sshproxy_auth
         self.sshproxy_passphrase = sshproxy_passphrase
 
-        if self.key_filename is not None:
+        if self.key_filename:
             keyfilenameLbl = wx.StaticText(self, wx.ID_ANY, _(u'Unlock SSH private key (%s)...') % key_filename)
         else:
             keyfilenameLbl = wx.StaticText(self, wx.ID_ANY, _(u'Unlock auto-discovered SSH private key...'))
@@ -167,7 +168,13 @@ class PyHocaGUI_DialogBoxPassphrase(wx.Dialog):
         @type evt: C{obj}
 
         """
-        if self.sshproxy_auth:
+        force_password_auth = False
+        sshproxy_force_password_auth = False
+        if self.sshproxy_auth and self.password:
+            passphrase = self.password
+            sshproxy_passphrase = self.passphraseTxt.GetValue()
+            force_password_auth = True
+        elif self.sshproxy_auth:
             passphrase = sshproxy_passphrase = self.passphraseTxt.GetValue()
         else:
             passphrase = self.passphraseTxt.GetValue()
@@ -179,18 +186,13 @@ class PyHocaGUI_DialogBoxPassphrase(wx.Dialog):
         session_uuid = self._PyHocaGUI._X2GoClient__client_registered_sessions_of_profile_name(self.current_profile_name)[0]
 
         try:
-            if self.sshproxy_auth:
-                self._PyHocaGUI._X2GoClient__connect_session(session_uuid,
-                                                             password=passphrase,
-                                                             sshproxy_password=sshproxy_passphrase,
-                                                             add_to_known_hosts=self._PyHocaGUI.add_to_known_hosts,
-                                                            )
-            else:
-                self._PyHocaGUI._X2GoClient__connect_session(session_uuid,
-                                                             password=passphrase,
-                                                             sshproxy_password=sshproxy_passphrase,
-                                                             add_to_known_hosts=self._PyHocaGUI.add_to_known_hosts,
-                                                            )
+            self._PyHocaGUI._X2GoClient__connect_session(session_uuid,
+                                                         password=passphrase,
+                                                         sshproxy_password=sshproxy_passphrase,
+                                                         force_password_auth=force_password_auth,
+                                                         sshproxy_force_password_auth=sshproxy_force_password_auth,
+                                                         add_to_known_hosts=self._PyHocaGUI.add_to_known_hosts,
+                                                        )
             self._PyHocaGUI.notifier.prepare('AUTH_%s' % self.current_profile_name,
                                              title=_(u'%s - connect') % self.current_profile_name,
                                              text=_(u'Authentication has been successful.'),
@@ -198,7 +200,7 @@ class PyHocaGUI_DialogBoxPassphrase(wx.Dialog):
 
         except x2go.PasswordRequiredException:
             if self.sshproxy_auth:
-                key_filename = None
+                key_filename = ''
                 try:
                     if not self._PyHocaGUI._X2GoClient__get_session(session_uuid).control_params['look_for_keys']:
                         key_filename = self._PyHocaGUI._X2GoClient__get_session(session_uuid).control_params['key_filename']
@@ -229,6 +231,13 @@ class PyHocaGUI_DialogBoxPassphrase(wx.Dialog):
                                              icon='auth_failed')
             connect_failed = True
 
+        except x2go.X2GoSSHProxyAuthenticationException:
+            self._PyHocaGUI.notifier.prepare('AUTH_%s' % self.current_profile_name,
+                                             title=_(u'%s - connect failure') % self.current_profile_name,
+                                             text=_(u'Authentication to the SSH proxy server failed!'),
+                                             icon='auth_failed')
+            connect_failed = True
+
         except gevent.socket.error, e:
             self._PyHocaGUI.notifier.prepare('AUTH_%s' % self.current_profile_name,
                                              title=_(u'%s - socket error') % self.current_profile_name,


hooks/post-receive
-- 
pyhoca-gui.git (Python X2Go Client (wxPython GUI))

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 "pyhoca-gui.git" (Python X2Go Client (wxPython GUI)).




More information about the x2go-commits mailing list