diff --git a/server/src/uds/transports/HTML5RDP/html5rdp.py b/server/src/uds/transports/HTML5RDP/html5rdp.py index 9dfa76b4..7168412f 100644 --- a/server/src/uds/transports/HTML5RDP/html5rdp.py +++ b/server/src/uds/transports/HTML5RDP/html5rdp.py @@ -246,11 +246,16 @@ class HTML5RDPTransport(transports.Transport): forceNewWindow = gui.ChoiceField( order=91, - tooltip=_( - 'If checked, every connection will try to open its own window instead of reusing the "global" one.' - ), + label=_('Force new HTML Window'), + tooltip=_('Select windows behavior for new connections on HTML5'), + required=True, + values=[ + gui.choiceItem(gui.FALSE, _('Open every connection on the same window, but keeps UDS window.')), + gui.choiceItem(gui.TRUE, _('Force every connection to be opened on a new window.')), + gui.choiceItem('overwrite', _('Override UDS window and replace it with the connection.')), + ], defvalue=gui.FALSE, - tab=gui.ADVANCED_TAB, + tab=gui.ADVANCED_TAB ) def initialize(self, values: 'Module.ValuesType'): @@ -412,11 +417,13 @@ class HTML5RDPTransport(transports.Transport): ticket = models.TicketStore.create(params, validity=self.ticketValidity.num()) - onw = ( - '&o_n_w={};'.format(hash(transport.name)) - if self.forceNewWindow.isTrue() - else '' - ) + onw = '' + if self.forceNewWindow.value == gui.TRUE: + onw = 'o_n_w={}' + elif self.forceNewWindow.value == 'overwrite': + onw = 'o_s_w=yes' + onw = onw.format(hash(transport.name)) + return str( "{}/guacamole/#/?data={}.{}{}".format( self.guacamoleServer.value, ticket, scrambler, onw diff --git a/server/src/uds/transports/HTML5VNC/html5vnc.py b/server/src/uds/transports/HTML5VNC/html5vnc.py index 57bad60d..7c51d1ad 100644 --- a/server/src/uds/transports/HTML5VNC/html5vnc.py +++ b/server/src/uds/transports/HTML5VNC/html5vnc.py @@ -191,7 +191,13 @@ class HTML5VNCTransport(transports.Transport): scrambler = cryptoManager().randomString(32) ticket = models.TicketStore.create(params, validity=self.ticketValidity.num()) - onw = '&o_n_w={};'.format(hash(transport.name)) if self.forceNewWindow.isTrue() else '' + onw = '' + if self.forceNewWindow.value == gui.TRUE: + onw = 'o_n_w={}' + elif self.forceNewWindow.value == 'overwrite': + onw = 'o_s_w=yes' + onw = onw.format(hash(transport.name)) + return str( "{}/guacamole/#/?data={}.{}{}".format( self.guacamoleServer.value,