[X2Go-Commits] python-x2go.git - build-baikal (branch) updated: 473fd7030473f69799c491a161b5281f13599be4
X2Go dev team
git-admin at x2go.org
Wed Jan 8 15:27:34 CET 2014
The branch, build-baikal has been updated
via 473fd7030473f69799c491a161b5281f13599be4 (commit)
from 926ebbbc9976ec45e3131f4dd814340ce9895933 (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:
x2go/__init__.py | 4 +-
x2go/backends/control/_stdout.py | 6 +-
x2go/backends/proxy/_nx3.py | 2 +-
x2go/backends/proxy/base.py | 14 ++-
x2go/backends/terminal/_stdout.py | 20 ++--
x2go/client.py | 199 +++++++++++++++++++++++++++++++------
x2go/defaults.py | 22 +++-
x2go/printqueue.py | 13 ++-
x2go/registry.py | 6 +-
x2go/session.py | 8 +-
10 files changed, 231 insertions(+), 63 deletions(-)
The diff of changes is:
diff --git a/x2go/__init__.py b/x2go/__init__.py
index effdd92..ef8146a 100644
--- a/x2go/__init__.py
+++ b/x2go/__init__.py
@@ -169,6 +169,7 @@ from client import X2goClient
from backends.profiles import X2goSessionProfiles
from backends.printing import X2goClientPrinting
from backends.settings import X2goClientSettings
+from session import X2goSession
from x2go_exceptions import *
from log import *
@@ -177,7 +178,8 @@ from cleanup import x2go_cleanup
from defaults import X2GOCLIENT_OS
from defaults import CURRENT_LOCAL_USER
from defaults import LOCAL_HOME
-from defaults import X2GO_SESSION_ROOTDIR
+from defaults import X2GO_CLIENT_ROOTDIR
+from defaults import X2GO_SESSIONS_ROOTDIR
from defaults import X2GO_SSH_ROOTDIR
if X2GOCLIENT_OS == 'Windows':
diff --git a/x2go/backends/control/_stdout.py b/x2go/backends/control/_stdout.py
index f0a06de..3377ff6 100644
--- a/x2go/backends/control/_stdout.py
+++ b/x2go/backends/control/_stdout.py
@@ -80,7 +80,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
list_backend=_X2goServerSessionList,
proxy_backend=_X2goProxy,
client_rootdir=os.path.join(defaults.LOCAL_HOME, defaults.X2GO_CLIENT_ROOTDIR),
- session_rootdir=os.path.join(defaults.LOCAL_HOME, defaults.X2GO_SESSION_ROOTDIR),
+ sessions_rootdir=os.path.join(defaults.LOCAL_HOME, defaults.X2GO_SESSIONS_ROOTDIR),
ssh_rootdir=os.path.join(defaults.LOCAL_HOME, defaults.X2GO_SSH_ROOTDIR),
logger=None, loglevel=log.loglevel_DEFAULT,
*args, **kwargs):
@@ -111,7 +111,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
self._proxy_backend = proxy_backend
self.client_rootdir = client_rootdir
- self.session_rootdir = session_rootdir
+ self.sessions_rootdir = sessions_rootdir
self.ssh_rootdir = ssh_rootdir
paramiko.SSHClient.__init__(self, *args, **kwargs)
@@ -378,7 +378,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
list_backend=self._list_backend,
proxy_backend=self._proxy_backend,
client_rootdir=self.client_rootdir,
- session_rootdir=self.session_rootdir,
+ sessions_rootdir=self.sessions_rootdir,
**kwargs)
if session_name is not None:
diff --git a/x2go/backends/proxy/_nx3.py b/x2go/backends/proxy/_nx3.py
index f229c3e..c6f8701 100644
--- a/x2go/backends/proxy/_nx3.py
+++ b/x2go/backends/proxy/_nx3.py
@@ -70,7 +70,7 @@ class X2goProxyNX3(base.X2goProxyBASE):
self.PROXY_CMD = "/usr/bin/nxproxy"
self.PROXY_ENV.update({
"NX_CLIENT": "/bin/true",
- "NX_ROOT": self.session_rootdir
+ "NX_ROOT": self.sessions_rootdir
})
self.PROXY_MODE = '-S'
if _X2GOCLIENT_OS == "Windows":
diff --git a/x2go/backends/proxy/base.py b/x2go/backends/proxy/base.py
index 585492e..7dc37e9 100644
--- a/x2go/backends/proxy/base.py
+++ b/x2go/backends/proxy/base.py
@@ -44,7 +44,7 @@ else:
import x2go.gevent_subprocess as subprocess
from x2go.defaults import LOCAL_HOME as _LOCAL_HOME
-from x2go.defaults import X2GO_SESSION_ROOTDIR as _X2GO_SESSION_ROOTDIR
+from x2go.defaults import X2GO_SESSIONS_ROOTDIR as _X2GO_SESSIONS_ROOTDIR
class X2goProxyBASE(threading.Thread):
@@ -69,8 +69,8 @@ class X2goProxyBASE(threading.Thread):
proxy = None
def __init__(self, session_info=None,
- session_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SESSION_ROOTDIR),
ssh_transport=None, session_log="session.log",
+ sessions_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SESSIONS_ROOTDIR),
logger=None, loglevel=log.loglevel_DEFAULT, ):
"""\
@param session_info: session information provided as an C{X2goServerSessionInfo} backend
@@ -94,7 +94,7 @@ class X2goProxyBASE(threading.Thread):
self.logger = copy.deepcopy(logger)
self.logger.tag = __NAME__
- self.session_rootdir = session_rootdir
+ self.sessions_rootdir = sessions_rootdir
self.session_info = session_info
self.ssh_transport = ssh_transport
self.session_log = session_log
@@ -146,6 +146,11 @@ class X2goProxyBASE(threading.Thread):
"""
self._keepalive = True
self.proxy = None
+
+ print self.session_info
+ print self.ssh_transport
+ print self.session_info.local_container
+
if self.session_info is None or self.ssh_transport is None:
return None
@@ -214,6 +219,5 @@ class X2goProxyBASE(threading.Thread):
threading.Thread.start(self)
while self.proxy is None:
gevent.sleep(.1)
- return self.proxy
-
+ return self.proxy
diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py
index f7e8c8e..91821d2 100644
--- a/x2go/backends/terminal/_stdout.py
+++ b/x2go/backends/terminal/_stdout.py
@@ -51,7 +51,7 @@ from x2go.cleanup import x2go_cleanup
from x2go.defaults import LOCAL_HOME as _LOCAL_HOME
from x2go.defaults import CURRENT_LOCAL_USER as _CURRENT_LOCAL_USER
from x2go.defaults import X2GO_CLIENT_ROOTDIR as _X2GO_CLIENT_ROOTDIR
-from x2go.defaults import X2GO_SESSION_ROOTDIR as _X2GO_SESSION_ROOTDIR
+from x2go.defaults import X2GO_SESSIONS_ROOTDIR as _X2GO_SESSIONS_ROOTDIR
from x2go.backends.info import X2goServerSessionInfo as _X2goServerSessionInfo
from x2go.backends.info import X2goServerSessionList as _X2goServerSessionList
@@ -226,7 +226,7 @@ class X2goTerminalSessionSTDOUT(object):
proxy_backend=_X2goProxy,
printing_backend=_X2goClientPrinting,
client_rootdir=os.path.join(_LOCAL_HOME, _X2GO_CLIENT_ROOTDIR),
- session_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SESSION_ROOTDIR),
+ sessions_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SESSIONS_ROOTDIR),
client_instance=None,
logger=None, loglevel=log.loglevel_DEFAULT):
"""\
@@ -253,7 +253,7 @@ class X2goTerminalSessionSTDOUT(object):
self.reverse_tunnels = self.control_session.get_transport().reverse_tunnels
self.client_rootdir = client_rootdir
- self.session_rootdir = session_rootdir
+ self.sessions_rootdir = sessions_rootdir
self.params = X2goSessionParams()
@@ -271,7 +271,7 @@ class X2goTerminalSessionSTDOUT(object):
self.params.rdp_server = rdp_server
self.params.rdp_options = rdp_options
- self.params.rootdir = (type(rootdir) is types.StringType) and rootdir or self.session_rootdir
+ self.params.rootdir = (type(rootdir) is types.StringType) and rootdir or self.sessions_rootdir
self.params.update()
self.profile_name = profile_name
@@ -282,7 +282,7 @@ class X2goTerminalSessionSTDOUT(object):
self.printing_backend = printing_backend
self.client_instance = client_instance
- self._mk_session_rootdir(self.params.rootdir)
+ self._mk_sessions_rootdir(self.params.rootdir)
self.session_info = session_info
if self.session_info is not None:
@@ -315,7 +315,7 @@ class X2goTerminalSessionSTDOUT(object):
self.session_info.clear()
- def _mk_session_rootdir(self, d):
+ def _mk_sessions_rootdir(self, d):
try:
os.mkdir(d)
@@ -680,8 +680,8 @@ class X2goTerminalSessionSTDOUT(object):
# set up SSH tunnel for X11 graphical elements
self.proxy = self.proxy_class(session_info=self.session_info,
- session_rootdir=self.session_rootdir,
ssh_transport=self.control_session.get_transport(),
+ sessions_rootdir=self.sessions_rootdir,
logger=self.logger)
self.proxy_subprocess = self.proxy.start_proxy()
self.active_threads.append(self.proxy)
@@ -714,7 +714,11 @@ class X2goTerminalSessionSTDOUT(object):
(stdin, stdout, stderr) = self.control_session._x2go_exec_command(cmd_line)
- self.proxy = self.proxy_class(self.session_info, self.control_session.get_transport(), logger=self.logger)
+ self.proxy = self.proxy_class(session_info=self.session_info,
+ ssh_transport=self.control_session.get_transport(),
+ sessions_rootdir=self.sessions_rootdir,
+ logger=self.logger
+ )
self.proxy_subprocess = self.proxy.start_proxy()
# local path may be a Windows path, so we use the path separator of the local system
diff --git a/x2go/client.py b/x2go/client.py
index 3a483bf..8bf016b 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -136,17 +136,29 @@ from defaults import X2GOCLIENT_OS as _X2GOCLIENT_OS
from defaults import LOCAL_HOME as _LOCAL_HOME
from defaults import CURRENT_LOCAL_USER as _CURRENT_LOCAL_USER
from defaults import X2GO_CLIENT_ROOTDIR as _X2GO_CLIENT_ROOTDIR
-from defaults import X2GO_SESSION_ROOTDIR as _X2GO_SESSION_ROOTDIR
+from defaults import X2GO_SESSIONS_ROOTDIR as _X2GO_SESSIONS_ROOTDIR
from defaults import X2GO_SSH_ROOTDIR as _X2GO_SSH_ROOTDIR
-
-from x2go.backends.control import X2goControlSession as _X2goControlSession
-from x2go.backends.terminal import X2goTerminalSession as _X2goTerminalSession
-from x2go.backends.info import X2goServerSessionInfo as _X2goServerSessionInfo
-from x2go.backends.info import X2goServerSessionList as _X2goServerSessionList
-from x2go.backends.proxy import X2goProxy as _X2goProxy
-from x2go.backends.profiles import X2goSessionProfiles as _X2goSessionProfiles
-from x2go.backends.settings import X2goClientSettings as _X2goClientSettings
-from x2go.backends.printing import X2goClientPrinting as _X2goClientPrinting
+from defaults import X2GO_SESSIONPROFILES_FILENAME as _X2GO_SESSIONPROFILES_FILENAME
+from defaults import X2GO_SETTINGS_FILENAME as _X2GO_SETTINGS_FILENAME
+from defaults import X2GO_PRINTING_FILENAME as _X2GO_PRINTING_FILENAME
+from defaults import X2GO_XCONFIG_FILENAME as _X2GO_XCONFIG_FILENAME
+
+from defaults import BACKENDS_CONTROLSESSION as _BACKENDS_CONTROLSESSION
+from defaults import BACKENDS_TERMINALSESSION as _BACKENDS_TERMINALSESSION
+from defaults import BACKENDS_SERVERSESSIONINFO as _BACKENDS_SERVERSESSIONINFO
+from defaults import BACKENDS_SERVERSESSIONLIST as _BACKENDS_SERVERSESSIONLIST
+from defaults import BACKENDS_PROXY as _BACKENDS_PROXY
+from defaults import BACKENDS_SESSIONPROFILES as _BACKENDS_SESSIONPROFILES
+from defaults import BACKENDS_CLIENTSETTINGS as _BACKENDS_CLIENTSETTINGS
+from defaults import BACKENDS_CLIENTPRINTING as _BACKENDS_CLIENTPRINTING
+
+import x2go.backends.control as control
+import x2go.backends.terminal as terminal
+import x2go.backends.info as info
+import x2go.backends.proxy as proxy
+import x2go.backends.profiles as profiles
+import x2go.backends.settings as settings
+import x2go.backends.printing as printing
if _X2GOCLIENT_OS == 'Windows':
from xserver import X2goClientXConfig, X2goXServer
@@ -163,17 +175,17 @@ class X2goClient(object):
use these methods: L{X2goClient.register_session()} and L{X2goClient.connect_session()}.
"""
def __init__(self, use_cache=True, start_xserver=False,
- control_backend=_X2goControlSession,
- terminal_backend=_X2goTerminalSession,
- info_backend=_X2goServerSessionInfo,
- list_backend=_X2goServerSessionList,
- proxy_backend=_X2goProxy,
- profiles_backend=_X2goSessionProfiles,
- settings_backend=_X2goClientSettings,
- printing_backend=_X2goClientPrinting,
- client_rootdir=os.path.join(_LOCAL_HOME, _X2GO_CLIENT_ROOTDIR),
- session_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SESSION_ROOTDIR),
- ssh_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SSH_ROOTDIR),
+ control_backend=control.X2goControlSession,
+ terminal_backend=terminal.X2goTerminalSession,
+ info_backend=info.X2goServerSessionInfo,
+ list_backend=info.X2goServerSessionList,
+ proxy_backend=proxy.X2goProxy,
+ profiles_backend=profiles.X2goSessionProfiles,
+ settings_backend=settings.X2goClientSettings,
+ printing_backend=printing.X2goClientPrinting,
+ client_rootdir=None,
+ sessions_rootdir=None,
+ ssh_rootdir=None,
logger=None, loglevel=log.loglevel_DEFAULT):
"""\
@param logger: you can pass an L{X2goLogger} object to the
@@ -199,15 +211,35 @@ class X2goClient(object):
self.info_backend = info_backend
self.list_backend = list_backend
self.proxy_backend = proxy_backend
+ self.profiles_backend = profiles_backend
self.settings_backend = settings_backend
self.printing_backend = printing_backend
- self.client_rootdir = client_rootdir
- self.session_rootdir = session_rootdir
- self.ssh_rootdir = ssh_rootdir
+ self._detect_backend_classes()
+
+ self.client_rootdir = client_rootdir or os.path.join(_LOCAL_HOME, _X2GO_CLIENT_ROOTDIR)
+ self.sessions_rootdir = sessions_rootdir or os.path.join(_LOCAL_HOME, _X2GO_SESSIONS_ROOTDIR)
+ self.ssh_rootdir = ssh_rootdir or os.path.join(_LOCAL_HOME, _X2GO_SSH_ROOTDIR)
+
+ if self.client_rootdir is not None:
+ self._has_custom_client_rootdir = True
+ _sessions_config_file = os.path.join(self.client_rootdir, _X2GO_SESSIONPROFILES_FILENAME)
+ _settings_config_file = os.path.join(self.client_rootdir, _X2GO_SETTINGS_FILENAME)
+ _printing_config_file = os.path.join(self.client_rootdir, _X2GO_PRINTING_FILENAME)
+ _xconfig_config_file = os.path.join(self.client_rootdir, _X2GO_XCONFIG_FILENAME)
+ self.session_profiles = self.profiles_backend(config_files=[_sessions_config_file], logger=self.logger)
+ self.client_settings = self.settings_backend(config_files=[_settings_config_file], logger=self.logger)
+ self.client_printing = self.printing_backend(config_files=[_printing_config_file], client_instance=self, logger=self.logger)
+ else:
+ self.session_profiles = self.profiles_backend(logger=self.logger)
+ self.client_settings = self.settings_backend(logger=self.logger)
+ self.client_printing = self.printing_backend(client_instance=self, logger=self.logger)
if _X2GOCLIENT_OS == 'Windows' and start_xserver:
- self.client_xconfig = X2goClientXConfig(logger=self.logger)
+ if self.client_rootdir:
+ self.client_xconfig = X2goClientXConfig(config_files=[_xconfig_config_file], logger=self.logger)
+ else:
+ self.client_xconfig = X2goClientXConfig(logger=self.logger)
if not self.client_xconfig.known_server:
self.HOOK_no_known_xserver_found()
elif not self.client_xconfig.running_xservers:
@@ -221,15 +253,10 @@ class X2goClient(object):
# presume the running XServer listens on :0
os.environ.update({'DISPLAY': 'localhost:0'})
- self.session_profiles = profiles_backend(logger=self.logger)
- self.session_registry = X2goSessionRegistry(
- logger=self.logger,
- )
+ self.session_registry = X2goSessionRegistry(logger=self.logger)
self.session_guardian = X2goSessionGuardian(self, enable_cache=use_cache, logger=self.logger)
if use_cache:
self.listsessions_cache = X2goListSessionsCache(self, logger=self.logger)
- self.client_settings = settings_backend(logger=self.logger)
- self.client_printing = printing_backend(client_instance=self, logger=self.logger)
self.use_cache = use_cache
@@ -245,6 +272,114 @@ class X2goClient(object):
def HOOK_on_session_got_terminated_from_within(self, session_uuid):
self.logger('session %s has been terminated from within the application' % self.session_registry(session_uuid).get_session_name(), loglevel=log.loglevel_WARN)
+ def _detect_backend_classes(self):
+
+
+ # CONTROL session backend
+ if type(self.control_backend) is types.StringType:
+ try:
+ _classname = _BACKENDS_CONTROLSESSION[self.control_backend]
+ except KeyError:
+ if self.control_backend in _BACKENDS_CONTROLSESSION.values():
+ _classname = self.control_backend
+ else:
+ raise x2go_exceptions.X2goBackendException('unknown control session backend name %s' % self.control_backend)
+ self.control_backend = eval('control.%s' % _classname)
+
+ # TERMINAL session backend
+ if type(self.terminal_backend) is types.StringType:
+ try:
+ _classname = _BACKENDS_TERMINALSESSION[self.terminal_backend]
+ except KeyError:
+ if self.terminal_backend in _BACKENDS_TERMINALSESSION.values():
+ _classname = self.terminal_backend
+ else:
+ raise x2go_exceptions.X2goBackendException('unknown terminal session backend name %s' % self.terminal_backend)
+ self.terminal_backend = eval('terminal.%s' % _classname)
+
+ # PROXY session backend
+ if type(self.proxy_backend) is types.StringType:
+ try:
+ _classname = _BACKENDS_PROXY[self.proxy_backend]
+ except KeyError:
+ if self.proxy_backend in _BACKENDS_PROXY.values():
+ _classname = self.proxy_backend
+ else:
+ raise x2go_exceptions.X2goBackendException('unknown proxy backend name %s' % self.proxy_backend)
+ self.proxy_backend = eval('proxy.%s' % _classname)
+
+ # server session info backend
+ if type(self.info_backend) is types.StringType:
+ try:
+ _classname = _BACKENDS_SERVERSESSIONINFO[self.info_backend]
+ except KeyError:
+ if self.info_backend in _BACKENDS_SERVERSESSIONINFO.values():
+ _classname = self.info_backend
+ else:
+ raise x2go_exceptions.X2goBackendException('unknown server session info backend name %s' % self.info_backend)
+ self.info_backend = eval('info.%s' % _classname)
+
+ # server session list backend
+ if type(self.list_backend) is types.StringType:
+ try:
+ _classname = _BACKENDS_SERVERSESSIONLIST[self.list_backend]
+ except KeyError:
+ if self.list_backend in _BACKENDS_SERVERSESSIONLIST.values():
+ _classname = self.list_backend
+ else:
+ raise x2go_exceptions.X2goBackendException('unknown server session info backend name %s' % self.list_backend)
+ self.list_backend = eval('info.%s' % _classname)
+
+ # session profiles backend
+ if type(self.profiles_backend) is types.StringType:
+ try:
+ _classname = _BACKENDS_SESSIONPROFILES[self.profiles_backend]
+ except KeyError:
+ if self.profiles_backend in _BACKENDS_SESSIONPROFILES.values():
+ _classname = self.profiles_backend
+ else:
+ raise x2go_exceptions.X2goBackendException('unknown session profiles backend name %s' % self.profiles_backend)
+ self.profiles_backend = eval('profiles.%s' % _classname)
+
+ # client settings backend
+ if type(self.settings_backend) is types.StringType:
+ try:
+ _classname = _BACKENDS_CLIENTSETTINGS[self.settings_backend]
+ except KeyError:
+ if self.settings_backend in _BACKENDS_CLIENTSETTINGS.values():
+ _classname = self.settings_backend
+ else:
+ raise x2go_exceptions.X2goBackendException('unknown client settings backend name %s' % self.settings_backend)
+ self.settings_backend = eval('settings.%s' % _classname)
+
+ # client printing backend
+ if type(self.printing_backend) is types.StringType:
+ try:
+ _classname = _BACKENDS_CLIENTPRINTING[self.printing_backend]
+ except KeyError:
+ if self.printing_backend in _BACKENDS_CLIENTPRINTING.values():
+ _classname = self.printing_backend
+ else:
+ raise x2go_exceptions.X2goBackendException('unknown client printing backend name %s' % self.printing_backend)
+ self.printing_backend = eval('printing.%s' % _classname)
+
+ def get_client_rootdir(self):
+ return self.client_rootdir
+ __get_client_rootdir = get_client_rootdir
+
+ @property
+ def has_custom_client_rootdir(self):
+ return self._has_custom_client_rootdir
+ __has_custom_client_rootdir = has_custom_client_rootdir
+
+ def get_sessions_rootdir(self):
+ return self.sessions_rootdir
+ __get_sessions_rootdir = get_sessions_rootdir
+
+ def get_ssh_rootdir(self):
+ return self.ssh_rootdir
+ __get_ssh_rootdir = get_ssh_rootdir
+
def __get_client_username(self):
"""\
Query the local user's username (i.e. the user running the X2go client).
@@ -390,7 +525,7 @@ class X2goClient(object):
settings_backend=self.settings_backend,
printing_backend=self.printing_backend,
client_rootdir=self.client_rootdir,
- session_rootdir=self.session_rootdir,
+ sessions_rootdir=self.sessions_rootdir,
ssh_rootdir=self.ssh_rootdir,
**_params)
diff --git a/x2go/defaults.py b/x2go/defaults.py
index 1f17cba..69cbbbc 100644
--- a/x2go/defaults.py
+++ b/x2go/defaults.py
@@ -35,12 +35,16 @@ import platform
X2GOCLIENT_OS = platform.system()
LOCAL_HOME = os.path.expanduser('~')
-X2GO_SESSION_ROOTDIR = '.x2go'
+X2GO_SESSIONS_ROOTDIR = '.x2go'
X2GO_CLIENT_ROOTDIR = '.x2goclient'
X2GO_SSH_ROOTDIR = os.path.join('.x2go','.ssh')
# setting OS dependent variables
if X2GOCLIENT_OS == "Windows":
+ # on Windows we will use the current directory as ,,ROOTDIR'' which
+ # will normally be the application directory
+ ROOT_DIR = os.path.abspath(os.path.curdir)
+ ETC_DIR = os.path.join(ROOT_DIR, 'etc')
import win32api
CURRENT_LOCAL_USER = win32api.GetUserName()
X2GO_SSH_ROOTDIR = '.ssh'
@@ -49,6 +53,8 @@ if X2GOCLIENT_OS == "Windows":
SUPPORTED_FOLDERSHARING = True
elif X2GOCLIENT_OS == "Linux":
+ ROOT_DIR = '/'
+ ETC_DIR = os.path.join(ROOT_DIR, 'etc', 'x2goclient')
import getpass
CURRENT_LOCAL_USER = getpass.getuser()
X2GO_SSH_ROOTDIR = '.ssh'
@@ -57,6 +63,8 @@ elif X2GOCLIENT_OS == "Linux":
SUPPORTED_FOLDERSHARING = True
elif X2GOCLIENT_OS == "Mac":
+ ROOT_DIR = '/'
+ ETC_DIR = os.path.join(ROOT_DIR, 'etc', 'x2goclient')
import getpass
CURRENT_LOCAL_USER = getpass.getuser()
X2GO_SSH_ROOTDIR = '.ssh'
@@ -127,20 +135,24 @@ BACKEND_CLIENTPRINTING_DEFAULT = 'X2goClientPrintingFILE'
## X2go Printing
##
+X2GO_SETTINGS_FILENAME = 'settings'
X2GO_SETTINGS_CONFIGFILES = [
- '/etc/x2goclient/settings',
+ os.path.join(ETC_DIR,X2GO_SETTINGS_FILENAME),
os.path.join(LOCAL_HOME, X2GO_CLIENT_ROOTDIR, 'settings'),
]
+X2GO_PRINTING_FILENAME = 'printing'
X2GO_PRINTING_CONFIGFILES = [
- '/etc/x2goclient/printing',
+ os.path.join(ETC_DIR,X2GO_PRINTING_FILENAME),
os.path.join(LOCAL_HOME, X2GO_CLIENT_ROOTDIR, 'printing'),
]
+X2GO_SESSIONPROFILES_FILENAME = 'sessions'
X2GO_SESSIONPROFILES_CONFIGFILES = [
- '/etc/x2goclient/sessions',
+ os.path.join(ETC_DIR,X2GO_SESSIONPROFILES_FILENAME),
os.path.join(LOCAL_HOME, X2GO_CLIENT_ROOTDIR, 'sessions'),
]
+X2GO_XCONFIG_FILENAME = 'xconfig'
X2GO_XCONFIG_CONFIGFILES = [
- '/etc/x2goclient/xconfig',
+ os.path.join(ETC_DIR,X2GO_XCONFIG_FILENAME),
os.path.join(LOCAL_HOME, X2GO_CLIENT_ROOTDIR, 'xconfig'),
]
diff --git a/x2go/printqueue.py b/x2go/printqueue.py
index 266ba61..4706e96 100644
--- a/x2go/printqueue.py
+++ b/x2go/printqueue.py
@@ -39,6 +39,7 @@ import defaults
# we hide the default values from epydoc (that's why we transform them to _UNDERSCORE variables)
from backends.printing import X2goClientPrinting as _X2goClientPrinting
+from defaults import X2GO_PRINTING_FILENAME as _X2GO_PRINTING_FILENAME
class X2goPrintQueue(threading.Thread):
"""\
@@ -83,6 +84,7 @@ class X2goPrintQueue(threading.Thread):
self.session_name = session_name
self.spool_dir = spool_dir
self.client_instance = client_instance
+ self.client_rootdir = client_instance.get_client_rootdir()
self.printing_backend = printing_backend
if print_action is not None:
self.set_print_action(print_action, logger=logger, **print_action_args)
@@ -208,7 +210,16 @@ def x2go_printjob_handler(job_file=None, pdf_file=None, job_title=None, print_ac
"""
if print_action is None:
- _printing = parent_thread.printing_backend(client_instance=parent_thread.client_instance, logger=logger)
+ if parent_thread.client_instance is not None and parent_thread.client_instance.has_custom_client_rootdir:
+ _printing = parent_thread.printing_backend(config_files=[os.path.join(parent_thread.client_instance.get_client_rootdir(), _X2GO_PRINTING_FILENAME)],
+ client_instance=parent_thread.client_instance,
+ logger=logger
+ )
+ else:
+ _printing = parent_thread.printing_backend(client_instance=parent_thread.client_instance,
+ logger=logger
+ )
+
print_action = _printing.print_action
print_action.profile_name = parent_thread.profile_name
print_action.session_name = parent_thread.session_name
diff --git a/x2go/registry.py b/x2go/registry.py
index acdb5d4..66f6af3 100644
--- a/x2go/registry.py
+++ b/x2go/registry.py
@@ -46,7 +46,7 @@ from x2go.backends.printing import X2goClientPrinting as _X2goClientPrinting
from defaults import LOCAL_HOME as _LOCAL_HOME
from defaults import X2GO_CLIENT_ROOTDIR as _X2GO_CLIENT_ROOTDIR
-from defaults import X2GO_SESSION_ROOTDIR as _X2GO_SESSION_ROOTDIR
+from defaults import X2GO_SESSIONS_ROOTDIR as _X2GO_SESSIONS_ROOTDIR
from defaults import X2GO_SSH_ROOTDIR as _X2GO_SSH_ROOTDIR
class X2goSessionRegistry(object):
@@ -134,7 +134,7 @@ class X2goSessionRegistry(object):
settings_backend=_X2goClientSettings,
printing_backend=_X2goClientPrinting,
client_rootdir=os.path.join(_LOCAL_HOME,_X2GO_CLIENT_ROOTDIR),
- session_rootdir=os.path.join(_LOCAL_HOME,_X2GO_SESSION_ROOTDIR),
+ sessions_rootdir=os.path.join(_LOCAL_HOME,_X2GO_SESSIONS_ROOTDIR),
ssh_rootdir=os.path.join(_LOCAL_HOME,_X2GO_SSH_ROOTDIR),
**kwargs):
@@ -152,7 +152,7 @@ class X2goSessionRegistry(object):
settings_backend=settings_backend,
printing_backend=printing_backend,
client_rootdir=client_rootdir,
- session_rootdir=session_rootdir,
+ sessions_rootdir=sessions_rootdir,
ssh_rootdir=ssh_rootdir,
logger=self.logger, **kwargs)
diff --git a/x2go/session.py b/x2go/session.py
index 7ad9c30..08248a0 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -46,7 +46,7 @@ from x2go.backends.printing import X2goClientPrinting as _X2goClientPrinting
from defaults import LOCAL_HOME as _LOCAL_HOME
from defaults import X2GO_CLIENT_ROOTDIR as _X2GO_CLIENT_ROOTDIR
-from defaults import X2GO_SESSION_ROOTDIR as _X2GO_SESSION_ROOTDIR
+from defaults import X2GO_SESSIONS_ROOTDIR as _X2GO_SESSIONS_ROOTDIR
from defaults import X2GO_SSH_ROOTDIR as _X2GO_SSH_ROOTDIR
from defaults import SUPPORTED_SOUND, SUPPORTED_PRINTING, SUPPORTED_FOLDERSHARING
@@ -77,7 +77,7 @@ class X2goSession(object):
settings_backend=_X2goClientSettings,
printing_backend=_X2goClientPrinting,
client_rootdir=os.path.join(_LOCAL_HOME, _X2GO_CLIENT_ROOTDIR),
- session_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SESSION_ROOTDIR),
+ sessions_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SESSIONS_ROOTDIR),
ssh_rootdir=os.path.join(_LOCAL_HOME, _X2GO_SSH_ROOTDIR),
known_hosts=None,
logger=None, loglevel=log.loglevel_DEFAULT,
@@ -110,7 +110,7 @@ class X2goSession(object):
self._settings_backend = settings_backend
self._printing_backend = printing_backend
self.client_rootdir = client_rootdir
- self.session_rootdir = session_rootdir
+ self.sessions_rootdir = sessions_rootdir
self.ssh_rootdir = ssh_rootdir
# the client instance is not deeply copiable
@@ -147,7 +147,7 @@ class X2goSession(object):
list_backend=list_backend,
proxy_backend=proxy_backend,
client_rootdir=client_rootdir,
- session_rootdir=session_rootdir,
+ sessions_rootdir=sessions_rootdir,
ssh_rootdir=ssh_rootdir,
logger=logger)
else:
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