[X2Go-Commits] pyhoca-gui.git - build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d (branch) updated: 852ff8bb25facaf1057b1a3fb92ab4d3083efc8d
X2Go dev team
git-admin at x2go.org
Tue Aug 27 13:20:56 CEST 2013
The branch, build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d has been updated
via 852ff8bb25facaf1057b1a3fb92ab4d3083efc8d (commit)
from 67dd94f2e9a5ebb8abca86d0da86656f6911e20b (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:
pyhoca/wxgui/frontend.py | 4 ++
pyhoca/wxgui/logon.py | 150 ++++++++++++++++++++++++++++++++--------
pyhoca/wxgui/notify.py | 4 +-
pyhoca/wxgui/profilemanager.py | 6 +-
4 files changed, 132 insertions(+), 32 deletions(-)
The diff of changes is:
diff --git a/pyhoca/wxgui/frontend.py b/pyhoca/wxgui/frontend.py
index 299b12f..dadb2a6 100644
--- a/pyhoca/wxgui/frontend.py
+++ b/pyhoca/wxgui/frontend.py
@@ -318,6 +318,10 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
self._pyhoca_logger('public SSH key authentication to server failed, trying next auth-mechanism', loglevel=x2go.log.loglevel_INFO, )
_logon_window = logon.PyHocaGUI_DialogBoxPassword(self, profile_name, caller=self )
self._sub_windows.append(_logon_window)
+ except x2go.X2goSSHProxyAuthenticationException:
+ self._pyhoca_logger('public SSH key authentication for SSH proxy failed, trying next auth-mechanism', loglevel=x2go.log.loglevel_INFO, )
+ _logon_window = logon.PyHocaGUI_DialogBoxPassword(self, profile_name, caller=self, sshproxy_auth=True )
+ self._sub_windows.append(_logon_window)
except x2go.SSHException, e:
self.notifier.send('%s - connect error' % profile_name, '%s!' % str(e), icon='auth_error', timeout=4000)
self._temp_disabled_profile_names.remove(profile_name)
diff --git a/pyhoca/wxgui/logon.py b/pyhoca/wxgui/logon.py
index 45ba78c..4b217fc 100644
--- a/pyhoca/wxgui/logon.py
+++ b/pyhoca/wxgui/logon.py
@@ -99,29 +99,58 @@ class PyHocaGUI_DialogBoxPassword(wx.Dialog):
STILL UNDOCUMENTED
"""
- def __init__(self, _PyHocaGUI, profile_name, caller=None):
+ def __init__(self, _PyHocaGUI, profile_name, caller=None, sshproxy_auth=False):
self._PyHocaGUI = _PyHocaGUI
self._pyhoca_logger = self._PyHocaGUI._pyhoca_logger
self._pyhoca_logger('password dialog box started', loglevel=x2go.loglevel_INFO, )
+ self.sshproxy_auth = sshproxy_auth
+
self.current_profile_name = profile_name
self.current_profile_config = self._PyHocaGUI.session_profiles.get_profile_config(profile_name)
wx.Dialog.__init__(self, None, -1, profile_name, size=(210,150))
- # widgets
- userLbl = wx.StaticText(self, wx.ID_ANY, 'Username:', size=(80, -1))
+
+ if self.sshproxy_auth:
+ self.sshproxy_started = False
+ self.SetTitle('%s (via SSH proxy %s)' % (profile_name, self.current_profile_config['sshproxyhost']))
+
+ self.userLbl = wx.StaticText(self, wx.ID_ANY, 'Username:', size=(80, -1))
self.userTxt = wx.TextCtrl(self, wx.ID_ANY, '', style=wx.TE_PROCESS_ENTER)
- passwordLbl = wx.StaticText(self, wx.ID_ANY, 'Password:', size=(80, -1))
+ self.passwordLbl = wx.StaticText(self, wx.ID_ANY, 'Password:', size=(80, -1))
self.passwordTxt = wx.TextCtrl(self, wx.ID_ANY, '', style=wx.TE_PROCESS_ENTER|wx.TE_PASSWORD)
self.passwordTxt.SetFocus()
- loginBtn = wx.Button(self, wx.ID_OK, 'Authenticate')
- loginBtn.SetDefault()
- cancelBtn = wx.Button(self, wx.ID_CANCEL, 'Cancel')
- self.Bind(wx.EVT_BUTTON, self.OnLogin, loginBtn)
+ self.loginBtn = wx.Button(self, wx.ID_OK, 'Authenticate')
+ self.loginBtn.SetDefault()
+
+ # widgets
+ if self.sshproxy_auth:
+ self.sshProxyUserLbl = wx.StaticText(self, wx.ID_ANY, 'Username (SSH proxy server):', size=(180, -1))
+ self.sshProxyUserTxt = wx.TextCtrl(self, wx.ID_ANY, '', style=wx.TE_PROCESS_ENTER)
+ self.sshProxyPasswordLbl = wx.StaticText(self, wx.ID_ANY, 'Password (SSH proxy server):', size=(180, -1))
+ self.sshProxyPasswordTxt = wx.TextCtrl(self, wx.ID_ANY, '', style=wx.TE_PROCESS_ENTER|wx.TE_PASSWORD)
+ self.sshProxyPasswordTxt.SetFocus()
+ self.sshProxyLoginBtn = wx.Button(self, wx.ID_OK, ' Start SSH tunnel ')
+ self.sshProxyLoginBtn.SetDefault()
+
+ self.userLbl.Enable(False)
+ self.userTxt.Enable(False)
+ self.passwordLbl.Enable(False)
+ self.passwordTxt.Enable(False)
+ self.loginBtn.Enable(False)
+
+ self.cancelBtn = wx.Button(self, wx.ID_CANCEL, 'Cancel')
+
+ if self.sshproxy_auth:
+ self.Bind(wx.EVT_BUTTON, self.OnLogin, self.sshProxyLoginBtn)
+ self.Bind(wx.EVT_TEXT_ENTER, self.OnLogin, self.sshProxyUserTxt)
+ self.Bind(wx.EVT_TEXT_ENTER, self.OnLogin, self.sshProxyPasswordTxt)
+
+ self.Bind(wx.EVT_BUTTON, self.OnLogin, self.loginBtn)
self.Bind(wx.EVT_TEXT_ENTER, self.OnLogin, self.userTxt)
self.Bind(wx.EVT_TEXT_ENTER, self.OnLogin, self.passwordTxt)
- self.Bind(wx.EVT_BUTTON, self.OnCancel, cancelBtn)
+ self.Bind(wx.EVT_BUTTON, self.OnCancel, self.cancelBtn)
# sizer / layout
userSizer = wx.BoxSizer(wx.HORIZONTAL)
@@ -129,21 +158,39 @@ class PyHocaGUI_DialogBoxPassword(wx.Dialog):
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
mainSizer = wx.BoxSizer(wx.VERTICAL)
- userSizer.Add(userLbl, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 5)
+ if self.sshproxy_auth:
+ userSizer.Add(self.sshProxyUserLbl, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 5)
+ userSizer.Add(self.sshProxyUserTxt, 0, wx.ALL, 5)
+
+ userSizer.Add(self.userLbl, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 5)
userSizer.Add(self.userTxt, 0, wx.ALL, 5)
- passwordSizer.Add(passwordLbl, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 5)
+
+ if self.sshproxy_auth:
+ passwordSizer.Add(self.sshProxyPasswordLbl, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 5)
+ passwordSizer.Add(self.sshProxyPasswordTxt, 0, wx.ALL, 5)
+
+ passwordSizer.Add(self.passwordLbl, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 5)
passwordSizer.Add(self.passwordTxt, 0, wx.ALL, 5)
- btnSizer.Add(loginBtn, 0, wx.ALL, 5)
- btnSizer.Add(cancelBtn, 0, wx.ALL, 5)
+
+ if self.sshproxy_auth:
+ btnSizer.Add(self.sshProxyLoginBtn, 0, wx.ALL, 5)
+ btnSizer.Add(self.loginBtn, 0, wx.ALL, 5)
+ btnSizer.Add(self.cancelBtn, 0, wx.ALL, 5)
+
mainSizer.Add(userSizer, 0, wx.ALL, 0)
mainSizer.Add(passwordSizer, 0, wx.ALL, 0)
- mainSizer.Add(btnSizer, 0, wx.ALL, 5)
+ mainSizer.Add(btnSizer, 0, wx.ALL|wx.ALIGN_RIGHT, 5)
if self.current_profile_config.has_key('user'):
self.userTxt.SetValue(self.current_profile_config['user'])
else:
self.userTxt.SetValue(self._PyHocaGUI.args.username)
+ if self.sshproxy_auth:
+
+ if self.current_profile_config.has_key('sshproxyuser'):
+ self.sshProxyUserTxt.SetValue(self.current_profile_config['sshproxyuser'])
+
# Logged in variable
self.loggedIn = False
@@ -166,15 +213,36 @@ class PyHocaGUI_DialogBoxPassword(wx.Dialog):
"""
username = self.userTxt.GetValue()
password = self.passwordTxt.GetValue()
- if len(username) == 0:
- return
- if len(password) == 0:
- return
+ if self.sshproxy_auth:
+ sshproxy_user = self.sshProxyUserTxt.GetValue()
+ sshproxy_password = self.sshProxyPasswordTxt.GetValue()
+ if len(sshproxy_user) == 0:
+ return
+ if len(sshproxy_password) == 0:
+ return
+ else:
+ sshproxy_user = sshproxy_password = None
+
+ if (not self.sshproxy_auth) or self.sshproxy_started:
+ if len(username) == 0:
+ return
+ if len(password) == 0:
+ return
+
+ if self.sshproxy_auth and (not self.sshproxy_started):
+ force_password_auth=False
+ else:
+ force_password_auth=True
session_uuid = self._PyHocaGUI._X2goClient__client_registered_sessions_of_profile_name(self.current_profile_name)[0]
try:
wx.BeginBusyCursor()
- self._PyHocaGUI._X2goClient__connect_session(session_uuid, username=username, password=password, force_password_auth=True)
+ self._PyHocaGUI._X2goClient__connect_session(session_uuid,
+ username=username,
+ password=password,
+ force_password_auth=force_password_auth,
+ sshproxy_user=sshproxy_user,
+ sshproxy_password=sshproxy_password)
if not self._PyHocaGUI._X2goClient__server_valid_x2gouser(session_uuid):
self._PyHocaGUI.notifier.prepare('AUTH_%s' % self.current_profile_name,
title='%s - connect failure' % self.current_profile_name,
@@ -188,10 +256,35 @@ class PyHocaGUI_DialogBoxPassword(wx.Dialog):
icon='auth_success')
except x2go.AuthenticationException:
- self._PyHocaGUI.notifier.prepare('AUTH_%s' % self.current_profile_name,
- title='%s - connect failure' % self.current_profile_name,
- text='Authentication failed!',
- icon='auth_failed')
+ if self.sshproxy_auth and (not self.sshproxy_started):
+ wx.EndBusyCursor()
+ self.sshproxy_started = True
+ self.userLbl.Enable(True)
+ self.userTxt.Enable(True)
+ self.passwordLbl.Enable(True)
+ self.passwordTxt.Enable(True)
+ self.passwordTxt.SetFocus()
+ self.loginBtn.Enable(True)
+ self.loginBtn.SetDefault()
+ self.sshProxyUserLbl.Enable(False)
+ self.sshProxyUserTxt.Enable(False)
+ self.sshProxyPasswordLbl.Enable(False)
+ self.sshProxyPasswordTxt.Enable(False)
+ self.sshProxyLoginBtn.Enable(False)
+ self.sshProxyLoginBtn.SetLabel('SSH tunnel started')
+ return
+ else:
+ self._PyHocaGUI.notifier.prepare('AUTH_%s' % self.current_profile_name,
+ title='%s - connect failure' % self.current_profile_name,
+ text='Authentication failed!',
+ icon='auth_failed')
+ except x2go.X2goSSHProxyAuthenticationException:
+ wx.EndBusyCursor()
+ self.sshProxyPasswordTxt.SetValue('')
+ self._PyHocaGUI.notifier.send(title='%s - ssh proxy' % self.current_profile_name,
+ text='Authentication to the SSH proxy server failed!',
+ icon='auth_failed')
+ return
except gevent.dns.DNSError, e:
self._PyHocaGUI.notifier.prepare('AUTH_%s' % self.current_profile_name,
@@ -204,11 +297,11 @@ class PyHocaGUI_DialogBoxPassword(wx.Dialog):
title='%s - connect error' % self.current_profile_name,
text='%s!' % e.strerror,
icon='auth_error')
- except:
- self._PyHocaGUI.notifier.prepare('AUTH_%s' % self.current_profile_name,
- title='%s - connect error' % self.current_profile_name,
- text='An unknown error occured during authentication!',
- icon='auth_error')
+ #except:
+ # self._PyHocaGUI.notifier.prepare('AUTH_%s' % self.current_profile_name,
+ # title='%s - connect error' % self.current_profile_name,
+ # text='An unknown error occured during authentication!',
+ # icon='auth_error')
self._PyHocaGUI.notifier.send(self.current_profile_name, context='AUTH_%s' % self.current_profile_name, timeout=4000)
@@ -217,6 +310,7 @@ class PyHocaGUI_DialogBoxPassword(wx.Dialog):
self._PyHocaGUI._post_authenticate(evt, session_uuid)
wx.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))
wx.EndBusyCursor()
+ self.sshproxy_started = False
self.Destroy()
def OnCancel(self, evt):
diff --git a/pyhoca/wxgui/notify.py b/pyhoca/wxgui/notify.py
index b9c6429..16f0329 100644
--- a/pyhoca/wxgui/notify.py
+++ b/pyhoca/wxgui/notify.py
@@ -77,7 +77,7 @@ class libnotify_NotifierPopup(object):
n.set_urgency(pynotify.URGENCY_NORMAL)
n.set_timeout(timeout)
- self._pyhoca_logger(text, loglevel=log.loglevel_NOTICE)
+ self._pyhoca_logger('[%s] %s' % (title, text), loglevel=log.loglevel_NOTICE)
if not n.show():
raise PyHocaNotificationException('could not notify user')
@@ -163,7 +163,7 @@ class notificationmessage_NotifierPopup(object):
# wx.NotificationMessage class
pass
- self._pyhoca_logger(text, loglevel=log.loglevel_NOTICE)
+ self._pyhoca_logger('[%s] %s' % (title, text), loglevel=log.loglevel_NOTICE)
def Close(self):
pass
diff --git a/pyhoca/wxgui/profilemanager.py b/pyhoca/wxgui/profilemanager.py
index eac7b58..45830fa 100644
--- a/pyhoca/wxgui/profilemanager.py
+++ b/pyhoca/wxgui/profilemanager.py
@@ -95,7 +95,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
# we create a backup dict of our profile_config immediately (for being able to reset erroneously made changes)
self.profile_config_bak = copy.deepcopy(self.profile_config)
- wx.Dialog.__init__(self, None, -1, style=wx.DEFAULT_DIALOG_STYLE, size=wx.Size(400,400))
+ wx.Dialog.__init__(self, None, -1, style=wx.DEFAULT_DIALOG_STYLE, size=wx.Size(550,450))
self.CentreOnScreen()
self.X2goTabs = wx.Notebook(self, -1, style=0)
@@ -564,7 +564,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
MainSizer.Add(sizer_B, 0, wx.ALIGN_RIGHT, 0)
self.SetSizer(MainSizer)
self.Fit()
- self.SetSizeHints(550,440)
+ self.SetSizeHints(550,450)
self.SetAutoLayout(True)
self.Layout()
@@ -1133,6 +1133,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
return validateOk
def OnOKButton(self, event):
+ wx.BeginBusyCursor()
self.__update_from_screen()
if self.__validate():
@@ -1158,6 +1159,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
icon='profile_save',
)
+ wx.EndBusyCursor()
self.Close()
self.Destroy()
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