[X2Go-Commits] [x2goclient] 91/94: Add X2go desktop sharing support.
git-admin at x2go.org
git-admin at x2go.org
Fri Dec 15 21:04:57 CET 2023
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to annotated tag 0.1.4.0
in repository x2goclient.
commit 976a7bf469b52fa3c710df05afa963468f653036
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Mon Jun 13 23:49:34 2011 +0200
Add X2go desktop sharing support.
---
debian/changelog | 7 +++++
debian/control | 2 +-
man/man1/pyhoca-cli.1 | 8 +++++
pyhoca-cli | 11 ++++---
pyhoca/cli/frontend.py | 84 +++++++++++++++++++++++++++++++++++---------------
5 files changed, 83 insertions(+), 29 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 53f20b3d..2882c60c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+pyhoca-cli (0.1.4.0-0~x2go3) UNRELEASED; urgency=low
+
+ * New upstream version (0.1.4.0):
+ - Add X2go desktop sharing support.
+
+ -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de> Mon, 13 Jun 2011 23:24:37 +0200
+
pyhoca-cli (0.1.3.3-0~x2go2) unstable; urgency=low
* fixes build-sequence
diff --git a/debian/control b/debian/control
index c646d668..4b282170 100644
--- a/debian/control
+++ b/debian/control
@@ -20,7 +20,7 @@ Architecture: all
Depends:
${misc:Depends},
python,
- python-x2go (>=0.1.0.0-0~0),
+ python-x2go (>=0.1.1.0-0~0),
python-argparse,
python-setproctitle
Description: A command line X2go client written in Python
diff --git a/man/man1/pyhoca-cli.1 b/man/man1/pyhoca-cli.1
index 10a21611..ef69c0f6 100644
--- a/man/man1/pyhoca-cli.1
+++ b/man/man1/pyhoca-cli.1
@@ -64,6 +64,11 @@ Start a new X2go session on server (default mode if no mode is explicitly specif
\*(T<\fB\-R, \-\-resume\fR \fI<SESSION_NAME>\fR\*(T>
Resume existing X2go session <SESSION_NAME> on server.
.TP
+\*(T<\fB\-D, \-\-share-desktop\fR \fI<USER>@<DISPLAY>\fR\*(T>
+Share an X2go session on the remote server specified by <USER>@<DISPLAY>,
+whereas <USER> can be the same user that is starting the share mode session or any
+other user that grants X2go desktop sharing for the current user.
+.TP
\*(T<\fB\-S, \-\-suspend\fR \fI<SESSION_NAME>\fR\*(T>
Suspend running X2go session <SESSION_NAME>.
.TP
@@ -106,6 +111,9 @@ A comma separated list of local folders that shall be made available in the remo
\*(T<\fB\-\-printing\fR\*(T>
Use X2go printing (default: disabled).
.TP
+\*(T<\fB\-\-share-mode\fR \fI{0|1}\fR\*(T>
+Share mode for X2go desktop sharing (0: view-only, 1: full access).
+.TP
\*(T<\fB\-\-clean-sessions\fR\*(T>
Clean all of the user's suspended/running sessions before starting a new one on the named X2go server.
.TP
diff --git a/pyhoca-cli b/pyhoca-cli
index 394a118b..9838a984 100755
--- a/pyhoca-cli
+++ b/pyhoca-cli
@@ -92,9 +92,11 @@ liblogger = x2go.X2goLogger()
action_options = [
{'args':['-N','--new'], 'default': False, 'action': 'store_true', 'help': 'start a new X2go session on server (default)', },
{'args':['-R','--resume'], 'default': None, 'metavar': 'SESSION_NAME', 'help': 'resume a suspended X2go session with name SESSION_NAME', },
+ {'args':['-D','--share-desktop'], 'default': None, 'metavar': 'USER at DISPLAY', 'help': 'share an X2go session on server specified by USER at DISPLAY', },
{'args':['-S','--suspend'], 'default': None, 'metavar': 'SESSION_NAME', 'help': 'suspend running X2go session SESSION_NAME', },
{'args':['-T','--terminate'], 'default': None, 'metavar': 'SESSION_NAME', 'help': 'terminate running X2go session SESSION_NAME', },
{'args':['-L','--list-sessions'], 'default': False, 'action': 'store_true', 'help': 'list user\'s X2go sessions on server', },
+ {'args':['--list-desktops'], 'default': False, 'action': 'store_true', 'help': 'list X2go desktop sessions that are available for sharing', },
{'args':['-l','--list-profiles'], 'default': False, 'action': 'store_true', 'help': 'list user\'s X2go pre-configured session profiles', },
{'args':['-P','--session-profile'], 'default': None, 'help': 'load x2goclient session profiles and use the session profile SESSION_PROFILE', },
]
@@ -116,6 +118,7 @@ x2go_options = [
{'args':['--add-to-known-hosts'], 'default': False, 'action': 'store_true', 'help': 'add RSA host key fingerprint to ~/.ssh/known_hosts if authenticity of server can\'t be established (default: not set)', },
{'args':['--sound'], 'default': 'pulse', 'choices': ('pulse', 'esd', 'none'), 'help': 'X2go server sound system (default: \'pulse\')', },
{'args':['--printing'], 'default': False, 'action': 'store_true', 'help': 'use X2go printing (default: disabled)', },
+ {'args':['--share-mode'], 'default': 0, 'help': 'share mode for X2go desktop sharing (0: view-only, 1: full access)', },
{'args':['-F', '--share-local-folders'], 'metavar': '<folder1>[,<folder2[,...]]', 'default': None, 'help': 'a comma separated list of local folder names to mount in the X2go session', },
{'args':['--clean-sessions'], 'default': False, 'action': 'store_true', 'help': 'clean all suspended sessions before starting a new one', },
{'args':['--time-to-wait'], 'default': '8', 'help': 'time to wait for session startup/resume (default: 8s)', },
@@ -217,9 +220,9 @@ Possible values for the --pack NX option are:
runtime_error ("argument --server is required", parser=p, exitcode=1)
# check for mutual exclusiveness of -N, -R, -S, -T and -L, -N is default if none of them is set
- if bool(a.new) + bool(a.resume) + bool(a.suspend) + bool(a.terminate) + bool(a.list_sessions) > 1:
- runtime_error ("modes --new, --resume, --suspend, --terminate and --list-sessions are mutually exclusive", parser=p, exitcode=2)
- if bool(a.new) + bool(a.resume) + bool(a.suspend) + bool(a.terminate) + bool(a.list_sessions) == 0:
+ if bool(a.new) + bool(a.resume) + bool(a.share_desktop) + bool(a.suspend) + bool(a.terminate) + bool(a.list_sessions) + bool(a.list_desktops) + bool(a.list_profiles)> 1:
+ runtime_error ("modes --new, --resume, --share-desktop, --suspend, --terminate, --list-sessions, --list-desktops and --list-profiles are mutually exclusive", parser=p, exitcode=2)
+ if bool(a.new) + bool(a.resume) + bool(a.share_desktop) + bool(a.suspend) + bool(a.terminate) + bool(a.list_sessions) + bool(a.list_desktops) + bool(a.list_profiles) == 0:
a.new = True
# check if pack method is available
@@ -227,7 +230,7 @@ Possible values for the --pack NX option are:
runtime_error("unknown pack method '%s'" % args.pack, parser=p, exitcode=10)
else:
- if not (a.resume or a.suspend or a.terminate or a.list_sessions or a.list_profiles):
+ if not (a.resume or a.share_desktop or a.suspend or a.terminate or a.list_sessions or a.list_desktops or a.list_profiles):
a.new = True
# X2go printing
diff --git a/pyhoca/cli/frontend.py b/pyhoca/cli/frontend.py
index af9a8941..6656cb18 100644
--- a/pyhoca/cli/frontend.py
+++ b/pyhoca/cli/frontend.py
@@ -86,27 +86,48 @@ class PyHocaCLI(x2go.X2goClient):
print "Username: %s" % self._X2goClient__get_session_username(s_hash)
print
session_infos = self._X2goClient__list_sessions(s_hash)
- for session_info in session_infos.values():
- print "Session Name: %s" % session_info
- print "-------------"
- print "cookie: %s" % session_info.cookie
- print "agent PID: %s" % session_info.agent_pid
- print "display: %s" % session_info.display
- print "status: %s" % session_info.status
- print "graphic port: %s" % session_info.graphics_port
- print "snd port: %s" % session_info.snd_port
- print "sshfs port: %s" % session_info.sshfs_port
- print "username: %s" % session_info.username
- print "hostname: %s" % session_info.hostname
- # TODO: turn into datetime object
- print "create date: %s" % session_info.date_created
- # TODO: turn into datetime object
- print "suspended since: %s" % session_info.date_suspended
- print
+ if session_infos:
+ for session_info in session_infos.values():
+ print "Session Name: %s" % session_info
+ print "-------------"
+ print "cookie: %s" % session_info.cookie
+ print "agent PID: %s" % session_info.agent_pid
+ print "display: %s" % session_info.display
+ print "status: %s" % session_info.status
+ print "graphic port: %s" % session_info.graphics_port
+ print "snd port: %s" % session_info.snd_port
+ print "sshfs port: %s" % session_info.sshfs_port
+ print "username: %s" % session_info.username
+ print "hostname: %s" % session_info.hostname
+ # TODO: turn into datetime object
+ print "create date: %s" % session_info.date_created
+ # TODO: turn into datetime object
+ print "suspended since: %s" % session_info.date_suspended
+ print
else:
print "No running/suspended sessions found on X2go server."
print
+ def list_desktops(self, s_hash):
+ """\
+ STILL UNDOCUMENTED
+ """
+ # retrieve a desktop list
+ print
+ print "X2go desktops available for sharing"
+ print "==================================="
+ _peername = self._X2goClient__get_session_server_peername(s_hash)
+ print "Host: %s - [%s]:%s" % (self._X2goClient__get_session_server_hostname(s_hash), _peername[0], _peername[1])
+ print "Username: %s" % self._X2goClient__get_session_username(s_hash)
+ print
+ desktop_list = self._X2goClient__list_desktops(s_hash)
+ if desktop_list:
+ for desktop_name in desktop_list:
+ print desktop_name
+ else:
+ print "No X2go desktop sessions found that are available for desktop sharing."
+ print
+
def list_profiles(self):
# retrieve a session list
print
@@ -133,7 +154,6 @@ class PyHocaCLI(x2go.X2goClient):
self.logger('cleaning up all running sessions from X2go server: %s' % _server, loglevel=x2go.loglevel_NOTICE, )
self._X2goClient__clean_sessions(s_hash)
-
def new_session(self, s_hash):
"""\
STILL UNDOCUMENTED
@@ -146,7 +166,6 @@ class PyHocaCLI(x2go.X2goClient):
self.logger('command from session profile to run is: %s' % self.session_registry(self.x2go_session_hash).get_session_cmd(), loglevel=x2go.loglevel_DEBUG, )
self._X2goClient__start_session(s_hash)
-
def resume_session(self, s_hash):
"""\
STILL UNDOCUMENTED
@@ -159,6 +178,19 @@ class PyHocaCLI(x2go.X2goClient):
else:
self._runtime_error('requested session not available on X2go server [%s]:%s' % (self.args.server, self.args.remote_ssh_port), exitcode=20)
+ def share_desktop_session(self, s_hash):
+ """\
+ STILL UNDOCUMENTED
+ """
+ # start a new session and run a command
+ _desktop = self.args.share_desktop
+ _share_mode = self.args.share_mode
+ self.logger('sharing X2go session: %s' % _desktop, loglevel=x2go.loglevel_INFO, )
+ try:
+ self._X2goClient__share_desktop_session(s_hash, desktop=_desktop, share_mode=_share_mode)
+ except x2go.X2goDesktopSharingException, e:
+ self._runtime_error('%s' % str(e), exitcode=54)
+
def suspend_session(self, s_hash):
"""\
@@ -172,7 +204,6 @@ class PyHocaCLI(x2go.X2goClient):
else:
self._runtime_error('requested session not available on X2go server [%s]:%s' % (self.args.server, self.args.remote_ssh_port), exitcode=21)
-
def terminate_session(self, s_hash):
"""\
STILL UNDOCUMENTED
@@ -185,7 +216,6 @@ class PyHocaCLI(x2go.X2goClient):
else:
self._runtime_error('requested session not available on X2go server [%s]:%s' % (self.args.server, self.args.remote_ssh_port), exitcode=22)
-
def __init__(self, args, logger=None, liblogger=None):
"""\
STILL UNDOCUMENTED
@@ -245,7 +275,6 @@ class PyHocaCLI(x2go.X2goClient):
share_local_folders=self.args.share_local_folders,
cmd=self.args.command)
-
def authenticate(self):
"""\
STILL UNDOCUMENTED
@@ -289,7 +318,6 @@ class PyHocaCLI(x2go.X2goClient):
except socket.error, e:
self._runtime_error('a socket error occured while establishing the connection: %s' % str(e), exitcode=-245)
-
def MainLoop(self):
"""\
STILL UNDOCUMENTED
@@ -306,6 +334,11 @@ class PyHocaCLI(x2go.X2goClient):
self.list_sessions(self.x2go_session_hash)
sys.exit(0)
+ if self.args.list_desktops:
+ # print a beautified desktop list for the user
+ self.list_desktops(self.x2go_session_hash)
+ sys.exit(0)
+
if self.args.list_profiles:
# print a beautified profile list for the user
self.list_profiles()
@@ -314,6 +347,9 @@ class PyHocaCLI(x2go.X2goClient):
if self.args.resume:
self.resume_session(self.x2go_session_hash)
+ if self.args.share_desktop:
+ self.share_desktop_session(self.x2go_session_hash)
+
elif self.args.suspend:
self.suspend_session(self.x2go_session_hash)
@@ -324,7 +360,7 @@ class PyHocaCLI(x2go.X2goClient):
self.new_session(self.x2go_session_hash)
# finally call the MainLoop of PyHocaCLI
- if not (self.args.new or self.args.resume or self.args.session_profile):
+ if not (self.args.new or self.args.resume or self.args.share_desktop or self.args.session_profile):
sys.exit(0)
# give the session some time to come up...
--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
More information about the x2go-commits
mailing list