[X2Go-Commits] pyhoca-gui.git - build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d (branch) updated: 0.0.28.0-16-g496726f

X2Go dev team git-admin at x2go.org
Tue Aug 27 13:21:12 CEST 2013


The branch, build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d has been updated
       via  496726f919949605fdc481d98d7be016cb157713 (commit)
      from  8a0d2e68c057649a967994db26e1354349d6ce12 (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 |   94 +++++++++++++++++------------
 pyhoca/wxgui/logon.py    |    6 +-
 pyhoca/wxgui/messages.py |  149 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 209 insertions(+), 40 deletions(-)
 create mode 100644 pyhoca/wxgui/messages.py

The diff of changes is:
diff --git a/pyhoca/wxgui/frontend.py b/pyhoca/wxgui/frontend.py
index f180813..74742a1 100644
--- a/pyhoca/wxgui/frontend.py
+++ b/pyhoca/wxgui/frontend.py
@@ -59,6 +59,7 @@ import taskbar
 import menus_taskbar
 import profilemanager
 import notify
+import messages
 import basepath
 
 wx.SetDefaultPyEncoding("utf-8")
@@ -188,6 +189,7 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
         self._eventid_profilenames_map = {}
         self._eventid_sessionnames_map = {}
         self._temp_disabled_profile_names = []
+        self._added_known_hosts = []
 
         # We register one session per available session profile.
         # These registered sessions will be used to access the profile's 
@@ -304,46 +306,48 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
 
     def _do_authenticate(self, evt, session_uuid):
         profile_name = self.current_profile_name
-        _add_to_known_hosts = self._X2goClient__check_session_host(session_uuid)
-        try:
-            self._X2goClient__connect_session(session_uuid, add_to_known_hosts=_add_to_known_hosts)
-            if not self._X2goClient__server_valid_x2gouser(session_uuid):
-                self.notifier.send(_(u'%s - connect failure') % profile_name, _(u'User is not allowed to start X2go sessions!'), icon='session_warning', timeout=10000)
-                self._X2goClient__disconnect_profile(profile_name)
+        host_ok = self._X2goClient__check_session_host(session_uuid)
+        if host_ok:
+            try:
+                self._X2goClient__connect_session(session_uuid, add_to_known_hosts=host_ok)
+                if not self._X2goClient__server_valid_x2gouser(session_uuid):
+                    self.notifier.send(_(u'%s - connect failure') % profile_name, _(u'User is not allowed to start X2go sessions!'), icon='session_warning', timeout=10000)
+                    self._X2goClient__disconnect_profile(profile_name)
+                    self._temp_disabled_profile_names.remove(profile_name)
+                else:
+                    self.notifier.send(_(u'%s - connect') % profile_name, _(u'Public SSH key authentication has been successful.'), icon='auth_success', timeout=4000)
+                    _dummy = self._X2goClient__list_sessions(session_uuid, refresh_cache=True)
+                    self._post_authenticate(evt, session_uuid)
+                    self._temp_disabled_profile_names.remove(profile_name)
+            except x2go.AuthenticationException:
+                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, host_ok=host_ok, )
+                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, host_ok=host_ok, sshproxy_auth=True )
+                self._sub_windows.append(_logon_window)
+            except x2go.SSHException, e:
+                self.notifier.send(_(u'%s - connect error') % profile_name, '%s!' % str(e), icon='auth_error', timeout=4000)
                 self._temp_disabled_profile_names.remove(profile_name)
-            else:
-                self.notifier.send(_(u'%s - connect') % profile_name, _(u'Public SSH key authentication has been successful.'), icon='auth_success', timeout=4000)
-                _dummy = self._X2goClient__list_sessions(session_uuid, refresh_cache=True)
-                self._post_authenticate(evt, session_uuid)
+            except gevent.dns.DNSError, e:
+                self.notifier.send(_(u'%s - connect error') % profile_name, '%s!' % e.strerror, icon='auth_error', timeout=4000)
                 self._temp_disabled_profile_names.remove(profile_name)
