Merge remote-tracking branch 'origin/v3.5'

This commit is contained in:
Adolfo Gómez García 2021-10-06 12:39:06 +02:00
commit 840a7a02bd

View File

@ -129,7 +129,7 @@ class HTML5RDPTransport(transports.Transport):
) )
wallpaper = gui.CheckBoxField( wallpaper = gui.CheckBoxField(
label=_('Show wallpaper'), label=_('Show wallpaper'),
order=20, order=18,
tooltip=_( tooltip=_(
'If checked, the wallpaper and themes will be shown on machine (better user experience, more bandwidth)' 'If checked, the wallpaper and themes will be shown on machine (better user experience, more bandwidth)'
), ),
@ -137,19 +137,19 @@ class HTML5RDPTransport(transports.Transport):
) )
desktopComp = gui.CheckBoxField( desktopComp = gui.CheckBoxField(
label=_('Allow Desk.Comp.'), label=_('Allow Desk.Comp.'),
order=22, order=19,
tooltip=_('If checked, desktop composition will be allowed'), tooltip=_('If checked, desktop composition will be allowed'),
tab=gui.PARAMETERS_TAB, tab=gui.PARAMETERS_TAB,
) )
smooth = gui.CheckBoxField( smooth = gui.CheckBoxField(
label=_('Font Smoothing'), label=_('Font Smoothing'),
order=23, order=20,
tooltip=_('If checked, fonts smoothing will be allowed (windows clients only)'), tooltip=_('If checked, fonts smoothing will be allowed (windows clients only)'),
tab=gui.PARAMETERS_TAB, tab=gui.PARAMETERS_TAB,
) )
enableAudio = gui.CheckBoxField( enableAudio = gui.CheckBoxField(
label=_('Enable Audio'), label=_('Enable Audio'),
order=24, order=21,
tooltip=_( tooltip=_(
'If checked, the audio will be redirected to remote session (if client browser supports it)' 'If checked, the audio will be redirected to remote session (if client browser supports it)'
), ),
@ -158,7 +158,7 @@ class HTML5RDPTransport(transports.Transport):
) )
enableAudioInput = gui.CheckBoxField( enableAudioInput = gui.CheckBoxField(
label=_('Enable Microphone'), label=_('Enable Microphone'),
order=24, order=22,
tooltip=_( tooltip=_(
'If checked, the microphone will be redirected to remote session (if client browser supports it)' 'If checked, the microphone will be redirected to remote session (if client browser supports it)'
), ),
@ -166,7 +166,7 @@ class HTML5RDPTransport(transports.Transport):
) )
enablePrinting = gui.CheckBoxField( enablePrinting = gui.CheckBoxField(
label=_('Enable Printing'), label=_('Enable Printing'),
order=25, order=23,
tooltip=_( tooltip=_(
'If checked, the printing will be redirected to remote session (if client browser supports it)' 'If checked, the printing will be redirected to remote session (if client browser supports it)'
), ),
@ -174,14 +174,27 @@ class HTML5RDPTransport(transports.Transport):
) )
enableFileSharing = gui.ChoiceField( enableFileSharing = gui.ChoiceField(
label=_('File Sharing'), label=_('File Sharing'),
order=22, order=24,
tooltip=_('File upload/download redirection policy'), tooltip=_('File upload/download redirection policy'),
defvalue='false', defvalue='false',
values=[ values=[
{'id': 'false', 'text': 'Disable file sharing'}, {'id': 'false', 'text': _('Disable file sharing')},
{'id': 'down', 'text': 'Allow download only'}, {'id': 'down', 'text': _('Allow download only')},
{'id': 'up', 'text': 'Allow upload only'}, {'id': 'up', 'text': _('Allow upload only')},
{'id': 'true', 'text': 'Enable file sharing'}, {'id': 'true', 'text': _('Enable file sharing')},
],
tab=gui.PARAMETERS_TAB,
)
enableClipboard = gui.ChoiceField(
label=_('Clipboard'),
order=25,
tooltip=_('Clipboard redirection policy'),
defvalue='enabled',
values=[
{'id': 'disabled', 'text': _('Disable clipboard')},
{'id': 'dis-copy', 'text': _('Disable copy from remote')},
{'id': 'dis-paste', 'text': _('Disable paste to remote')},
{'id': 'enabled', 'text': _('Enable clipboard')}
], ],
tab=gui.PARAMETERS_TAB, tab=gui.PARAMETERS_TAB,
) )
@ -197,59 +210,24 @@ class HTML5RDPTransport(transports.Transport):
gui.choiceItem('en-gb-qwerty', _('English (GB) keyboard')), gui.choiceItem('en-gb-qwerty', _('English (GB) keyboard')),
gui.choiceItem('es-es-qwerty', _('Spanish keyboard')), gui.choiceItem('es-es-qwerty', _('Spanish keyboard')),
gui.choiceItem('es-latam-qwerty', _('Latin American keyboard')), gui.choiceItem('es-latam-qwerty', _('Latin American keyboard')),
gui.choiceItem('da-dk-querty', _('Danish keyboard')),
gui.choiceItem('de-de-qwertz', _('German keyboard (qwertz)')), gui.choiceItem('de-de-qwertz', _('German keyboard (qwertz)')),
gui.choiceItem('fr-fr-azerty', _('French keyboard (azerty)')), gui.choiceItem('fr-fr-azerty', _('French keyboard (azerty)')),
gui.choiceItem('fr-ch-qwertz', _('Swiss French keyboard (qwertz)')), gui.choiceItem('fr-be-azerty', _('Belgian French keyboard (azerty)')),
gui.choiceItem('de-ch-qwertz', _('Swiss German keyboard (qwertz)')), gui.choiceItem('de-ch-qwertz', _('Swiss German keyboard (qwertz)')),
gui.choiceItem('fr-ch-qwertz', _('Swiss French keyboard (qwertz)')),
gui.choiceItem('hu-hu-qwerty', _('Hungarian keyboard')),
gui.choiceItem('it-it-qwerty', _('Italian keyboard')), gui.choiceItem('it-it-qwerty', _('Italian keyboard')),
gui.choiceItem('sv-se-qwerty', _('Swedish keyboard')),
gui.choiceItem('ja-jp-qwerty', _('Japanese keyboard')), gui.choiceItem('ja-jp-qwerty', _('Japanese keyboard')),
gui.choiceItem('pt-br-qwerty', _('Brazilian keyboard')), gui.choiceItem('no-no-querty', _('Norwegian keyboard')),
gui.choiceItem('pt-br-qwerty', _('Portuguese Brazilian keyboard')),
gui.choiceItem('sv-se-qwerty', _('Swedish keyboard')),
gui.choiceItem('tr-tr-qwerty', _('Turkish keyboard')),
gui.choiceItem('failsafe', _('Failsafe')), gui.choiceItem('failsafe', _('Failsafe')),
], ],
defvalue='-', defvalue='-',
tab=gui.PARAMETERS_TAB, tab=gui.PARAMETERS_TAB,
) )
security = gui.ChoiceField(
order=27,
label=_('Security'),
tooltip=_('Connection security mode for Guacamole RDP connection'),
required=True,
values=[
gui.choiceItem(
'any', _('Any (Allow the server to choose the type of auth)')
),
gui.choiceItem(
'rdp',
_('RDP (Standard RDP encryption. Should be supported by all servers)'),
),
gui.choiceItem(
'nla',
_(
'NLA (Network Layer authentication. Requires VALID username&password, or connection will fail)'
),
),
gui.choiceItem(
'nla-ext',
_(
'NLA extended (Network Layer authentication. Requires VALID username&password, or connection will fail)'
),
),
gui.choiceItem('tls', _('TLS (Transport Security Layer encryption)')),
],
defvalue='any',
tab=gui.PARAMETERS_TAB,
)
rdpPort = gui.NumericField(
order=29,
length=5, # That is, max allowed value is 65535
label=_('RDP Port'),
tooltip=_('Use this port as RDP port. Defaults to 3389.'),
tab=gui.PARAMETERS_TAB,
required=True, #: Numeric fields have always a value, so this not really needed
defvalue='3389',
)
ticketValidity = gui.NumericField( ticketValidity = gui.NumericField(
length=3, length=3,
@ -285,10 +263,50 @@ class HTML5RDPTransport(transports.Transport):
defvalue=gui.FALSE, defvalue=gui.FALSE,
tab=gui.ADVANCED_TAB, tab=gui.ADVANCED_TAB,
) )
security = gui.ChoiceField(
order=92,
label=_('Security'),
tooltip=_('Connection security mode for Guacamole RDP connection'),
required=True,
values=[
gui.choiceItem(
'any', _('Any (Allow the server to choose the type of auth)')
),
gui.choiceItem(
'rdp',
_('RDP (Standard RDP encryption. Should be supported by all servers)'),
),
gui.choiceItem(
'nla',
_(
'NLA (Network Layer authentication. Requires VALID username&password, or connection will fail)'
),
),
gui.choiceItem(
'nla-ext',
_(
'NLA extended (Network Layer authentication. Requires VALID username&password, or connection will fail)'
),
),
gui.choiceItem('tls', _('TLS (Transport Security Layer encryption)')),
],
defvalue='any',
tab=gui.ADVANCED_TAB,
)
rdpPort = gui.NumericField(
order=93,
length=5, # That is, max allowed value is 65535
label=_('RDP Port'),
tooltip=_('Use this port as RDP port. Defaults to 3389.'),
required=True, #: Numeric fields have always a value, so this not really needed
defvalue='3389',
tab=gui.ADVANCED_TAB,
)
customGEPath = gui.TextField( customGEPath = gui.TextField(
label=_('Glyptodon Enterprise context path'), label=_('Glyptodon Enterprise context path'),
order=92, order=94,
tooltip=_( tooltip=_(
'Customized path for Glyptodon Enterprise tunnel. (Only valid for Glyptodon Enterprise Tunnel)' 'Customized path for Glyptodon Enterprise tunnel. (Only valid for Glyptodon Enterprise Tunnel)'
), ),
@ -298,6 +316,7 @@ class HTML5RDPTransport(transports.Transport):
tab=gui.ADVANCED_TAB, tab=gui.ADVANCED_TAB,
) )
def initialize(self, values: 'Module.ValuesType'): def initialize(self, values: 'Module.ValuesType'):
if not values: if not values:
return return
@ -413,7 +432,11 @@ class HTML5RDPTransport(transports.Transport):
'resize-method': 'display-update', 'resize-method': 'display-update',
'ignore-cert': 'true', 'ignore-cert': 'true',
'security': self.security.value, 'security': self.security.value,
'enable-drive': self.enableFileSharing.value in ('true', 'down', 'up'),
'disable-upload': self.enableFileSharing.value in ('true', 'up'),
'drive-path': '/share/{}'.format(user.uuid), 'drive-path': '/share/{}'.format(user.uuid),
'disable-copy': self.enableClipboard.value in ('dis-copy', 'disabled'),
'disable-paste': self.enableClipboard.value in ('dis-paste', 'disabled'),
'create-drive-path': 'true', 'create-drive-path': 'true',
'ticket-info': { 'ticket-info': {
'userService': userService.uuid, 'userService': userService.uuid,
@ -436,15 +459,6 @@ class HTML5RDPTransport(transports.Transport):
if domain: if domain:
params['domain'] = domain params['domain'] = domain
if self.enableFileSharing.value == 'true':
params['enable-drive'] = 'true'
elif self.enableFileSharing.value == 'down':
params['enable-drive'] = 'true'
params['disable-upload'] = 'true'
elif self.enableFileSharing.value == 'up':
params['enable-drive'] = 'true'
params['disable-download'] = 'true'
if self.serverLayout.value != '-': if self.serverLayout.value != '-':
params['server-layout'] = self.serverLayout.value params['server-layout'] = self.serverLayout.value