[client,file] add rdgiskdcproxy to settings

Adds a new option FreeRDP_KerberosRdgIsKdc to manually set the KDC url
to the gateway server url
This commit is contained in:
Armin Novak 2022-12-06 11:36:20 +01:00 committed by David Fort
parent 3b7d515f85
commit 3e3ed445b4
5 changed files with 24 additions and 4 deletions

View File

@ -1058,9 +1058,11 @@ BOOL freerdp_client_populate_rdp_file_from_settings(rdpFile* file, const rdpSett
file->UsbDevicesToRedirect = redirectUsb;
#endif
file->RedirectClipboard = freerdp_settings_get_bool(settings, FreeRDP_RedirectClipboard);
file->RedirectPrinters = freerdp_settings_get_bool(settings, FreeRDP_RedirectPrinters);
file->RedirectDrives = freerdp_settings_get_bool(settings, FreeRDP_RedirectDrives);
file->RedirectClipboard =
freerdp_settings_get_bool(settings, FreeRDP_RedirectClipboard) ? 1 : 0;
file->RedirectPrinters = freerdp_settings_get_bool(settings, FreeRDP_RedirectPrinters) ? 1 : 0;
file->RedirectDrives = freerdp_settings_get_bool(settings, FreeRDP_RedirectDrives) ? 1 : 0;
file->RdgIsKdcProxy = freerdp_settings_get_bool(settings, FreeRDP_KerberosRdgIsProxy) ? 1 : 0;
file->RedirectComPorts = (freerdp_settings_get_bool(settings, FreeRDP_RedirectSerialPorts) ||
freerdp_settings_get_bool(settings, FreeRDP_RedirectParallelPorts));
if (!FILE_POPULATE_STRING(&file->DrivesToRedirect, settings, FreeRDP_DrivesToRedirect) ||
@ -2132,6 +2134,13 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings*
return FALSE;
}
if (~((size_t)file->RdgIsKdcProxy))
{
if (!freerdp_settings_set_bool(settings, FreeRDP_KerberosRdgIsProxy,
file->RdgIsKdcProxy != 0))
return FALSE;
}
if (file->args->argc > 1)
{
const char* ConnectionFile = freerdp_settings_get_string(settings, FreeRDP_ConnectionFile);

View File

@ -721,6 +721,7 @@ typedef struct
#define FreeRDP_KerberosCache (1349)
#define FreeRDP_KerberosArmor (1350)
#define FreeRDP_KerberosKeytab (1351)
#define FreeRDP_KerberosRdgIsProxy (1352)
#define FreeRDP_IgnoreCertificate (1408)
#define FreeRDP_CertificateName (1409)
#define FreeRDP_CertificateFile (1410)
@ -1249,7 +1250,8 @@ struct rdp_settings
ALIGN64 char* KerberosCache; /* 1349 */
ALIGN64 char* KerberosArmor; /* 1350 */
ALIGN64 char* KerberosKeytab; /* 1351 */
UINT64 padding1408[1408 - 1352]; /* 1352 */
ALIGN64 BOOL KerberosRdgIsProxy; /* 1352 */
UINT64 padding1408[1408 - 1353]; /* 1353 */
/* Server Certificate */
ALIGN64 BOOL IgnoreCertificate; /* 1408 */

View File

@ -289,6 +289,9 @@ BOOL freerdp_settings_get_bool(const rdpSettings* settings, size_t id)
case FreeRDP_JpegCodec:
return settings->JpegCodec;
case FreeRDP_KerberosRdgIsProxy:
return settings->KerberosRdgIsProxy;
case FreeRDP_ListMonitors:
return settings->ListMonitors;
@ -918,6 +921,10 @@ BOOL freerdp_settings_set_bool(rdpSettings* settings, size_t id, BOOL val)
settings->JpegCodec = cnv.c;
break;
case FreeRDP_KerberosRdgIsProxy:
settings->KerberosRdgIsProxy = cnv.c;
break;
case FreeRDP_ListMonitors:
settings->ListMonitors = cnv.c;
break;

View File

@ -132,6 +132,7 @@ static const struct settings_str_entry settings_map[] = {
{ FreeRDP_IPv6Enabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_IPv6Enabled" },
{ FreeRDP_IgnoreCertificate, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_IgnoreCertificate" },
{ FreeRDP_JpegCodec, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_JpegCodec" },
{ FreeRDP_KerberosRdgIsProxy, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_KerberosRdgIsProxy" },
{ FreeRDP_ListMonitors, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_ListMonitors" },
{ FreeRDP_LocalConnection, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_LocalConnection" },
{ FreeRDP_LogonErrors, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_LogonErrors" },

View File

@ -87,6 +87,7 @@ static const size_t bool_list_indices[] = {
FreeRDP_IPv6Enabled,
FreeRDP_IgnoreCertificate,
FreeRDP_JpegCodec,
FreeRDP_KerberosRdgIsProxy,
FreeRDP_ListMonitors,
FreeRDP_LocalConnection,
FreeRDP_LogonErrors,