-        except x2go.AuthenticationException:
-            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, add_to_known_hosts=_add_to_known_hosts, sshproxy_auth=True )
-            self._sub_windows.append(_logon_window)
-        except x2go.SSHException, e:
-            self.notifier.send(_(u'%s - connect error') % profile_name, '%s!' % str(e), icon='auth_error', timeout=4000)
-            self._temp_disabled_profile_names.remove(profile_name)
-        except gevent.dns.DNSError, e:
-            self.notifier.send(_(u'%s - connect error') % profile_name, '%s!' % e.strerror, icon='auth_error', timeout=4000)
-            self._temp_disabled_profile_names.remove(profile_name)
-        except gevent.socket.error, e:
-            self.notifier.send(_(u'%s - connect error') % profile_name, '%s!' % e.strerror, icon='auth_error', timeout=4000)
-            self._temp_disabled_profile_names.remove(profile_name)
-        except EOFError, e:
-            self.notifier.send(_(u'%s - connect error') % profile_name, _(u'Authentication protocol communication incomplete! Try again...'), icon='auth_error', timeout=4000)
-            self._temp_disabled_profile_names.remove(profile_name)
-        except x2go.X2goSSHProxyException, e:
-            self.notifier.send(_(u'%s - key error') % profile_name, '%s!' % str(e), icon='auth_error', timeout=4000)
-            self._temp_disabled_profile_names.remove(profile_name)
-        except:
-            self.notifier.send('%s - connect error' % profile_name, 'An unknown error occurred during authentication!', icon='auth_error', timeout=4000)
+            except gevent.socket.error, e:
+                self.notifier.send(_(u'%s - connect error') % profile_name, '%s!' % e.strerror, icon='auth_error', timeout=4000)
+                self._temp_disabled_profile_names.remove(profile_name)
+            except EOFError, e:
+                self.notifier.send(_(u'%s - connect error') % profile_name, _(u'Authentication protocol communication incomplete! Try again...'), icon='auth_error', timeout=4000)
+                self._temp_disabled_profile_names.remove(profile_name)
+            except x2go.X2goSSHProxyException, e:
+                self.notifier.send(_(u'%s - key error') % profile_name, '%s!' % str(e), icon='auth_error', timeout=4000)
+                self._temp_disabled_profile_names.remove(profile_name)
+            except:
+                self.notifier.send('%s - connect error' % profile_name, 'An unknown error occurred during authentication!', icon='auth_error', timeout=4000)
+                self._temp_disabled_profile_names.remove(profile_name)
+            self.taskbar.SetIconIdle()
+        else:
             self._temp_disabled_profile_names.remove(profile_name)
-        self.taskbar.SetIconIdle()
-
 
     def OnSessionAuthenticate(self, evt):
         """\
@@ -522,6 +526,22 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
         self.OnExit(evt)
 
     ##
+    ## Python X2go (X2goClient) interactive HOOK's...
+    ##
+    def HOOK_check_host_dialog(self, profile_name='UNKNOWN', host='UNKNOWN', port=22, fingerprint='no fingerprint', fingerprint_type='RSA', ):
+        """\
+        STILL UNDOCUMENTED
+
+        """
+        _message = _(u'The authenticity of host [%s]:%s can\'t be established.\n%s key fingerprint is ,,%s\'\'.\n\nAre you sure you want to continue connecting?') % (host, port, fingerprint_type, fingerprint)
+        m = messages.PyHoca_MessageWindow(self, custom_message=_message, title=_(u'%s: Confirm Host Authorization') % profile_name, icon='profile_warning', buttontype='noyes')
+        while m in self._sub_windows:
+            gevent.sleep(0.5)
+        retval = m.Yes()
+        m.Destroy()
+        return retval
+
+    ##
     ## Python X2go (X2goClient) notification HOOK's...
     ##
 
diff --git a/pyhoca/wxgui/logon.py b/pyhoca/wxgui/logon.py
index 59d4a09..bfa5283 100644
--- a/pyhoca/wxgui/logon.py
+++ b/pyhoca/wxgui/logon.py
@@ -62,13 +62,13 @@ class PyHocaGUI_DialogBoxPassword(wx.Dialog):
     STILL UNDOCUMENTED
 
     """
-    def __init__(self, _PyHocaGUI, profile_name, caller=None, add_to_known_hosts=False, sshproxy_auth=False): 
+    def __init__(self, _PyHocaGUI, profile_name, caller=None, host_ok=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.add_to_known_hosts = add_to_known_hosts
+        self.host_ok = host_ok or False
         self.sshproxy_auth = sshproxy_auth
 
         self.current_profile_name = profile_name
@@ -228,7 +228,7 @@ class PyHocaGUI_DialogBoxPassword(wx.Dialog):
                                                          username=username, 
                                                          password=password, 
                                                          force_password_auth=force_password_auth, 
-                                                         add_to_known_hosts=self.add_to_known_hosts,
+                                                         add_to_known_hosts=self.host_ok,
                                                          sshproxy_user=sshproxy_user, 
                                                          sshproxy_password=sshproxy_password)
             if not self._PyHocaGUI._X2goClient__server_valid_x2gouser(session_uuid):
