def getUDSTransportScript( # pylint: disable=too-many-locals self, userService: 'models.UserService', transport: 'models.Transport', ip: str, os: typing.Dict[str, str], user: '******', password: str, request: 'HttpRequest', ) -> typing.Tuple[str, str, typing.Mapping[str, typing.Any]]: # We use helper to keep this clean # prefs = user.prefs('rdp') ci = self.getConnectionInfo(userService, user, password) username, password, domain = ci['username'], ci['password'], ci[ 'domain'] # escape conflicting chars : Note, on 3.0 this should not be neccesary. Kept until more tests # password = password.replace('\\', '\\\\').replace('"', '\\"').replace("'", "\\'") # width, height = CommonPrefs.getWidthHeight(prefs) # depth = CommonPrefs.getDepth(prefs) width, height = self.screenSize.value.split('x') depth = self.colorDepth.value ticket = TicketStore.create_for_tunnel( userService=userService, port=3389, validity=self.tunnelWait.num() + 60, # Ticket overtime ) tunHost, tunPort = self.tunnelServer.value.split(':') r = RDPFile(width == '-1' or height == '-1', width, height, depth, target=os['OS']) r.enablecredsspsupport = ci.get( 'sso') == 'True' or self.credssp.isTrue() r.address = '{address}' r.username = username r.password = password r.domain = domain r.redirectPrinters = self.allowPrinters.isTrue() r.redirectSmartcards = self.allowSmartcards.isTrue() r.redirectDrives = self.allowDrives.value r.redirectSerials = self.allowSerials.isTrue() r.enableClipboard = self.allowClipboard.isTrue() r.redirectAudio = self.allowAudio.isTrue() r.redirectWebcam = self.allowWebcam.isTrue() r.showWallpaper = self.wallpaper.isTrue() r.multimon = self.multimon.isTrue() r.desktopComposition = self.aero.isTrue() r.smoothFonts = self.smooth.isTrue() r.enablecredsspsupport = self.credssp.isTrue() r.multimedia = self.multimedia.isTrue() r.alsa = self.alsa.isTrue() r.smartcardString = self.smartcardString.value r.printerString = self.printerString.value r.linuxCustomParameters = self.customParameters.value r.enforcedShares = self.enforceDrives.value osName = { OsDetector.Windows: 'windows', OsDetector.Linux: 'linux', OsDetector.Macintosh: 'macosx', }.get(os['OS']) if osName is None: return super().getUDSTransportScript(userService, transport, ip, os, user, password, request) sp: typing.MutableMapping[str, typing.Any] = { 'tunHost': tunHost, 'tunPort': tunPort, 'tunWait': self.tunnelWait.num(), 'tunChk': self.verifyCertificate.isTrue(), 'ticket': ticket, 'password': password, 'this_server': request.build_absolute_uri('/'), } if osName == 'windows': if password != '': r.password = '******' sp.update({ 'as_file': r.as_file, }) elif osName == 'linux': sp.update({ 'as_new_xfreerdp_params': r.as_new_xfreerdp_params, }) else: # Mac r.linuxCustomParameters = self.customParametersMAC.value sp.update({ 'as_new_xfreerdp_params': r.as_new_xfreerdp_params, 'as_file': r.as_file if self.allowMacMSRDC.isTrue() else '', 'as_rdp_url': r.as_rdp_url if self.allowMacMSRDC.isTrue() else '', }) return self.getScript('scripts/{}/tunnel.py', osName, sp)
def getUDSTransportScript( # pylint: disable=too-many-locals self, userService: 'models.UserService', transport: 'models.Transport', ip: str, os: typing.Dict[str, str], user: '******', password: str, request: 'HttpRequest', ) -> typing.Tuple[str, str, typing.Mapping[str, typing.Any]]: userServiceInstance: typing.Any = userService.getInstance() # Spice connection con = userServiceInstance.getConsoleConnection() # We MAY need two tickets, one for 'insecure' port an one for secure ticket = '' if con['port']: ticket = TicketStore.create_for_tunnel( userService=userService, port=int(con['port']), validity=self.tunnelWait.num() + 60, # Ticket overtime ) ticket_secure = '' if con['secure_port']: ticket_secure = TicketStore.create_for_tunnel( userService=userService, port=int(con['secure_port']), validity=self.tunnelWait.num() + 60, # Ticket overtime ) tunHost, tunPort = self.tunnelServer.value.split(':') r = RemoteViewerFile( '127.0.0.1', '{port}', '{secure_port}', con['ticket'] ['value'], # This is secure ticket from kvm, not UDS ticket self.serverCertificate.value.strip(), con['cert_subject'], fullscreen=self.fullScreen.isTrue(), ) r.usb_auto_share = self.usbShare.isTrue() r.new_usb_auto_share = self.autoNewUsbShare.isTrue() r.smartcard = self.smartCardRedirect.isTrue() osName = { OsDetector.Windows: 'windows', OsDetector.Linux: 'linux', OsDetector.Macintosh: 'macosx', }.get(os['OS']) if osName is None: return super().getUDSTransportScript(userService, transport, ip, os, user, password, request) # if sso: # If SSO requested, and when supported by platform # userServiceInstance.desktopLogin(user, password, '') sp = { 'as_file': r.as_file, 'as_file_ns': r.as_file_ns, 'tunHost': tunHost, 'tunPort': tunPort, 'tunWait': self.tunnelWait.num(), 'tunChk': self.verifyCertificate.isTrue(), 'ticket': ticket, 'ticket_secure': ticket_secure, } return self.getScript('scripts/{}/tunnel.py', osName, sp)
def getUDSTransportScript( # pylint: disable=too-many-locals self, userService: 'models.UserService', transport: 'models.Transport', ip: str, os: typing.Dict[str, str], user: '******', password: str, request: 'HttpRequest', ) -> typing.Tuple[str, str, typing.Mapping[str, typing.Any]]: ci = self.getConnectionInfo(userService, user, password) username = ci['username'] priv, pub = self.getAndPushKey(username, userService) width, height = self.getScreenSize() rootless = False desktop = self.desktopType.value if desktop == "UDSVAPP": desktop = "/usr/bin/udsvapp " + self.customCmd.value rootless = True xf = x2go_file.getTemplate( speed=self.speed.value, pack=self.pack.value, quality=self.quality.value, sound=self.sound.isTrue(), soundSystem=self.sound.value, windowManager=desktop, exports=self.exports.isTrue(), rootless=rootless, width=width, height=height, user=username, ) ticket = TicketStore.create_for_tunnel( userService=userService, port=22, validity=self.tunnelWait.num() + 60, # Ticket overtime ) tunHost, tunPort = self.tunnelServer.value.split(':') # data data = { 'os': os['OS'], 'ip': ip, 'port': 22, 'key': priv, 'width': width, 'height': height, 'printers': True, 'drives': self.exports.isTrue(), 'fullScreen': width == -1 or height == -1, 'this_server': request.build_absolute_uri('/'), 'xf': xf, } m = tools.DictAsObj(data) osName = { OsDetector.Windows: 'windows', OsDetector.Linux: 'linux', # OsDetector.Macintosh: 'macosx' }.get(os['OS']) if osName is None: return super().getUDSTransportScript(userService, transport, ip, os, user, password, request) sp = { 'tunHost': tunHost, 'tunPort': tunPort, 'tunWait': self.tunnelWait.num(), 'tunChk': self.verifyCertificate.isTrue(), 'ticket': ticket, 'key': priv, 'xf': xf, } return self.getScript('scripts/{}/tunnel.py', osName, sp)
def getUDSTransportScript( # pylint: disable=too-many-locals self, userService: 'models.UserService', transport: 'models.Transport', ip: str, os: typing.Dict[str, str], user: '******', password: str, request: 'HttpRequest', ) -> typing.Tuple[str, str, typing.Mapping[str, typing.Any]]: prefs = self.screenSize.value username = user.getUsernameForAuth() proc = username.split('@') username = proc[0] if self._fixedName is not '': username = self._fixedName if self._fixedPassword is not '': password = self._fixedPassword if self._useEmptyCreds is True: usernamsizerd = '', '' ticket = TicketStore.create_for_tunnel( userService=userService, port=int(self._listenPort), validity=self._tunnelWait + 60, # Ticket overtime ) tunHost, tunPort = self.tunnelServer.value.split(':') width, height = CommonPrefs.getWidthHeight(prefs) # Fix username/password acording to os manager username, password = userService.processUserPassword( username, password) r = NXFile(username=username, password=password, width=width, height=height) r.host = '{address}' r.port = '{port}' r.linkSpeed = self._connection r.desktop = self._session r.cachedisk = self._cacheDisk r.cachemem = self._cacheMem osName = { OsDetector.Windows: 'windows', OsDetector.Linux: 'linux', OsDetector.Macintosh: 'macosx', }.get(os['OS']) if osName is None: return super().getUDSTransportScript(userService, transport, ip, os, user, password, request) sp = { 'ip': ip, 'tunHost': tunHost, 'tunPort': tunPort, 'tunWait': self._tunnelWait, 'tunChk': self._verifyCertificate, 'ticket': ticket, 'as_file_for_format': r.as_file_for_format, } return self.getScript('scripts/{}/tunnel.py', osName, sp)