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 4e17df006c8eb36d7247ad56abcfc60dda233501 Author: mike <mike@cdb5e8f1-f799-4276-8919-bce57fd91830> Date: Fri Nov 5 23:50:49 2010 +0000 * intermediate check-in on the way of proper session profile handling git-svn-id: https://svn.das-netzwerkteam.de/x2go/pyhoca-cli/trunk@28 cdb5e8f1-f799-4276-8919-bce57fd91830 --- pyhoca-cli | 67 ++++++++++++++++++++++++++++---------------------- pyhoca/cli/frontend.py | 55 ++++++++++++++++++++++------------------- 2 files changed, 67 insertions(+), 55 deletions(-) diff --git a/pyhoca-cli b/pyhoca-cli index 97bb404e..974f7856 100755 --- a/pyhoca-cli +++ b/pyhoca-cli @@ -76,7 +76,7 @@ action_options = [ {'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', }, - # NOT IMPLEMENTED {'args':['-I','--import-session'], 'default': False, 'action': 'store_true', 'help': 'import a session from an x2goclient config file and run it', }, + {'args':['-P','--session-profile'], 'default': None, 'help': 'load x2goclient session profiles and use the session profile SESSION_PROFILE', }, ] # debug options... debug_options = [ @@ -177,20 +177,6 @@ Possible values for the --pack NX option are: if a.version: version() - # the --server options is required for most operations - if not a.server: - 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: - a.new = True - - # check if pack method is available - if not x2go.utils.is_in_nx3packmethods(a.pack): - runtime_error("unknown pack method '%s'" % args.pack, parser=p, exitcode=10) - # if no username is given we use the uid under which this programme is run if a.username is None: a.username = current_user @@ -201,6 +187,22 @@ Possible values for the --pack NX option are: except ValueError: runtime_error("--time_to_wait value needs to be an integer value", parser=p, exitcode=80) + if not a.session_profile: + + # the --server options is required for most operations + if not a.server: + 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: + a.new = True + + # check if pack method is available + if not x2go.utils.is_in_nx3packmethods(a.pack): + runtime_error("unknown pack method '%s'" % args.pack, parser=p, exitcode=10) + # X2go printing if ((a.pdfview_cmd and a.printer) or (a.pdfview_cmd and a.save_to_folder) or @@ -257,21 +259,26 @@ Possible values for the --pack NX option are: if a.share_local_folders is not None: a.share_local_folders = a.share_local_folders.split(',') - ### - ### initialize SSH context - ### - # check if SERVER is in .ssh/config file, extract information from there... - ssh_config = paramiko.SSHConfig() - from pyhoca.cli import ssh_config_filename - ssh_config_fileobj = open(ssh_config_filename) - ssh_config.parse(ssh_config_fileobj) - ssh_host = ssh_config.lookup(a.server) - if ssh_host: - if 'hostname' in ssh_host.keys(): - a.server = ssh_host['hostname'] - if 'port' in ssh_host.keys(): - a.remote_ssh_port = ssh_host['port'] - ssh_config_fileobj.close() + + if a.server: + + ##### TODO: ssh_config to be moved into Python X2go!!!! + ### + ### initialize SSH context + ### + # check if SERVER is in .ssh/config file, extract information from there... + ssh_config = paramiko.SSHConfig() + from pyhoca.cli import ssh_config_filename + ssh_config_fileobj = open(ssh_config_filename) + ssh_config.parse(ssh_config_fileobj) + ssh_host = ssh_config.lookup(a.server) + if ssh_host: + if 'hostname' in ssh_host.keys(): + a.server = ssh_host['hostname'] + if 'port' in ssh_host.keys(): + a.remote_ssh_port = ssh_host['port'] + ssh_config_fileobj.close() + # check if ssh priv key exists if a.ssh_privkey and not os.path.isfile(a.ssh_privkey): runtime_error("SSH private key %s file does not exist." % a.ssh_privkey, parser=p, exitcode=30) diff --git a/pyhoca/cli/frontend.py b/pyhoca/cli/frontend.py index 6df99468..11ff709a 100644 --- a/pyhoca/cli/frontend.py +++ b/pyhoca/cli/frontend.py @@ -176,24 +176,36 @@ class PyHocaCLI(x2go.X2goClient): self.logger('preparing requested X2go session', x2go.loglevel_NOTICE, ) x2go.X2goClient.__init__(self, logger=liblogger) - self.x2go_session_hash = self.register_session(args.server, port=int(self.args.remote_ssh_port), - username=self.args.username, - password=self.args.password, - key_filename=self.args.ssh_privkey, - add_to_known_hosts=self.args.add_to_known_hosts, - profile_name = 'Pyhoca-Client_Session', - session_type=self.args.session_type, - link=self.args.link, - geometry=self.args.geometry, - pack=self.args.pack, - cache_type='unix-kde', - kblayout=self.args.kbd_layout, - kbtype=self.args.kbd_type, - snd_system=self.args.sound, - printing=self.args.printing, - print_action=self.args.print_action, - print_action_args=self.args.print_action_args, - cmd=self.args.command) + _profile_id = None + if self.args.session_profile: + self.load_session_profiles() + _profile_id = self.get_profile_id(self.args.session_profile) + + if not _profile_id: + + self.x2go_session_hash = self.register_session(args.server, port=int(self.args.remote_ssh_port), + username=self.args.username, + password=self.args.password, + key_filename=self.args.ssh_privkey, + add_to_known_hosts=self.args.add_to_known_hosts, + custom_profile_name = 'Pyhoca-Client_Session', + session_type=self.args.session_type, + link=self.args.link, + geometry=self.args.geometry, + pack=self.args.pack, + cache_type='unix-kde', + kblayout=self.args.kbd_layout, + kbtype=self.args.kbd_type, + snd_system=self.args.sound, + printing=self.args.printing, + print_action=self.args.print_action, + print_action_args=self.args.print_action_args, + share_local_folders=self.args.share_local_folders, + cmd=self.args.command) + else: + + self.x2go_session_hash = self.register_session(profile_id = _profile_id) + self.with_session(self.x2go_session_hash).load_host_keys(ssh_known_hosts_filename) @@ -245,7 +257,6 @@ class PyHocaCLI(x2go.X2goClient): # finally call the MainLoop of PyHocaCLI if not (self.args.new or self.args.resume): - print 'exiting' sys.exit(0) # give the session some time to come up... @@ -271,12 +282,6 @@ class PyHocaCLI(x2go.X2goClient): time.sleep(2) session_duration +=2 - if session_duration > 2 and not mounted and self.args.share_local_folders is not None: - if self.with_session(self.x2go_session_hash).get_transport().reverse_tunnels['sshfs'][1] is not None: - for _folder in self.args.share_local_folders: - self.share_local_folder(self.x2go_session_hash, _folder) - mounted = True - # wait a little longer before telling the user what had happened time.sleep(2) -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git