diff --git a/pyhoca/wxgui/messages.py b/pyhoca/wxgui/messages.py
new file mode 100644
index 0000000..2a0c4ef
--- /dev/null
+++ b/pyhoca/wxgui/messages.py
@@ -0,0 +1,149 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+# Copyright (C) 2010 by Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+# Contributors to the code of this programme:
+#     Dick Kniep <dick.kniep at lindix.nl>
+
+
+import wx
+
+pyhoca_messages = { 
+    'MISSING_PROFILENAME': 'The profile name is missing, please specify a profile name.',
+    }
+
+class PyHoca_MessageWindow(wx.Dialog):
+
+    def __init__(self, _PyHocaGUI, title=None, shortmsg=None, custom_message=None, icon='session_warning', buttontype='ok'):
+
+        self._PyHocaGUI = _PyHocaGUI
+
+        if shortmsg is None:
+            show_message = custom_message
+        elif shortmsg in pyhoca_messages:
+            show_message = pyhoca_messages[msg]
+        else:
+            show_message = 'No message has been given...'
+
+        self.show_message = show_message
+        self.result = None
+
+        wx.Dialog.__init__(self, _PyHocaGUI.about, )
+        self.SetTitle('%s' % title)
+
+        self.message = wx.StaticText(self, wx.ID_ANY, self.show_message, size=(-1, -1), style=wx.ALIGN_CENTER) 
+
+        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
+        mainSizer = wx.BoxSizer(wx.VERTICAL)
+
+        if buttontype in ('yesno', 'noyes'):
+            self.yesBtn = wx.Button(self, wx.ID_YES, _(u'Yes'),)
+            self.noBtn = wx.Button(self, wx.ID_NO, _(u'No'))
+
+            self.Bind(wx.EVT_BUTTON, self.OnTrue, self.yesBtn)
+            self.Bind(wx.EVT_BUTTON, self.OnFalse, self.noBtn)
+
+            btnSizer.Add(self.yesBtn, 0, wx.ALL, 5) 
+            btnSizer.Add(self.noBtn, 0, wx.ALL, 5) 
+
+            if buttontype == 'yesno':
+                self.yesBtn.SetDefault()
+            elif buttontype == 'noyes':
+                self.noBtn.SetDefault()
+
+        if buttontype in ('ok', 'okcancel', 'cancelok'):
+
+            self.okBtn = wx.Button(self, wx.ID_OK, _(u'Ok'),)
+            self.Bind(wx.EVT_BUTTON, self.OnTrue, self.okBtn)
+            btnSizer.Add(self.okBtn, 0, wx.ALL, 5) 
+
+        if buttontype in ('okcancel', 'cancelok'):
+
+            self.cancelBtn = wx.Button(self, wx.ID_CANCEL, _(u'Cancel'))
+            self.Bind(wx.EVT_BUTTON, self.OnFalse, self.cancelBtn)
+            btnSizer.Add(self.cancelBtn, 0, wx.ALL, 5) 
+
+        if buttontype in ('ok', 'okcancel'):
+            self.okBtn.SetDefault()
+
+        if buttontype == 'cancelok':
+            self.cancelBtn.SetDefault()
+
+        mainSizer.Add(self.message, 0, wx.ALL, 5) 
+        mainSizer.Add(btnSizer, 0, wx.ALL|wx.ALIGN_RIGHT, 5)
+
+        self.SetSizerAndFit(mainSizer) 
+        self.Layout()
+
+        maxX, maxY = wx.GetDisplaySize()
+
+        self.Move((maxX/2 - self.GetSize().GetWidth()/2, maxY/2 - self.GetSize().GetHeight()/2))
+        self.Show()
+        self._PyHocaGUI._sub_windows.append(self)
+
+    def OnTrue(self, evt):
+        self.result = True
+        self.Close()
+
+    def OnFalse(self, evt):
+        self.result = False
+        self.Close()
+
+    def Ok(self):
+        return self.result
+
+    def Cancel(self):
+        return not self.Ok()
+
+    def Yes(self):
+        return self.result
+
+    def No(self):
+        return not self.Yes()
+
+    def Close(self):
+        self._PyHocaGUI._sub_windows.remove(self)
+        wx.Dialog.Close(self)
+
+    def Destroy(self):
+        wx.Dialog.Destroy(self)
+
+
+
+class PyHoca_MessageWindow_Ok(PyHoca_MessageWindow):
+    def __init__(self, _PyHocaGUI, shortmsg=None, custom_message=None, icon='session_warning'):
+        PyHoca_MessageWindow.__init__(self, _PyHocaGUI, shortmsg=shortmsg, custom_message=custom_message, icon=icon, buttontype='ok')
+
+class PyHoca_MessageWindow_OkCancel(PyHoca_MessageWindow):
+    def __init__(self, _PyHocaGUI, shortmsg=None, custom_message=None, icon='session_warning'):
+        PyHoca_MessageWindow.__init__(self, _PyHocaGUI, shortmsg=shortmsg, custom_message=custom_message,  icon=icon, buttontype='okcancel')
+
+class PyHoca_MessageWindow_CancelOk(PyHoca_MessageWindow):
+    def __init__(self, _PyHocaGUI, shortmsg=None, custom_message=None, icon='session_warning'):
+        PyHoca_MessageWindow.__init__(self, _PyHocaGUI, shortmsg=shortmsg, custom_message=custom_message, icon=icon, buttontype='cancelok')
+
+class PyHoca_MessageWindow_YesNo(PyHoca_MessageWindow):
+    def __init__(self, _PyHocaGUI, shortmsg=None, custom_message=None, icon='session_warning'):
+        PyHoca_MessageWindow.__init__(self, _PyHocaGUI, shortmsg=shortmsg, custom_message=custom_message, icon=icon, buttontype='yesno')
+
+class PyHoca_MessageWindow_NoYes(PyHoca_MessageWindow):
+    def __init__(self, _PyHocaGUI, shortmsg=None, custom_message=None, icon='session_warning'):
+        PyHoca_MessageWindow.__init__(self, _PyHocaGUI, shortmsg=shortmsg, custom_message=custom_message, icon=icon, buttontype='noyes')
+


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