[X2Go-Commits] python-x2go.git - build-baikal (branch) updated: 0.2.0.1-6-g699da4c

X2Go dev team git-admin at x2go.org
Wed Jan 8 15:27:07 CET 2014


The branch, build-baikal has been updated
       via  699da4c0fe1a13fc8e0a4988360b4101348cce77 (commit)
      from  6184896fab1e7e2551f561e854db30e07d4ec032 (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/session.py  |   60 +++++++++++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 55 insertions(+), 7 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index b100123..e736b5b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,8 @@ python-x2go (0.2.0.2-0~x2go1) UNRELEASED; urgency=low
       forwarding tunnel.
     - Improve session management, handle exceptions more gracefully.
     - Ignoring timeouts for x2golistmounts and x2golistdesktops.
+    - Add support to X2goSession class to launch sessions for the Python
+      command line in five steps.
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Wed, 30 May 2012 00:27:03 +0200
 
diff --git a/x2go/session.py b/x2go/session.py
index 6350d0c..8fe7b98 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -25,7 +25,30 @@ This class is normally embedded into the context of an L{X2goClient}
 instance, but it is also possible to address L{X2goSession}s directly via this
 class.
 
+To launch a session manually from the Python interactive shell, perform these
+simple steps::
+
+  $ python
+  Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) 
+  [GCC 4.4.5] on linux2
+  Type "help", "copyright", "credits" or "license" for more information.
+  >>> import x2go
+  >>> import gevent
+  Xlib.protocol.request.QueryExtension
+  >>> s = x2go.session.X2goSession()
+  >>> s.set_server('<my.x2go.server>')
+  >>> s.set_port(<ssh-port>)
+  >>> s.connect('<my-login>', '<my-password>')
+  [<pidno>] (x2gocontrolsession-pylib) NOTICE: connecting to [<my.x2go.server>]:<ssh-port>
+  [<pidno>] (x2gosession-pylib) NOTICE: SSH host key verification for host [<my.x2go.server>]:<ssh-port> with SSH-RSA fingerprint ,,<ssh-fingerprint>'' initiated. We are seeing this X2Go server for the first time.
+  [<pidno>] (x2gosession-pylib) WARN: HOOK_check_host_dialog: host check requested for [<my.x2go.server>]:<ssh-port> with SSH-RSA fingerprint: ,,<ssh-fingerprint>''. Automatically adding host as known host.
+  True
+  >>> s.start(cmd="LXDE")
+  True
+  >>> while True: gevent.sleep(1)
+
 """
+
 __NAME__ = 'x2gosession-pylib'
 
 import os
@@ -105,7 +128,7 @@ class X2goSession(object):
     sessions etc.).
 
     """
-    def __init__(self, server=None, control_session=None,
+    def __init__(self, server=None, port=22, control_session=None,
                  use_sshproxy=False,
                  profile_id=None, profile_name='UNKNOWN',
                  session_name=None,
@@ -232,6 +255,7 @@ class X2goSession(object):
         self.profile_name = profile_name
         self.session_name = session_name
         self.server = server
+        self.port = port
 
         self._last_status = None
 
@@ -342,7 +366,7 @@ class X2goSession(object):
         if self.client_instance:
             self.client_instance.HOOK_profile_auto_connect(profile_name=self.profile_name)
         else:
-            self.logger('HOOK_auto_connect: profile ,,%s'' wants to auto-connect to the X2Go server.' % self.profile_name, loglevel=log.loglevel_WARN)
+            self.logger('HOOK_auto_connect: profile ,,%s\'\' wants to auto-connect to the X2Go server.' % self.profile_name, loglevel=log.loglevel_WARN)
 
     def HOOK_session_startup_failed(self):
         """\
@@ -352,7 +376,7 @@ class X2goSession(object):
         if self.client_instance:
             self.client_instance.HOOK_session_startup_failed(profile_name=self.profile_name)
         else:
-            self.logger('HOOK_session_startup_failed: session startup for session profile ,,%s'' failed.' % self.profile_name, loglevel=log.loglevel_WARN)
+            self.logger('HOOK_session_startup_failed: session startup for session profile ,,%s\'\' failed.' % self.profile_name, loglevel=log.loglevel_WARN)
 
     def HOOK_rforward_request_denied(self, server_port=0):
         """\
@@ -450,7 +474,7 @@ class X2goSession(object):
         if self.client_instance:
             return self.client_instance.HOOK_check_host_dialog(profile_name=self.profile_name, host=host, port=port, fingerprint=fingerprint, fingerprint_type=fingerprint_type)
         else:
-            self.logger('HOOK_check_host_dialog: host check requested for [%s]:%s with %s fingerprint: ,,%s.\'\'. Automatically adding host as known host.' % (host, port, fingerprint_type, fingerprint), loglevel=log.loglevel_WARN)
+            self.logger('HOOK_check_host_dialog: host check requested for [%s]:%s with %s fingerprint: ,,%s\'\'. Automatically adding host as known host.' % (host, port, fingerprint_type, fingerprint), loglevel=log.loglevel_WARN)
             return True
 
     def init_control_session(self):
@@ -539,6 +563,16 @@ class X2goSession(object):
         """
         self.server = server
 
+    def set_port(self, port):
+        """\
+        Modify server port after L{X2goSession} has already been initialized.
+
+        @param port: socket port of server to connect to
+        @type port: C{int}
+
+        """
+        self.port = port
+
     def set_profile_name(self, profile_name):
         """\
         Modify session profile name after L{X2goSession} has already been initialized.
@@ -1064,6 +1098,9 @@ class X2goSession(object):
             _params.update(self.control_params)
             _params.update(self.sshproxy_params)
 
+            if 'port' not in _params:
+                _params['port'] = self.port
+
             try:
                 self.connected = self.control_session.connect(self.server,
                                                               use_sshproxy=self.use_sshproxy, 
@@ -1477,7 +1514,7 @@ class X2goSession(object):
                     if not self.published_applications:
                         return self.start()
 
-    def resume(self, session_name=None, session_list=None):
+    def resume(self, session_name=None, session_list=None, cmd=None):
         """\
         Resume or continue a suspended / running X2Go session on the
         remote X2Go server.
@@ -1486,6 +1523,9 @@ class X2goSession(object):
         @type session_name: C{str}
         @param session_list: a session list to avoid a server-side session list query
         @type session_list: C{dict}
+        @param cmd: if starting a new session, manually hand over the command to be launched in
+            the new session
+        @type cmd: C{str}
 
         @return: returns C{True} if resuming the session has been successful, C{False} otherwise
         @rtype: C{bool}
@@ -1520,6 +1560,9 @@ class X2goSession(object):
                 # FIXME: test the code to see what exceptions may occur here...
                 raise
 
+            if cmd is not None:
+                self.terminal_params['cmd'] = cmd
+
             self.terminal_session = _control.resume(session_name=self.session_name,
                                                     session_instance=self,
                                                     session_list=session_list,
@@ -1606,16 +1649,19 @@ class X2goSession(object):
 
     __resume = resume
 
-    def start(self):
+    def start(self, cmd=None):
         """\
         Start a new X2Go session on the remote X2Go server.
 
+        @param cmd: manually hand over the command that is to be launched in the new session
+        @type cmd: C{str}
+
         @return: returns C{True} if starting the session has been successful, C{False} otherwise
         @rtype: C{bool}
 
         """
         self.session_name = None
-        return self.resume()
+        return self.resume(cmd=cmd)
     __start = start
 
     def share_desktop(self, desktop=None, user=None, display=None, share_mode=0, check_desktop_list=True):


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