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@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)).