mirror of
https://github.com/dkmstr/openuds.git
synced 2025-10-06 11:33:43 +03:00
Refactor username and domain handling in HTML5RDP and RDP transports for improved clarity and consistency
This commit is contained in:
@@ -361,7 +361,7 @@ class HTML5RDPTransport(transports.Transport):
|
||||
if self.forced_username.value:
|
||||
username = self.forced_username.value
|
||||
|
||||
proc = username.split('@')
|
||||
proc = username.split('@', 1)
|
||||
if len(proc) > 1:
|
||||
domain = proc[1]
|
||||
else:
|
||||
@@ -369,11 +369,12 @@ class HTML5RDPTransport(transports.Transport):
|
||||
username = proc[0]
|
||||
|
||||
for_azure = False
|
||||
if self.forced_domain.value != '':
|
||||
if self.forced_domain.value.lower() == 'azuread':
|
||||
forced_domain = self.forced_domain.value.strip().lower()
|
||||
if forced_domain:
|
||||
if forced_domain == 'azuread':
|
||||
for_azure = True
|
||||
else:
|
||||
domain = self.forced_domain.value
|
||||
domain = forced_domain
|
||||
|
||||
if self.force_empty_creds.as_bool():
|
||||
username, password, domain = '', '', ''
|
||||
@@ -424,7 +425,7 @@ class HTML5RDPTransport(transports.Transport):
|
||||
return 'true' if txt else 'false'
|
||||
|
||||
# Build params dict
|
||||
params = {
|
||||
params: dict[str, typing.Any] = {
|
||||
'protocol': 'rdp',
|
||||
'hostname': ip,
|
||||
'port': self.rdp_port.as_int(),
|
||||
|
@@ -386,46 +386,40 @@ class BaseRDPTransport(transports.Transport):
|
||||
if self.forced_username.value:
|
||||
username = self.forced_username.value
|
||||
|
||||
proc = username.split('@')
|
||||
domain: str = ''
|
||||
proc = username.split('@', 1)
|
||||
if len(proc) > 1:
|
||||
domain = proc[1]
|
||||
else:
|
||||
domain = '' # Default domain is empty
|
||||
username = proc[0]
|
||||
|
||||
if self.forced_password.value:
|
||||
password = self.forced_password.value
|
||||
|
||||
azure_ad = False
|
||||
if self.forced_domain.value != '':
|
||||
if self.forced_domain.value.lower() == 'azuread':
|
||||
azure_ad = True
|
||||
for_azure = False
|
||||
forced_domain = self.forced_domain.value.strip().lower()
|
||||
if forced_domain: # If has forced domain
|
||||
if forced_domain == 'azuread':
|
||||
for_azure = True
|
||||
else:
|
||||
domain = self.forced_domain.value
|
||||
domain = forced_domain
|
||||
|
||||
if self.force_empty_creds.as_bool():
|
||||
username, password, domain = '', '', ''
|
||||
|
||||
if self.force_no_domain.as_bool():
|
||||
domain = ''
|
||||
|
||||
if domain: # If has domain
|
||||
if '.' in domain: # Dotter domain form
|
||||
username = username + '@' + domain
|
||||
domain = ''
|
||||
else: # In case of a NETBIOS domain (not recomended), join it so process_user_password can deal with it
|
||||
username = domain + '\\' + username
|
||||
domain = ''
|
||||
if '.' in domain: # Dotter domain form
|
||||
username = username + '@' + domain
|
||||
domain = ''
|
||||
|
||||
if for_azure:
|
||||
username = 'AzureAD\\' + username # AzureAD domain form
|
||||
|
||||
# Fix username/password acording to os manager
|
||||
username, password = userservice.process_user_password(username, password)
|
||||
|
||||
# Recover domain name if needed
|
||||
if '\\' in username:
|
||||
domain, username = username.split('\\')
|
||||
|
||||
# If AzureAD, include it on username
|
||||
if azure_ad:
|
||||
username = 'AzureAD\\' + username
|
||||
|
||||
return types.connections.ConnectionData(
|
||||
protocol=self.protocol,
|
||||
username=username,
|
||||
|
Reference in New Issue
Block a user