forked from shaba/openuds
Added PORT to RDP connections
This commit is contained in:
parent
e75d373d03
commit
8aa7dc3c6f
@ -104,7 +104,6 @@ def guacamole(request: ExtendedHttpRequestWithUser, tunnelId: str) -> HttpRespon
|
||||
|
||||
return HttpResponse(response, content_type=CONTENT_TYPE)
|
||||
|
||||
@auth.trustedSourceRequired
|
||||
def guacamole_authenticated(request: ExtendedHttpRequestWithUser, token: str, tunnelId: str) -> HttpResponse:
|
||||
if not TunnelToken.validateToken(token):
|
||||
logger.error('Invalid token %s from %s', token, request.ip)
|
||||
|
@ -240,6 +240,15 @@ class HTML5RDPTransport(transports.Transport):
|
||||
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(
|
||||
length=3,
|
||||
@ -314,7 +323,7 @@ class HTML5RDPTransport(transports.Transport):
|
||||
ready = self.cache.get(ip)
|
||||
if not ready:
|
||||
# Check again for readyness
|
||||
if self.testServer(userService, ip, '3389') is True:
|
||||
if self.testServer(userService, ip, self.rdpPort.num()) is True:
|
||||
self.cache.put(ip, 'Y', READY_CACHE_TIMEOUT)
|
||||
return True
|
||||
self.cache.put(ip, 'N', READY_CACHE_TIMEOUT)
|
||||
@ -397,6 +406,7 @@ class HTML5RDPTransport(transports.Transport):
|
||||
params = {
|
||||
'protocol': 'rdp',
|
||||
'hostname': ip,
|
||||
'port': self.rdpPort.num(),
|
||||
'username': username,
|
||||
'password': passwordCrypted,
|
||||
'resize-method': 'display-update',
|
||||
|
@ -77,6 +77,7 @@ class RDPTransport(BaseRDPTransport):
|
||||
smooth = BaseRDPTransport.smooth
|
||||
showConnectionBar = BaseRDPTransport.showConnectionBar
|
||||
credssp = BaseRDPTransport.credssp
|
||||
rdpPort = BaseRDPTransport.rdpPort
|
||||
|
||||
screenSize = BaseRDPTransport.screenSize
|
||||
colorDepth = BaseRDPTransport.colorDepth
|
||||
@ -115,7 +116,7 @@ class RDPTransport(BaseRDPTransport):
|
||||
|
||||
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 = '{}:{}'.format(ip, 3389)
|
||||
r.address = '{}:{}'.format(ip, self.rdpPort.value)
|
||||
r.username = username
|
||||
r.password = password
|
||||
r.domain = domain
|
||||
@ -154,7 +155,7 @@ class RDPTransport(BaseRDPTransport):
|
||||
'password': password,
|
||||
'this_server': request.build_absolute_uri('/'),
|
||||
'ip': ip,
|
||||
'port': '3389',
|
||||
'port': self.rdpPort.value, # As string, because we need to use it in the template
|
||||
'address': r.address,
|
||||
}
|
||||
|
||||
|
@ -39,7 +39,7 @@ from uds.core.ui import gui
|
||||
from uds.core import transports
|
||||
from uds.models import UserService
|
||||
|
||||
# TODO: do this
|
||||
# TODO: implement this finally?
|
||||
def createADUser():
|
||||
try:
|
||||
from . import AD # type: ignore
|
||||
@ -167,6 +167,15 @@ class BaseRDPTransport(transports.Transport):
|
||||
tab=gui.PARAMETERS_TAB,
|
||||
defvalue=gui.TRUE,
|
||||
)
|
||||
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',
|
||||
)
|
||||
|
||||
|
||||
screenSize = gui.ChoiceField(
|
||||
label=_('Screen Size'),
|
||||
@ -315,7 +324,7 @@ class BaseRDPTransport(transports.Transport):
|
||||
ready = self.cache.get(ip)
|
||||
if ready is None:
|
||||
# Check again for ready
|
||||
if self.testServer(userService, ip, '3389') is True:
|
||||
if self.testServer(userService, ip, self.rdpPort.num()) is True:
|
||||
self.cache.put(ip, 'Y', READY_CACHE_TIMEOUT)
|
||||
return True
|
||||
else:
|
||||
|
@ -115,6 +115,7 @@ class TRDPTransport(BaseRDPTransport):
|
||||
smooth = BaseRDPTransport.smooth
|
||||
showConnectionBar = BaseRDPTransport.showConnectionBar
|
||||
credssp = BaseRDPTransport.credssp
|
||||
rdpPort = BaseRDPTransport.rdpPort
|
||||
|
||||
screenSize = BaseRDPTransport.screenSize
|
||||
colorDepth = BaseRDPTransport.colorDepth
|
||||
@ -160,7 +161,7 @@ class TRDPTransport(BaseRDPTransport):
|
||||
|
||||
ticket = TicketStore.create_for_tunnel(
|
||||
userService=userService,
|
||||
port=3389,
|
||||
port=self.rdpPort.num(),
|
||||
validity=self.tunnelWait.num() + 60, # Ticket overtime
|
||||
)
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (c) 2020 Virtual Cable S.L.U.
|
||||
# Copyright (c) 2021 Virtual Cable S.L.U.
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification,
|
||||
@ -43,7 +43,7 @@ BUFFER_SIZE = 1024 * 16
|
||||
HANDSHAKE_V1 = b'\x5AMGB\xA5\x01\x00'
|
||||
# Ticket length
|
||||
TICKET_LENGTH = 48
|
||||
# Admin password length, (size of an hex sha256)
|
||||
# Max Admin password length (stats basically right now)
|
||||
PASSWORD_LENGTH = 64
|
||||
# Bandwidth calc time lapse
|
||||
BANDWIDTH_TIME = 10
|
||||
|
Loading…
Reference in New Issue
Block a user