mirror of
https://github.com/dkmstr/openuds.git
synced 2024-12-23 17:34:17 +03:00
X2Go Working on linux & Windows
This commit is contained in:
parent
3a58e0e446
commit
82097b67f4
@ -46,6 +46,7 @@ from uds.core.ui.UserInterface import gui
|
|||||||
from .user_services import AssignedService, CachedService, Groups, Transports, Publications, Changelog
|
from .user_services import AssignedService, CachedService, Groups, Transports, Publications, Changelog
|
||||||
from .services_pool_calendars import AccessCalendars, ActionsCalendars
|
from .services_pool_calendars import AccessCalendars, ActionsCalendars
|
||||||
from .services import Services
|
from .services import Services
|
||||||
|
from uds.core.managers import userServiceManager
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -74,10 +75,12 @@ class ServicesPools(ModelHandler):
|
|||||||
table_title = _('Service Pools')
|
table_title = _('Service Pools')
|
||||||
table_fields = [
|
table_fields = [
|
||||||
{'name': {'title': _('Name')}},
|
{'name': {'title': _('Name')}},
|
||||||
{'parent': {'title': _('Parent Service')}},
|
|
||||||
{'state': {'title': _('status'), 'type': 'dict', 'dict': State.dictionary()}},
|
{'state': {'title': _('status'), 'type': 'dict', 'dict': State.dictionary()}},
|
||||||
|
{'user_services_count': {'title': _('User services'), 'type': 'number'}},
|
||||||
|
{'user_services_in_preparation': {'title': _('In Preparation')}},
|
||||||
{'show_transports': {'title': _('Shows transports'), 'type': 'callback'}},
|
{'show_transports': {'title': _('Shows transports'), 'type': 'callback'}},
|
||||||
{'pool_group_name': {'title': _('Pool Group')}},
|
{'pool_group_name': {'title': _('Pool Group')}},
|
||||||
|
{'parent': {'title': _('Parent Service')}},
|
||||||
{'tags': {'title': _('tags'), 'visible': False}},
|
{'tags': {'title': _('tags'), 'visible': False}},
|
||||||
]
|
]
|
||||||
# Field from where to get "class" and prefix for that class, so this will generate "row-state-A, row-state-X, ....
|
# Field from where to get "class" and prefix for that class, so this will generate "row-state-A, row-state-X, ....
|
||||||
@ -97,6 +100,13 @@ class ServicesPools(ModelHandler):
|
|||||||
poolGroupName = item.servicesPoolGroup.name
|
poolGroupName = item.servicesPoolGroup.name
|
||||||
if item.servicesPoolGroup.image is not None:
|
if item.servicesPoolGroup.image is not None:
|
||||||
poolGroupThumb = item.servicesPoolGroup.image.thumb64
|
poolGroupThumb = item.servicesPoolGroup.image.thumb64
|
||||||
|
|
||||||
|
state = item.state
|
||||||
|
if item.isInMaintenance():
|
||||||
|
state = State.MAINTENANCE
|
||||||
|
elif userServiceManager().canInitiateServiceFromDeployedService(item) is False:
|
||||||
|
state = State.SLOWED_DOWN
|
||||||
|
|
||||||
val = {
|
val = {
|
||||||
'id': item.uuid,
|
'id': item.uuid,
|
||||||
'name': item.name,
|
'name': item.name,
|
||||||
@ -104,7 +114,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'parent': item.service.name,
|
'parent': item.service.name,
|
||||||
'parent_type': item.service.data_type,
|
'parent_type': item.service.data_type,
|
||||||
'comments': item.comments,
|
'comments': item.comments,
|
||||||
'state': item.state if item.isInMaintenance() is False else State.MAINTENANCE,
|
'state': state,
|
||||||
'thumb': item.image.thumb64 if item.image is not None else DEFAULT_THUMB_BASE64,
|
'thumb': item.image.thumb64 if item.image is not None else DEFAULT_THUMB_BASE64,
|
||||||
'service_id': item.service.uuid,
|
'service_id': item.service.uuid,
|
||||||
'provider_id': item.service.provider.uuid,
|
'provider_id': item.service.provider.uuid,
|
||||||
@ -117,6 +127,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'cache_l2_srvs': item.cache_l2_srvs,
|
'cache_l2_srvs': item.cache_l2_srvs,
|
||||||
'max_srvs': item.max_srvs,
|
'max_srvs': item.max_srvs,
|
||||||
'user_services_count': item.userServices.count(),
|
'user_services_count': item.userServices.count(),
|
||||||
|
'user_services_in_preparation': item.userServices.filter(state=State.PREPARING).count(),
|
||||||
'restrained': item.isRestrained(),
|
'restrained': item.isRestrained(),
|
||||||
'show_transports': item.show_transports,
|
'show_transports': item.show_transports,
|
||||||
'fallbackAccess': item.fallbackAccess,
|
'fallbackAccess': item.fallbackAccess,
|
||||||
|
@ -51,7 +51,7 @@ import requests
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
__updated__ = '2016-10-23'
|
__updated__ = '2016-11-04'
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -48,6 +48,7 @@ class State(object):
|
|||||||
FINISHED = 'F'
|
FINISHED = 'F'
|
||||||
BALANCING = 'H'
|
BALANCING = 'H'
|
||||||
INACTIVE = 'I'
|
INACTIVE = 'I'
|
||||||
|
SLOWED_DOWN = 'J' # Only used on admin dashboard, not internal real state
|
||||||
CANCELING = 'K'
|
CANCELING = 'K'
|
||||||
LAUNCHING = 'L'
|
LAUNCHING = 'L'
|
||||||
REMOVING = 'M'
|
REMOVING = 'M'
|
||||||
@ -78,7 +79,8 @@ class State(object):
|
|||||||
FOR_EXECUTE: _('Waiting execution'),
|
FOR_EXECUTE: _('Waiting execution'),
|
||||||
BALANCING: _('Balancing'),
|
BALANCING: _('Balancing'),
|
||||||
MAINTENANCE: _('In maintenance'),
|
MAINTENANCE: _('In maintenance'),
|
||||||
WAITING_OS: _('Waiting OS')
|
WAITING_OS: _('Waiting OS'),
|
||||||
|
SLOWED_DOWN: _('Too many preparing services'),
|
||||||
}
|
}
|
||||||
|
|
||||||
# States that are merely for "information" to the user. They don't contain any usable instance
|
# States that are merely for "information" to the user. They don't contain any usable instance
|
||||||
|
@ -209,6 +209,8 @@
|
|||||||
column.render = renderTextTransform(opts.dict) if opts.dict?
|
column.render = renderTextTransform(opts.dict) if opts.dict?
|
||||||
when "callback"
|
when "callback"
|
||||||
column.render = renderCallBack(v)
|
column.render = renderCallBack(v)
|
||||||
|
when "number"
|
||||||
|
column.render = $.fn.dataTable.render.number(get_format("THOUSAND_SEPARATOR"), get_format("DECIMAL_SEPARATOR"))
|
||||||
else
|
else
|
||||||
column.type = opts.type
|
column.type = opts.type
|
||||||
columns.push column
|
columns.push column
|
||||||
|
@ -46,7 +46,7 @@ import logging
|
|||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
|
|
||||||
__updated__ = '2016-11-02'
|
__updated__ = '2016-11-07'
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -81,23 +81,27 @@ class TX2GOTransport(BaseX2GOTransport):
|
|||||||
raise BaseX2GOTransport.ValidationException(_('Must use HOST:PORT in Tunnel Server Field'))
|
raise BaseX2GOTransport.ValidationException(_('Must use HOST:PORT in Tunnel Server Field'))
|
||||||
|
|
||||||
def getUDSTransportScript(self, userService, transport, ip, os, user, password, request):
|
def getUDSTransportScript(self, userService, transport, ip, os, user, password, request):
|
||||||
prefs = user.prefs('nx')
|
|
||||||
|
|
||||||
priv, pub = self.getAndPushKey('user', userService)
|
priv, pub = self.getAndPushKey('user', userService)
|
||||||
|
|
||||||
prefs = user.prefs('rdp')
|
prefs = user.prefs('nx')
|
||||||
|
|
||||||
ci = self.getConnectionInfo(userService, user, password)
|
ci = self.getConnectionInfo(userService, user, password)
|
||||||
username = ci['username']
|
username = ci['username']
|
||||||
|
|
||||||
width, height = CommonPrefs.getWidthHeight(prefs)
|
width, height = CommonPrefs.getWidthHeight(prefs)
|
||||||
|
|
||||||
|
logger.debug('')
|
||||||
|
|
||||||
xf = x2gofile.getTemplate(
|
xf = x2gofile.getTemplate(
|
||||||
pack=self.pack.value,
|
pack=self.pack.value,
|
||||||
quality=self.quality.value,
|
quality=self.quality.value,
|
||||||
sound=self.sound.isTrue(),
|
sound=self.sound.isTrue(),
|
||||||
soundSystem=self.sound.value,
|
soundSystem=self.sound.value,
|
||||||
windowManager=self.desktopType.value,
|
windowManager=self.desktopType.value,
|
||||||
exports=self.exports.isTrue())
|
exports=self.exports.isTrue(),
|
||||||
|
width=width,
|
||||||
|
height=height
|
||||||
|
)
|
||||||
|
|
||||||
tunpass = ''.join(random.choice(string.letters + string.digits) for _i in range(12))
|
tunpass = ''.join(random.choice(string.letters + string.digits) for _i in range(12))
|
||||||
tunuser = TicketStore.create(tunpass)
|
tunuser = TicketStore.create(tunpass)
|
||||||
|
@ -40,7 +40,7 @@ from . import x2gofile
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
__updated__ = '2016-10-24'
|
__updated__ = '2016-11-07'
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -66,23 +66,25 @@ class X2GOTransport(BaseX2GOTransport):
|
|||||||
quality = BaseX2GOTransport.quality
|
quality = BaseX2GOTransport.quality
|
||||||
|
|
||||||
def getUDSTransportScript(self, userService, transport, ip, os, user, password, request):
|
def getUDSTransportScript(self, userService, transport, ip, os, user, password, request):
|
||||||
prefs = user.prefs('nx')
|
|
||||||
|
|
||||||
priv, pub = self.getAndPushKey('user', userService)
|
priv, pub = self.getAndPushKey('user', userService)
|
||||||
|
|
||||||
prefs = user.prefs('rdp')
|
prefs = user.prefs('nx')
|
||||||
|
|
||||||
ci = self.getConnectionInfo(userService, user, password)
|
ci = self.getConnectionInfo(userService, user, password)
|
||||||
username = ci['username']
|
username = ci['username']
|
||||||
|
|
||||||
width, height = CommonPrefs.getWidthHeight(prefs)
|
width, height = CommonPrefs.getWidthHeight(prefs)
|
||||||
|
|
||||||
xf = x2gofile.getTemplate(
|
xf = x2gofile.getTemplate(
|
||||||
pack=self.pack.value,
|
pack=self.pack.value,
|
||||||
quality=self.quality.value,
|
quality=self.quality.value,
|
||||||
sound=self.sound.isTrue(),
|
sound=self.sound.isTrue(),
|
||||||
soundSystem=self.sound.value,
|
soundSystem=self.sound.value,
|
||||||
windowManager=self.desktopType.value,
|
windowManager=self.desktopType.value,
|
||||||
exports=self.exports.isTrue())
|
exports=self.exports.isTrue(),
|
||||||
|
width=width,
|
||||||
|
height=height
|
||||||
|
)
|
||||||
|
|
||||||
# data
|
# data
|
||||||
data = {
|
data = {
|
||||||
|
@ -3,25 +3,27 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
# pylint: disable=import-error, no-name-in-module
|
# pylint: disable=import-error, no-name-in-module
|
||||||
|
from PyQt4 import QtCore, QtGui
|
||||||
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from uds import tools # @UnresolvedImport
|
from uds import tools # @UnresolvedImport
|
||||||
|
|
||||||
executable = tools.findApp('remote-viewer')
|
import six
|
||||||
|
|
||||||
if executable is None:
|
|
||||||
raise Exception('''<p>You need to have installed virt-viewer to connect to this UDS service.</p>
|
|
||||||
<p>
|
|
||||||
Please, install appropriate package for your Linux system. (probably named something like <b>remote-viewer</b>)
|
|
||||||
</p>
|
|
||||||
''')
|
|
||||||
|
|
||||||
rsaPubKey = '''{m.rsa_key}'''
|
|
||||||
|
|
||||||
theFile = '''{m.r.as_file}'''
|
|
||||||
|
|
||||||
|
keyFile = tools.saveTempFile('''{m.key}''')
|
||||||
|
theFile = '''{m.xf}'''.format(export='/:1;', keyFile=keyFile.replace('\\', '/'), ip='{m.ip}', port='22')
|
||||||
filename = tools.saveTempFile(theFile)
|
filename = tools.saveTempFile(theFile)
|
||||||
|
|
||||||
subprocess.Popen([executable, filename])
|
# HOME=[temporal folder, where we create a .x2goclient folder and a sessions inside] pyhoca-cli -P UDS/test-session
|
||||||
|
|
||||||
# QtGui.QMessageBox.critical(parent, 'Notice', filename + ", " + executable, QtGui.QMessageBox.Ok)
|
executable = tools.findApp('x2goclient')
|
||||||
|
if executable is None:
|
||||||
|
raise Exception('''<p>You must have installed latest X2GO Client in order to connect to this UDS service.</p>
|
||||||
|
<p>Please, install the required packages for your platform</p>''')
|
||||||
|
|
||||||
|
subprocess.Popen([executable, '--session-conf={{}}'.format(filename), '--session=UDS/connect', '--close-disconnect', '--hide', '--no-menu', '--add-to-known-hosts'])
|
||||||
|
# tools.addFileToUnlink(filename)
|
||||||
|
# tools.addFileToUnlink(keyFile)
|
||||||
|
|
||||||
|
# QtGui.QMessageBox.critical(parent, 'Notice', executable + ' -- ' + keyFile + ', ' + filename, QtGui.QMessageBox.Ok) # @UndefinedVariable
|
||||||
|
@ -2,47 +2,35 @@
|
|||||||
# Saved as .py for easier editing
|
# Saved as .py for easier editing
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
# pylint: disable=import-error, no-name-in-module, undefined-variable
|
# pylint: disable=import-error, no-name-in-module, too-many-format-args, undefined-variable
|
||||||
import subprocess
|
|
||||||
|
|
||||||
from uds import tools # @UnresolvedImport
|
from PyQt4 import QtCore, QtGui
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
from uds.forward import forward # @UnresolvedImport
|
from uds.forward import forward # @UnresolvedImport
|
||||||
|
|
||||||
executable = tools.findApp('remote-viewer')
|
from uds import tools # @UnresolvedImport
|
||||||
|
|
||||||
if executable is None:
|
import six
|
||||||
raise Exception('''<p>You need to have installed virt-viewer to connect to this UDS service.</p>
|
|
||||||
<p>
|
|
||||||
Please, install appropriate package for your system.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Please, install appropriate package for your Linux system. (probably named something like <b>virt-viewer</b>)
|
|
||||||
</p>
|
|
||||||
''')
|
|
||||||
|
|
||||||
|
forwardThread, port = forward('{m.tunHost}', '{m.tunPort}', '{m.tunUser}', '{m.tunPass}', '{m.ip}', 22)
|
||||||
|
|
||||||
if {m.port} != -1: # @UndefinedVariable
|
if forwardThread.status == 2:
|
||||||
forwardThread1, port = forward('{m.tunHost}', '{m.tunPort}', '{m.tunUser}', '{m.tunPass}', '{m.ip}', {m.port}) # @UndefinedVariable
|
raise Exception('Unable to open tunnel')
|
||||||
|
|
||||||
if forwardThread1.status == 2:
|
tools.addTaskToWait(forwardThread)
|
||||||
raise Exception('Unable to open tunnel')
|
|
||||||
else:
|
|
||||||
port = -1
|
|
||||||
|
|
||||||
if {m.secure_port} != -1: # @UndefinedVariable
|
|
||||||
forwardThread2, secure_port = forwardThread1.clone('{m.ip}', {m.secure_port}) # @UndefinedVariable
|
|
||||||
|
|
||||||
if forwardThread2.status == 2:
|
|
||||||
raise Exception('Unable to open tunnel')
|
|
||||||
else:
|
|
||||||
secure_port = -1
|
|
||||||
|
|
||||||
theFile = '''{m.r.as_file}'''.format(
|
|
||||||
secure_port=secure_port,
|
|
||||||
port=port
|
|
||||||
)
|
|
||||||
|
|
||||||
|
keyFile = tools.saveTempFile('''{m.key}''')
|
||||||
|
theFile = '''{m.xf}'''.format(export='/:1;', keyFile=keyFile.replace('\\', '/'), ip='127.0.0.1', port=port)
|
||||||
filename = tools.saveTempFile(theFile)
|
filename = tools.saveTempFile(theFile)
|
||||||
|
|
||||||
|
# HOME=[temporal folder, where we create a .x2goclient folder and a sessions inside] pyhoca-cli -P UDS/test-session
|
||||||
|
|
||||||
subprocess.Popen([executable, filename])
|
executable = tools.findApp('x2goclient')
|
||||||
|
if executable is None:
|
||||||
|
raise Exception('''<p>You must have installed latest X2GO Client in order to connect to this UDS service.</p>
|
||||||
|
<p>Please, install the required packages for your platform</p>''')
|
||||||
|
|
||||||
|
subprocess.Popen([executable, '--session-conf={{}}'.format(filename), '--session=UDS/connect', '--close-disconnect', '--hide', '--no-menu', '--add-to-known-hosts'])
|
||||||
|
|
||||||
|
# QtGui.QMessageBox.critical(parent, 'Notice', filename + ", " + executable, QtGui.QMessageBox.Ok)
|
||||||
|
@ -4,7 +4,6 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
# pylint: disable=import-error, no-name-in-module
|
# pylint: disable=import-error, no-name-in-module
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
import win32crypt # @UnresolvedImport
|
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
@ -13,7 +12,7 @@ from uds import tools # @UnresolvedImport
|
|||||||
import six
|
import six
|
||||||
|
|
||||||
keyFile = tools.saveTempFile('''{m.key}''')
|
keyFile = tools.saveTempFile('''{m.key}''')
|
||||||
theFile = '''{m.xf}'''.format(exports='c:\\', keyFile=keyFile.replace('\\', '/'), ip='{m.ip}', port='22')
|
theFile = '''{m.xf}'''.format(export='c:\\', keyFile=keyFile.replace('\\', '/'), ip='{m.ip}', port='22')
|
||||||
filename = tools.saveTempFile(theFile)
|
filename = tools.saveTempFile(theFile)
|
||||||
|
|
||||||
x2goPath = os.environ['PROGRAMFILES(X86)'] + '\\x2goclient'
|
x2goPath = os.environ['PROGRAMFILES(X86)'] + '\\x2goclient'
|
||||||
@ -24,7 +23,7 @@ if executable is None:
|
|||||||
|
|
||||||
# C:\Program Files (x86)\\x2goclient>x2goclient.exe --session-conf=c:/temp/sessions --session=UDS/test-session --close-disconnect --hide --no-menu
|
# C:\Program Files (x86)\\x2goclient>x2goclient.exe --session-conf=c:/temp/sessions --session=UDS/test-session --close-disconnect --hide --no-menu
|
||||||
|
|
||||||
subprocess.Popen([executable, '--session-conf={{}}'.format(filename), '--session=UDS/connect', '--close-disconnect', '--hide', '--no-menu'])
|
subprocess.Popen([executable, '--session-conf={{}}'.format(filename), '--session=UDS/connect', '--close-disconnect', '--hide', '--no-menu', '--add-to-known-hosts'])
|
||||||
# tools.addFileToUnlink(filename)
|
# tools.addFileToUnlink(filename)
|
||||||
# tools.addFileToUnlink(keyFile)
|
# tools.addFileToUnlink(keyFile)
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ from __future__ import unicode_literals
|
|||||||
# pylint: disable=import-error, no-name-in-module, too-many-format-args, undefined-variable
|
# pylint: disable=import-error, no-name-in-module, too-many-format-args, undefined-variable
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
import win32crypt # @UnresolvedImport
|
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
from uds.forward import forward # @UnresolvedImport
|
from uds.forward import forward # @UnresolvedImport
|
||||||
@ -14,7 +13,7 @@ from uds import tools # @UnresolvedImport
|
|||||||
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
forwardThread, port = forward('{m.tunHost}', '{m.tunPort}', '{m.tunUser}', '{m.tunPass}', '{m.ip}', 3389)
|
forwardThread, port = forward('{m.tunHost}', '{m.tunPort}', '{m.tunUser}', '{m.tunPass}', '{m.ip}', 22)
|
||||||
|
|
||||||
if forwardThread.status == 2:
|
if forwardThread.status == 2:
|
||||||
raise Exception('Unable to open tunnel')
|
raise Exception('Unable to open tunnel')
|
||||||
@ -22,7 +21,7 @@ if forwardThread.status == 2:
|
|||||||
tools.addTaskToWait(forwardThread)
|
tools.addTaskToWait(forwardThread)
|
||||||
|
|
||||||
keyFile = tools.saveTempFile('''{m.key}''')
|
keyFile = tools.saveTempFile('''{m.key}''')
|
||||||
theFile = '''{m.xf}'''.format(exports='c:\\', keyFile=keyFile.replace('\\', '/'), ip='127.0.0.1', port=port)
|
theFile = '''{m.xf}'''.format(export='c:\\', keyFile=keyFile.replace('\\', '/'), ip='127.0.0.1', port=port)
|
||||||
filename = tools.saveTempFile(theFile)
|
filename = tools.saveTempFile(theFile)
|
||||||
|
|
||||||
x2goPath = os.environ['PROGRAMFILES(X86)'] + '\\x2goclient'
|
x2goPath = os.environ['PROGRAMFILES(X86)'] + '\\x2goclient'
|
||||||
@ -31,6 +30,6 @@ if executable is None:
|
|||||||
raise Exception('''<p>You must have installed latest X2GO Client in default program file folder in order to connect to this UDS service.</p>
|
raise Exception('''<p>You must have installed latest X2GO Client in default program file folder in order to connect to this UDS service.</p>
|
||||||
<p>You can download it for windows from <a href="http://wiki.x2go.org/doku.php">X2Go Site</a>.</p>''')
|
<p>You can download it for windows from <a href="http://wiki.x2go.org/doku.php">X2Go Site</a>.</p>''')
|
||||||
|
|
||||||
subprocess.Popen([executable, '--session-conf={{}}'.format(filename), '--session=UDS/connect', '--close-disconnect', '--hide', '--no-menu'])
|
subprocess.Popen([executable, '--session-conf={{}}'.format(filename), '--session=UDS/connect', '--close-disconnect', '--hide', '--no-menu', '--add-to-known-hosts'])
|
||||||
|
|
||||||
# QtGui.QMessageBox.critical(parent, 'Notice', filename + ", " + executable, QtGui.QMessageBox.Ok)
|
# QtGui.QMessageBox.critical(parent, 'Notice', filename + ", " + executable, QtGui.QMessageBox.Ok)
|
||||||
|
@ -43,14 +43,14 @@ fstunnel=true
|
|||||||
iconvto=UTF-8
|
iconvto=UTF-8
|
||||||
iconvfrom=ISO8859-1
|
iconvfrom=ISO8859-1
|
||||||
useiconv=false
|
useiconv=false
|
||||||
fullscreen=false
|
fullscreen={fullscreen}
|
||||||
multidisp=false
|
multidisp=false
|
||||||
display=1
|
display=1
|
||||||
maxdim=false
|
maxdim=false
|
||||||
rdpclient=rdesktop
|
rdpclient=rdesktop
|
||||||
directrdpsettings=
|
directrdpsettings=
|
||||||
width=800
|
width={width}
|
||||||
height=600
|
height={height}
|
||||||
dpi=96
|
dpi=96
|
||||||
setdpi=true
|
setdpi=true
|
||||||
xinerama=false
|
xinerama=false
|
||||||
@ -94,7 +94,23 @@ sshproxyautologin=false
|
|||||||
sshproxykrblogin=false
|
sshproxykrblogin=false
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def getTemplate(pack, quality, sound, soundSystem, windowManager, exports):
|
def getTemplate(pack, quality, sound, soundSystem, windowManager, exports, width, height):
|
||||||
trueFalse = lambda(x): 'true' if x else 'false'
|
trueFalse = lambda(x): 'true' if x else 'false'
|
||||||
export = 'export="{{export}}"' if exports else ''
|
export = 'export="{export}"' if exports else ''
|
||||||
return template.format(pack=pack, quality=quality, sound=trueFalse(sound), soundSystem=soundSystem, windowManager=windowManager, export=export)
|
if width == -1 or height == -1:
|
||||||
|
width = 800
|
||||||
|
height = 600
|
||||||
|
fullscreen = 'true'
|
||||||
|
else:
|
||||||
|
fullscreen = 'false'
|
||||||
|
return template.format(
|
||||||
|
pack=pack,
|
||||||
|
quality=quality,
|
||||||
|
sound=trueFalse(sound),
|
||||||
|
soundSystem=soundSystem,
|
||||||
|
windowManager=windowManager,
|
||||||
|
export=export,
|
||||||
|
width=width,
|
||||||
|
height=height,
|
||||||
|
fullscreen=fullscreen
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user