diff --git a/include/freerdp/settings_types_private.h b/include/freerdp/settings_types_private.h index f83b44465..e766d2eb9 100644 --- a/include/freerdp/settings_types_private.h +++ b/include/freerdp/settings_types_private.h @@ -482,7 +482,10 @@ struct rdp_settings SETTINGS_DEPRECATED(ALIGN64 BOOL GatewayIgnoreRedirectionPolicy); /** 2012 * @since version 3.4.0 */ - UINT64 padding2015[2015 - 2013]; /* 2013 */ + SETTINGS_DEPRECATED(ALIGN64 char* GatewayAvdClientID); /** 2013 + * @since version 3.10.0 + */ + UINT64 padding2015[2015 - 2014]; /* 2014 */ /* Proxy */ SETTINGS_DEPRECATED(ALIGN64 UINT32 ProxyType); /* 2015 */ diff --git a/libfreerdp/common/settings_getters.c b/libfreerdp/common/settings_getters.c index 268e387c3..ec6bb64cf 100644 --- a/libfreerdp/common/settings_getters.c +++ b/libfreerdp/common/settings_getters.c @@ -2772,6 +2772,9 @@ const char* freerdp_settings_get_string(const rdpSettings* settings, case FreeRDP_GatewayAvdArmpath: return settings->GatewayAvdArmpath; + case FreeRDP_GatewayAvdClientID: + return settings->GatewayAvdClientID; + case FreeRDP_GatewayAvdDiagnosticserviceurl: return settings->GatewayAvdDiagnosticserviceurl; @@ -3081,6 +3084,9 @@ char* freerdp_settings_get_string_writable(rdpSettings* settings, FreeRDP_Settin case FreeRDP_GatewayAvdArmpath: return settings->GatewayAvdArmpath; + case FreeRDP_GatewayAvdClientID: + return settings->GatewayAvdClientID; + case FreeRDP_GatewayAvdDiagnosticserviceurl: return settings->GatewayAvdDiagnosticserviceurl; @@ -3400,6 +3406,9 @@ BOOL freerdp_settings_set_string_(rdpSettings* settings, FreeRDP_Settings_Keys_S case FreeRDP_GatewayAvdArmpath: return update_string_(&settings->GatewayAvdArmpath, cnv.c, len); + case FreeRDP_GatewayAvdClientID: + return update_string_(&settings->GatewayAvdClientID, cnv.c, len); + case FreeRDP_GatewayAvdDiagnosticserviceurl: return update_string_(&settings->GatewayAvdDiagnosticserviceurl, cnv.c, len); @@ -3735,6 +3744,9 @@ BOOL freerdp_settings_set_string_copy_(rdpSettings* settings, FreeRDP_Settings_K case FreeRDP_GatewayAvdArmpath: return update_string_copy_(&settings->GatewayAvdArmpath, cnv.cc, len, cleanup); + case FreeRDP_GatewayAvdClientID: + return update_string_copy_(&settings->GatewayAvdClientID, cnv.cc, len, cleanup); + case FreeRDP_GatewayAvdDiagnosticserviceurl: return update_string_copy_(&settings->GatewayAvdDiagnosticserviceurl, cnv.cc, len, cleanup); diff --git a/libfreerdp/common/settings_str.h b/libfreerdp/common/settings_str.h index 645c58743..d514c2c3a 100644 --- a/libfreerdp/common/settings_str.h +++ b/libfreerdp/common/settings_str.h @@ -490,6 +490,7 @@ static const struct settings_str_entry settings_map[] = { { FreeRDP_GatewayAvdActivityhint, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAvdActivityhint" }, { FreeRDP_GatewayAvdArmpath, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAvdArmpath" }, + { FreeRDP_GatewayAvdClientID, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAvdClientID" }, { FreeRDP_GatewayAvdDiagnosticserviceurl, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAvdDiagnosticserviceurl" }, { FreeRDP_GatewayAvdGeo, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAvdGeo" }, diff --git a/libfreerdp/core/aad.c b/libfreerdp/core/aad.c index 98b20807c..442290cab 100644 --- a/libfreerdp/core/aad.c +++ b/libfreerdp/core/aad.c @@ -854,17 +854,13 @@ cleanup: WINPR_ATTR_MALLOC(WINPR_JSON_Delete, 1) static WINPR_JSON* aad_get_wellknown(wLog* log, const char* base, const char* tenantid) { - const char* curbase = "login.microsoftonline.com"; - const char* curtenantid = "common"; - if (tenantid) - curtenantid = tenantid; - if (base) - curbase = base; + WINPR_ASSERT(base); + WINPR_ASSERT(tenantid); char* str = NULL; size_t len = 0; - winpr_asprintf(&str, &len, "https://%s/%s/v2.0/.well-known/openid-configuration", curbase, - curtenantid); + winpr_asprintf(&str, &len, "https://%s/%s/v2.0/.well-known/openid-configuration", base, + tenantid); if (!str) { diff --git a/libfreerdp/core/settings.c b/libfreerdp/core/settings.c index 3425c8e56..99429fd3e 100644 --- a/libfreerdp/core/settings.c +++ b/libfreerdp/core/settings.c @@ -821,6 +821,14 @@ rdpSettings* freerdp_settings_new(DWORD flags) if (!server && !remote) { + if (!freerdp_settings_set_string(settings, FreeRDP_GatewayAvdClientID, + "a85cf173-4192-42f8-81fa-777a763e6e2c")) + goto out_fail; + if (!freerdp_settings_set_string(settings, FreeRDP_GatewayAvdArmpath, + "login.microsoftonline.com")) + goto out_fail; + if (!freerdp_settings_set_string(settings, FreeRDP_GatewayAvdAadtenantid, "common")) + goto out_fail; if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopPhysicalWidth, 1000)) goto out_fail; if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopPhysicalHeight, 1000)) diff --git a/libfreerdp/core/test/settings_property_lists.h b/libfreerdp/core/test/settings_property_lists.h index dbbcbc66a..e6d46971c 100644 --- a/libfreerdp/core/test/settings_property_lists.h +++ b/libfreerdp/core/test/settings_property_lists.h @@ -390,6 +390,7 @@ static const size_t string_list_indices[] = { FreeRDP_GatewayAvdAadtenantid, FreeRDP_GatewayAvdActivityhint, FreeRDP_GatewayAvdArmpath, + FreeRDP_GatewayAvdClientID, FreeRDP_GatewayAvdDiagnosticserviceurl, FreeRDP_GatewayAvdGeo, FreeRDP_GatewayAvdHubdiscoverygeourl, diff --git a/tools/update-settings-tests b/tools/update-settings-tests index 14c180980..14d6d04bd 100755 --- a/tools/update-settings-tests +++ b/tools/update-settings-tests @@ -163,7 +163,7 @@ def write_setter(f, entry_dict, entry_type, entry_name, postfix): f.write('BOOL freerdp_settings_set_' + entry_name.lower()) f.write(postfix) f.write('(rdpSettings* settings, ' + typestr + ' id, ') - if isString and len(postfix) > 0 or isPointer: + if isString or isPointer: f.write('const ') if not isPointer: f.write(entry_type + ' val') @@ -256,6 +256,8 @@ try: continue if 'padding' in sline: continue + if 'version' in sline: + continue if sline.startswith('SETTINGS_DEPRECATED(ALIGN64'): sline = sline[27:].strip()