From abc93f924c13b8c10d4c80d50116abfa5ecd8fb9 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Thu, 21 Mar 2019 13:08:59 +0100 Subject: [PATCH 1/4] Added python generator for freerdp_[g|s]et_param* The settings getters and setters are now automatically generated. Added a test case to check if all available options can be retrieved. --- include/freerdp/settings.h | 39 +- libfreerdp/common/CMakeLists.txt | 1 + libfreerdp/common/settings.c | 2048 ------------- libfreerdp/common/settings_getters.c | 2703 +++++++++++++++++ libfreerdp/core/test/TestSettings.c | 117 +- .../core/test/settings_property_lists.h | 397 +++ scripts/update-settings-tests | 187 ++ 7 files changed, 3429 insertions(+), 2063 deletions(-) create mode 100644 libfreerdp/common/settings_getters.c create mode 100644 libfreerdp/core/test/settings_property_lists.h create mode 100755 scripts/update-settings-tests diff --git a/include/freerdp/settings.h b/include/freerdp/settings.h index d6eef5c36..93a38784a 100644 --- a/include/freerdp/settings.h +++ b/include/freerdp/settings.h @@ -1029,7 +1029,7 @@ struct rdp_settings UINT64 padding0896[896 - 837]; /* 837 */ /* Client Info (Time Zone) */ - ALIGN64 LPTIME_ZONE_INFORMATION ClientTimeZone; /* 896 */ + ALIGN64 TIME_ZONE_INFORMATION* ClientTimeZone; /* 896 */ ALIGN64 char* DynamicDSTTimeZoneKeyName; /* 897 */ ALIGN64 BOOL DynamicDaylightTimeDisabled; /* 898 */ UINT64 padding0960[960 - 899]; /* 899 */ @@ -1164,8 +1164,8 @@ struct rdp_settings ALIGN64 char* WmClass; /* 1549 */ ALIGN64 BOOL EmbeddedWindow; /* 1550 */ ALIGN64 BOOL SmartSizing; /* 1551 */ - ALIGN64 int XPan; /* 1552 */ - ALIGN64 int YPan; /* 1553 */ + ALIGN64 INT32 XPan; /* 1552 */ + ALIGN64 INT32 YPan; /* 1553 */ ALIGN64 UINT32 SmartSizingWidth; /* 1554 */ ALIGN64 UINT32 SmartSizingHeight; /* 1555 */ ALIGN64 BOOL PercentScreenUseWidth; /* 1556 */ @@ -1519,7 +1519,7 @@ struct rdp_settings */ /* Extensions */ - ALIGN64 int num_extensions; /* */ + ALIGN64 INT32 num_extensions; /* */ ALIGN64 struct rdp_ext_set extensions[16]; /* */ ALIGN64 BYTE* @@ -1576,20 +1576,31 @@ FREERDP_API void freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32 FREERDP_API void freerdp_update_gateway_usage_method(rdpSettings* settings, UINT32 GatewayEnabled, UINT32 GatewayBypassLocal); -FREERDP_API BOOL freerdp_get_param_bool(rdpSettings* settings, int id); -FREERDP_API int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param); +FREERDP_API BOOL freerdp_get_param_bool(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_set_param_bool(rdpSettings* settings, size_t id, BOOL param); -FREERDP_API int freerdp_get_param_int(rdpSettings* settings, int id); -FREERDP_API int freerdp_set_param_int(rdpSettings* settings, int id, int param); +FREERDP_API INT16 freerdp_get_param_int16(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_set_param_int16(rdpSettings* settings, size_t id, INT16 param); -FREERDP_API UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id); -FREERDP_API int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param); +FREERDP_API UINT16 freerdp_get_param_uint16(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_set_param_uint16(rdpSettings* settings, size_t id, UINT16 param); -FREERDP_API UINT64 freerdp_get_param_uint64(rdpSettings* settings, int id); -FREERDP_API int freerdp_set_param_uint64(rdpSettings* settings, int id, UINT64 param); +FREERDP_API INT32 freerdp_get_param_int32(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_set_param_int32(rdpSettings* settings, size_t id, INT32 param); -FREERDP_API char* freerdp_get_param_string(rdpSettings* settings, int id); -FREERDP_API int freerdp_set_param_string(rdpSettings* settings, int id, const char* param); +FREERDP_API UINT32 freerdp_get_param_uint32(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_set_param_uint32(rdpSettings* settings, size_t id, UINT32 param); + +FREERDP_API INT64 freerdp_get_param_int64(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_set_param_int64(rdpSettings* settings, size_t id, INT64 param); + +FREERDP_API UINT64 freerdp_get_param_uint64(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_set_param_uint64(rdpSettings* settings, size_t id, UINT64 param); + +FREERDP_API const char* freerdp_get_param_string(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_set_param_string(rdpSettings* settings, size_t id, const char* param); + +FREERDP_API const void* freerdp_get_param_pointer(rdpSettings* settings, size_t id); #ifdef __cplusplus } diff --git a/libfreerdp/common/CMakeLists.txt b/libfreerdp/common/CMakeLists.txt index 14ad05c0a..fa8b81773 100644 --- a/libfreerdp/common/CMakeLists.txt +++ b/libfreerdp/common/CMakeLists.txt @@ -21,6 +21,7 @@ set(MODULE_PREFIX "FREERDP_COMMON") set(${MODULE_PREFIX}_SRCS addin.c settings.c + settings_getters.c assistance.c) freerdp_module_add(${${MODULE_PREFIX}_SRCS}) diff --git a/libfreerdp/common/settings.c b/libfreerdp/common/settings.c index 5cd481ba3..a2d6aba47 100644 --- a/libfreerdp/common/settings.c +++ b/libfreerdp/common/settings.c @@ -745,2051 +745,3 @@ void freerdp_update_gateway_usage_method(rdpSettings* settings, UINT32 GatewayEn freerdp_set_gateway_usage_method(settings, GatewayUsageMethod); } - -/** - * Partially Generated Code - */ - -BOOL freerdp_get_param_bool(rdpSettings* settings, int id) -{ - switch (id) - { - case FreeRDP_ServerMode: - return settings->ServerMode; - - case FreeRDP_NetworkAutoDetect: - return settings->NetworkAutoDetect; - - case FreeRDP_SupportAsymetricKeys: - return settings->SupportAsymetricKeys; - - case FreeRDP_SupportErrorInfoPdu: - return settings->SupportErrorInfoPdu; - - case FreeRDP_SupportStatusInfoPdu: - return settings->SupportStatusInfoPdu; - - case FreeRDP_SupportMonitorLayoutPdu: - return settings->SupportMonitorLayoutPdu; - - case FreeRDP_SupportGraphicsPipeline: - return settings->SupportGraphicsPipeline; - - case FreeRDP_SupportDynamicTimeZone: - return settings->SupportDynamicTimeZone; - - case FreeRDP_UseRdpSecurityLayer: - return settings->UseRdpSecurityLayer; - - case FreeRDP_ConsoleSession: - return settings->ConsoleSession; - - case FreeRDP_SpanMonitors: - return settings->SpanMonitors; - - case FreeRDP_UseMultimon: - return settings->UseMultimon; - - case FreeRDP_ForceMultimon: - return settings->ForceMultimon; - - case FreeRDP_AutoLogonEnabled: - return settings->AutoLogonEnabled; - - case FreeRDP_CompressionEnabled: - return settings->CompressionEnabled; - - case FreeRDP_DisableCtrlAltDel: - return settings->DisableCtrlAltDel; - - case FreeRDP_EnableWindowsKey: - return settings->EnableWindowsKey; - - case FreeRDP_MaximizeShell: - return settings->MaximizeShell; - - case FreeRDP_LogonNotify: - return settings->LogonNotify; - - case FreeRDP_LogonErrors: - return settings->LogonErrors; - - case FreeRDP_MouseAttached: - return settings->MouseAttached; - - case FreeRDP_MouseHasWheel: - return settings->MouseHasWheel; - - case FreeRDP_RemoteConsoleAudio: - return settings->RemoteConsoleAudio; - - case FreeRDP_AudioPlayback: - return settings->AudioPlayback; - - case FreeRDP_AudioCapture: - return settings->AudioCapture; - - case FreeRDP_VideoDisable: - return settings->VideoDisable; - - case FreeRDP_PasswordIsSmartcardPin: - return settings->PasswordIsSmartcardPin; - - case FreeRDP_UsingSavedCredentials: - return settings->UsingSavedCredentials; - - case FreeRDP_ForceEncryptedCsPdu: - return settings->ForceEncryptedCsPdu; - - case FreeRDP_HiDefRemoteApp: - return settings->HiDefRemoteApp; - - case FreeRDP_IPv6Enabled: - return settings->IPv6Enabled; - - case FreeRDP_AutoReconnectionEnabled: - return settings->AutoReconnectionEnabled; - - case FreeRDP_DynamicDaylightTimeDisabled: - return settings->DynamicDaylightTimeDisabled; - - case FreeRDP_AllowFontSmoothing: - return settings->AllowFontSmoothing; - - case FreeRDP_DisableWallpaper: - return settings->DisableWallpaper; - - case FreeRDP_DisableFullWindowDrag: - return settings->DisableFullWindowDrag; - - case FreeRDP_DisableMenuAnims: - return settings->DisableMenuAnims; - - case FreeRDP_DisableThemes: - return settings->DisableThemes; - - case FreeRDP_DisableCursorShadow: - return settings->DisableCursorShadow; - - case FreeRDP_DisableCursorBlinking: - return settings->DisableCursorBlinking; - - case FreeRDP_AllowDesktopComposition: - return settings->AllowDesktopComposition; - - case FreeRDP_RemoteAssistanceMode: - return settings->RemoteAssistanceMode; - - case FreeRDP_TlsSecurity: - return settings->TlsSecurity; - - case FreeRDP_NlaSecurity: - return settings->NlaSecurity; - - case FreeRDP_RdpSecurity: - return settings->RdpSecurity; - - case FreeRDP_ExtSecurity: - return settings->ExtSecurity; - - case FreeRDP_Authentication: - return settings->Authentication; - - case FreeRDP_NegotiateSecurityLayer: - return settings->NegotiateSecurityLayer; - - case FreeRDP_RestrictedAdminModeRequired: - return settings->RestrictedAdminModeRequired; - - case FreeRDP_DisableCredentialsDelegation: - return settings->DisableCredentialsDelegation; - - case FreeRDP_AuthenticationLevel: - return settings->AuthenticationLevel; - - case FreeRDP_VmConnectMode: - return settings->VmConnectMode; - - case FreeRDP_MstscCookieMode: - return settings->MstscCookieMode; - - case FreeRDP_SendPreconnectionPdu: - return settings->SendPreconnectionPdu; - - case FreeRDP_IgnoreCertificate: - return settings->IgnoreCertificate; - - case FreeRDP_AutoDenyCertificate: - return settings->AutoDenyCertificate; - - case FreeRDP_AutoAcceptCertificate: - return settings->AutoAcceptCertificate; - - case FreeRDP_ExternalCertificateManagement: - return settings->ExternalCertificateManagement; - - case FreeRDP_FIPSMode: - return settings->FIPSMode; - - case FreeRDP_Workarea: - return settings->Workarea; - - case FreeRDP_Fullscreen: - return settings->Fullscreen; - - case FreeRDP_GrabKeyboard: - return settings->GrabKeyboard; - - case FreeRDP_Decorations: - return settings->Decorations; - - case FreeRDP_SmartSizing: - return settings->SmartSizing; - - case FreeRDP_MouseMotion: - return settings->MouseMotion; - - case FreeRDP_AsyncInput: - return settings->AsyncInput; - - case FreeRDP_AsyncUpdate: - return settings->AsyncUpdate; - - case FreeRDP_AsyncChannels: - return settings->AsyncChannels; - - case FreeRDP_ToggleFullscreen: - return settings->ToggleFullscreen; - - case FreeRDP_SoftwareGdi: - return settings->SoftwareGdi; - - case FreeRDP_LocalConnection: - return settings->LocalConnection; - - case FreeRDP_AuthenticationOnly: - return settings->AuthenticationOnly; - - case FreeRDP_CredentialsFromStdin: - return settings->CredentialsFromStdin; - - case FreeRDP_DumpRemoteFx: - return settings->DumpRemoteFx; - - case FreeRDP_PlayRemoteFx: - return settings->PlayRemoteFx; - - case FreeRDP_GatewayUseSameCredentials: - return settings->GatewayUseSameCredentials; - - case FreeRDP_GatewayEnabled: - return settings->GatewayEnabled; - - case FreeRDP_GatewayBypassLocal: - return settings->GatewayBypassLocal; - - case FreeRDP_GatewayRpcTransport: - return settings->GatewayRpcTransport; - - case FreeRDP_GatewayHttpTransport: - return settings->GatewayHttpTransport; - - case FreeRDP_GatewayUdpTransport: - return settings->GatewayUdpTransport; - - case FreeRDP_RemoteApplicationMode: - return settings->RemoteApplicationMode; - - case FreeRDP_DisableRemoteAppCapsCheck: - return settings->DisableRemoteAppCapsCheck; - - case FreeRDP_RemoteAppLanguageBarSupported: - return settings->RemoteAppLanguageBarSupported; - - case FreeRDP_RefreshRect: - return settings->RefreshRect; - - case FreeRDP_SuppressOutput: - return settings->SuppressOutput; - - case FreeRDP_FastPathOutput: - return settings->FastPathOutput; - - case FreeRDP_SaltedChecksum: - return settings->SaltedChecksum; - - case FreeRDP_LongCredentialsSupported: - return settings->LongCredentialsSupported; - - case FreeRDP_NoBitmapCompressionHeader: - return settings->NoBitmapCompressionHeader; - - case FreeRDP_BitmapCompressionDisabled: - return settings->BitmapCompressionDisabled; - - case FreeRDP_DesktopResize: - return settings->DesktopResize; - - case FreeRDP_DrawAllowDynamicColorFidelity: - return settings->DrawAllowDynamicColorFidelity; - - case FreeRDP_DrawAllowColorSubsampling: - return settings->DrawAllowColorSubsampling; - - case FreeRDP_DrawAllowSkipAlpha: - return settings->DrawAllowSkipAlpha; - - case FreeRDP_BitmapCacheV3Enabled: - return settings->BitmapCacheV3Enabled; - - case FreeRDP_AltSecFrameMarkerSupport: - return settings->AltSecFrameMarkerSupport; - - case FreeRDP_BitmapCacheEnabled: - return settings->BitmapCacheEnabled; - - case FreeRDP_AllowCacheWaitingList: - return settings->AllowCacheWaitingList; - - case FreeRDP_BitmapCachePersistEnabled: - return settings->BitmapCachePersistEnabled; - - case FreeRDP_ColorPointerFlag: - return settings->ColorPointerFlag; - - case FreeRDP_UnicodeInput: - return settings->UnicodeInput; - - case FreeRDP_FastPathInput: - return settings->FastPathInput; - - case FreeRDP_MultiTouchInput: - return settings->MultiTouchInput; - - case FreeRDP_MultiTouchGestures: - return settings->MultiTouchGestures; - - case FreeRDP_SoundBeepsEnabled: - return settings->SoundBeepsEnabled; - - case FreeRDP_SurfaceCommandsEnabled: - return settings->SurfaceCommandsEnabled; - - case FreeRDP_FrameMarkerCommandEnabled: - return settings->FrameMarkerCommandEnabled; - - case FreeRDP_RemoteFxOnly: - return settings->RemoteFxOnly; - - case FreeRDP_RemoteFxCodec: - return settings->RemoteFxCodec; - - case FreeRDP_RemoteFxImageCodec: - return settings->RemoteFxImageCodec; - - case FreeRDP_NSCodec: - return settings->NSCodec; - - case FreeRDP_NSCodecAllowSubsampling: - return settings->NSCodecAllowSubsampling; - - case FreeRDP_NSCodecAllowDynamicColorFidelity: - return settings->NSCodecAllowDynamicColorFidelity; - - case FreeRDP_JpegCodec: - return settings->JpegCodec; - - case FreeRDP_GfxThinClient: - return settings->GfxThinClient; - - case FreeRDP_GfxSmallCache: - return settings->GfxSmallCache; - - case FreeRDP_GfxProgressive: - return settings->GfxProgressive; - - case FreeRDP_GfxProgressiveV2: - return settings->GfxProgressiveV2; - - case FreeRDP_GfxH264: - return settings->GfxH264; - - case FreeRDP_GfxAVC444: - return settings->GfxAVC444; - - case FreeRDP_DrawNineGridEnabled: - return settings->DrawNineGridEnabled; - - case FreeRDP_DrawGdiPlusEnabled: - return settings->DrawGdiPlusEnabled; - - case FreeRDP_DrawGdiPlusCacheEnabled: - return settings->DrawGdiPlusCacheEnabled; - - case FreeRDP_DeviceRedirection: - return settings->DeviceRedirection; - - case FreeRDP_RedirectDrives: - return settings->RedirectDrives; - - case FreeRDP_RedirectHomeDrive: - return settings->RedirectHomeDrive; - - case FreeRDP_RedirectSmartCards: - return settings->RedirectSmartCards; - - case FreeRDP_RedirectPrinters: - return settings->RedirectPrinters; - - case FreeRDP_RedirectSerialPorts: - return settings->RedirectSerialPorts; - - case FreeRDP_RedirectParallelPorts: - return settings->RedirectParallelPorts; - - case FreeRDP_RedirectClipboard: - return settings->RedirectClipboard; - - case FreeRDP_SmartcardLogon: - return settings->SmartcardLogon; - - default: - WLog_ERR(TAG, "freerdp_get_param_bool: unknown id: %d", id); - return -1; - } -} - -int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param) -{ - switch (id) - { - case FreeRDP_ServerMode: - settings->ServerMode = param; - break; - - case FreeRDP_NetworkAutoDetect: - settings->NetworkAutoDetect = param; - break; - - case FreeRDP_SupportAsymetricKeys: - settings->SupportAsymetricKeys = param; - break; - - case FreeRDP_SupportErrorInfoPdu: - settings->SupportErrorInfoPdu = param; - break; - - case FreeRDP_SupportStatusInfoPdu: - settings->SupportStatusInfoPdu = param; - break; - - case FreeRDP_SupportMonitorLayoutPdu: - settings->SupportMonitorLayoutPdu = param; - break; - - case FreeRDP_SupportGraphicsPipeline: - settings->SupportGraphicsPipeline = param; - break; - - case FreeRDP_SupportDynamicTimeZone: - settings->SupportDynamicTimeZone = param; - break; - - case FreeRDP_UseRdpSecurityLayer: - settings->UseRdpSecurityLayer = param; - break; - - case FreeRDP_ConsoleSession: - settings->ConsoleSession = param; - break; - - case FreeRDP_SpanMonitors: - settings->SpanMonitors = param; - break; - - case FreeRDP_UseMultimon: - settings->UseMultimon = param; - break; - - case FreeRDP_ForceMultimon: - settings->ForceMultimon = param; - break; - - case FreeRDP_AutoLogonEnabled: - settings->AutoLogonEnabled = param; - break; - - case FreeRDP_CompressionEnabled: - settings->CompressionEnabled = param; - break; - - case FreeRDP_DisableCtrlAltDel: - settings->DisableCtrlAltDel = param; - break; - - case FreeRDP_EnableWindowsKey: - settings->EnableWindowsKey = param; - break; - - case FreeRDP_MaximizeShell: - settings->MaximizeShell = param; - break; - - case FreeRDP_LogonNotify: - settings->LogonNotify = param; - break; - - case FreeRDP_LogonErrors: - settings->LogonErrors = param; - break; - - case FreeRDP_MouseAttached: - settings->MouseAttached = param; - break; - - case FreeRDP_MouseHasWheel: - settings->MouseHasWheel = param; - break; - - case FreeRDP_RemoteConsoleAudio: - settings->RemoteConsoleAudio = param; - break; - - case FreeRDP_AudioPlayback: - settings->AudioPlayback = param; - break; - - case FreeRDP_AudioCapture: - settings->AudioCapture = param; - break; - - case FreeRDP_VideoDisable: - settings->VideoDisable = param; - break; - - case FreeRDP_PasswordIsSmartcardPin: - settings->PasswordIsSmartcardPin = param; - break; - - case FreeRDP_UsingSavedCredentials: - settings->UsingSavedCredentials = param; - break; - - case FreeRDP_ForceEncryptedCsPdu: - settings->ForceEncryptedCsPdu = param; - break; - - case FreeRDP_HiDefRemoteApp: - settings->HiDefRemoteApp = param; - break; - - case FreeRDP_IPv6Enabled: - settings->IPv6Enabled = param; - break; - - case FreeRDP_AutoReconnectionEnabled: - settings->AutoReconnectionEnabled = param; - break; - - case FreeRDP_DynamicDaylightTimeDisabled: - settings->DynamicDaylightTimeDisabled = param; - break; - - case FreeRDP_AllowFontSmoothing: - settings->AllowFontSmoothing = param; - break; - - case FreeRDP_DisableWallpaper: - settings->DisableWallpaper = param; - break; - - case FreeRDP_DisableFullWindowDrag: - settings->DisableFullWindowDrag = param; - break; - - case FreeRDP_DisableMenuAnims: - settings->DisableMenuAnims = param; - break; - - case FreeRDP_DisableThemes: - settings->DisableThemes = param; - break; - - case FreeRDP_DisableCursorShadow: - settings->DisableCursorShadow = param; - break; - - case FreeRDP_DisableCursorBlinking: - settings->DisableCursorBlinking = param; - break; - - case FreeRDP_AllowDesktopComposition: - settings->AllowDesktopComposition = param; - break; - - case FreeRDP_RemoteAssistanceMode: - settings->RemoteAssistanceMode = param; - break; - - case FreeRDP_TlsSecurity: - settings->TlsSecurity = param; - break; - - case FreeRDP_NlaSecurity: - settings->NlaSecurity = param; - break; - - case FreeRDP_RdpSecurity: - settings->RdpSecurity = param; - break; - - case FreeRDP_ExtSecurity: - settings->ExtSecurity = param; - break; - - case FreeRDP_Authentication: - settings->Authentication = param; - break; - - case FreeRDP_NegotiateSecurityLayer: - settings->NegotiateSecurityLayer = param; - break; - - case FreeRDP_RestrictedAdminModeRequired: - settings->RestrictedAdminModeRequired = param; - break; - - case FreeRDP_DisableCredentialsDelegation: - settings->DisableCredentialsDelegation = param; - break; - - case FreeRDP_AuthenticationLevel: - settings->AuthenticationLevel = param; - break; - - case FreeRDP_VmConnectMode: - settings->VmConnectMode = param; - break; - - case FreeRDP_MstscCookieMode: - settings->MstscCookieMode = param; - break; - - case FreeRDP_SendPreconnectionPdu: - settings->SendPreconnectionPdu = param; - break; - - case FreeRDP_IgnoreCertificate: - settings->IgnoreCertificate = param; - break; - - case FreeRDP_AutoDenyCertificate: - settings->AutoDenyCertificate = param; - break; - - case FreeRDP_AutoAcceptCertificate: - settings->AutoAcceptCertificate = param; - break; - - case FreeRDP_ExternalCertificateManagement: - settings->ExternalCertificateManagement = param; - break; - - case FreeRDP_FIPSMode: - settings->FIPSMode = param; - break; - - case FreeRDP_Workarea: - settings->Workarea = param; - break; - - case FreeRDP_Fullscreen: - settings->Fullscreen = param; - break; - - case FreeRDP_GrabKeyboard: - settings->GrabKeyboard = param; - break; - - case FreeRDP_Decorations: - settings->Decorations = param; - break; - - case FreeRDP_SmartSizing: - settings->SmartSizing = param; - break; - - case FreeRDP_MouseMotion: - settings->MouseMotion = param; - break; - - case FreeRDP_AsyncInput: - settings->AsyncInput = param; - break; - - case FreeRDP_AsyncUpdate: - settings->AsyncUpdate = param; - break; - - case FreeRDP_AsyncChannels: - settings->AsyncChannels = param; - break; - - case FreeRDP_ToggleFullscreen: - settings->ToggleFullscreen = param; - break; - - case FreeRDP_SoftwareGdi: - settings->SoftwareGdi = param; - break; - - case FreeRDP_LocalConnection: - settings->LocalConnection = param; - break; - - case FreeRDP_AuthenticationOnly: - settings->AuthenticationOnly = param; - break; - - case FreeRDP_CredentialsFromStdin: - settings->CredentialsFromStdin = param; - break; - - case FreeRDP_DumpRemoteFx: - settings->DumpRemoteFx = param; - break; - - case FreeRDP_PlayRemoteFx: - settings->PlayRemoteFx = param; - break; - - case FreeRDP_GatewayUseSameCredentials: - settings->GatewayUseSameCredentials = param; - break; - - case FreeRDP_GatewayEnabled: - settings->GatewayEnabled = param; - break; - - case FreeRDP_GatewayBypassLocal: - settings->GatewayBypassLocal = param; - break; - - case FreeRDP_GatewayRpcTransport: - settings->GatewayRpcTransport = param; - break; - - case FreeRDP_GatewayHttpTransport: - settings->GatewayHttpTransport = param; - break; - - case FreeRDP_GatewayUdpTransport: - settings->GatewayUdpTransport = param; - break; - - case FreeRDP_RemoteApplicationMode: - settings->RemoteApplicationMode = param; - break; - - case FreeRDP_DisableRemoteAppCapsCheck: - settings->DisableRemoteAppCapsCheck = param; - break; - - case FreeRDP_RemoteAppLanguageBarSupported: - settings->RemoteAppLanguageBarSupported = param; - break; - - case FreeRDP_RefreshRect: - settings->RefreshRect = param; - break; - - case FreeRDP_SuppressOutput: - settings->SuppressOutput = param; - break; - - case FreeRDP_FastPathOutput: - settings->FastPathOutput = param; - break; - - case FreeRDP_SaltedChecksum: - settings->SaltedChecksum = param; - break; - - case FreeRDP_LongCredentialsSupported: - settings->LongCredentialsSupported = param; - break; - - case FreeRDP_NoBitmapCompressionHeader: - settings->NoBitmapCompressionHeader = param; - break; - - case FreeRDP_BitmapCompressionDisabled: - settings->BitmapCompressionDisabled = param; - break; - - case FreeRDP_DesktopResize: - settings->DesktopResize = param; - break; - - case FreeRDP_DrawAllowDynamicColorFidelity: - settings->DrawAllowDynamicColorFidelity = param; - break; - - case FreeRDP_DrawAllowColorSubsampling: - settings->DrawAllowColorSubsampling = param; - break; - - case FreeRDP_DrawAllowSkipAlpha: - settings->DrawAllowSkipAlpha = param; - break; - - case FreeRDP_BitmapCacheV3Enabled: - settings->BitmapCacheV3Enabled = param; - break; - - case FreeRDP_AltSecFrameMarkerSupport: - settings->AltSecFrameMarkerSupport = param; - break; - - case FreeRDP_BitmapCacheEnabled: - settings->BitmapCacheEnabled = param; - break; - - case FreeRDP_AllowCacheWaitingList: - settings->AllowCacheWaitingList = param; - break; - - case FreeRDP_BitmapCachePersistEnabled: - settings->BitmapCachePersistEnabled = param; - break; - - case FreeRDP_ColorPointerFlag: - settings->ColorPointerFlag = param; - break; - - case FreeRDP_UnicodeInput: - settings->UnicodeInput = param; - break; - - case FreeRDP_FastPathInput: - settings->FastPathInput = param; - break; - - case FreeRDP_MultiTouchInput: - settings->MultiTouchInput = param; - break; - - case FreeRDP_MultiTouchGestures: - settings->MultiTouchGestures = param; - break; - - case FreeRDP_SoundBeepsEnabled: - settings->SoundBeepsEnabled = param; - break; - - case FreeRDP_SurfaceCommandsEnabled: - settings->SurfaceCommandsEnabled = param; - break; - - case FreeRDP_FrameMarkerCommandEnabled: - settings->FrameMarkerCommandEnabled = param; - break; - - case FreeRDP_RemoteFxOnly: - settings->RemoteFxOnly = param; - break; - - case FreeRDP_RemoteFxCodec: - settings->RemoteFxCodec = param; - break; - - case FreeRDP_RemoteFxImageCodec: - settings->RemoteFxImageCodec = param; - break; - - case FreeRDP_NSCodec: - settings->NSCodec = param; - break; - - case FreeRDP_NSCodecAllowSubsampling: - settings->NSCodecAllowSubsampling = param; - break; - - case FreeRDP_NSCodecAllowDynamicColorFidelity: - settings->NSCodecAllowDynamicColorFidelity = param; - break; - - case FreeRDP_JpegCodec: - settings->JpegCodec = param; - break; - - case FreeRDP_GfxThinClient: - settings->GfxThinClient = param; - break; - - case FreeRDP_GfxSmallCache: - settings->GfxSmallCache = param; - break; - - case FreeRDP_GfxProgressive: - settings->GfxProgressive = param; - break; - - case FreeRDP_GfxProgressiveV2: - settings->GfxProgressiveV2 = param; - break; - - case FreeRDP_GfxH264: - settings->GfxH264 = param; - break; - - case FreeRDP_GfxAVC444: - settings->GfxAVC444 = param; - break; - - case FreeRDP_GfxSendQoeAck: - settings->GfxSendQoeAck = param; - break; - - case FreeRDP_DrawNineGridEnabled: - settings->DrawNineGridEnabled = param; - break; - - case FreeRDP_DrawGdiPlusEnabled: - settings->DrawGdiPlusEnabled = param; - break; - - case FreeRDP_DrawGdiPlusCacheEnabled: - settings->DrawGdiPlusCacheEnabled = param; - break; - - case FreeRDP_DeviceRedirection: - settings->DeviceRedirection = param; - break; - - case FreeRDP_RedirectDrives: - settings->RedirectDrives = param; - break; - - case FreeRDP_RedirectHomeDrive: - settings->RedirectHomeDrive = param; - break; - - case FreeRDP_RedirectSmartCards: - settings->RedirectSmartCards = param; - break; - - case FreeRDP_RedirectPrinters: - settings->RedirectPrinters = param; - break; - - case FreeRDP_RedirectSerialPorts: - settings->RedirectSerialPorts = param; - break; - - case FreeRDP_RedirectParallelPorts: - settings->RedirectParallelPorts = param; - break; - - case FreeRDP_RedirectClipboard: - settings->RedirectClipboard = param; - break; - - case FreeRDP_SmartcardLogon: - settings->SmartcardLogon = param; - break; - - default: - WLog_ERR(TAG, "freerdp_set_param_bool: unknown id %d (param = %"PRId32")", id, param); - return -1; - } - - /* Mark field as modified */ - settings->SettingsModified[id] = 1; - return -1; -} - -int freerdp_get_param_int(rdpSettings* settings, int id) -{ - switch (id) - { - case FreeRDP_XPan: - return settings->XPan; - - case FreeRDP_YPan: - return settings->YPan; - - default: - WLog_ERR(TAG, "freerdp_get_param_int: unknown id: %d", id); - return 0; - } -} - -int freerdp_set_param_int(rdpSettings* settings, int id, int param) -{ - switch (id) - { - case FreeRDP_XPan: - settings->XPan = param; - break; - - case FreeRDP_YPan: - settings->YPan = param; - break; - - default: - WLog_ERR(TAG, "freerdp_set_param_int: unknown id %d (param = %d)", id, param); - return -1; - } - - settings->SettingsModified[id] = 1; - return 0; -} - -UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id) -{ - switch (id) - { - case FreeRDP_ShareId: - return settings->ShareId; - - case FreeRDP_PduSource: - return settings->PduSource; - - case FreeRDP_ServerPort: - return settings->ServerPort; - - case FreeRDP_RdpVersion: - return settings->RdpVersion; - - case FreeRDP_DesktopWidth: - return settings->DesktopWidth; - - case FreeRDP_DesktopHeight: - return settings->DesktopHeight; - - case FreeRDP_ColorDepth: - return settings->ColorDepth; - - case FreeRDP_ConnectionType: - return settings->ConnectionType; - - case FreeRDP_ClientBuild: - return settings->ClientBuild; - - case FreeRDP_EarlyCapabilityFlags: - return settings->EarlyCapabilityFlags; - - case FreeRDP_EncryptionMethods: - return settings->EncryptionMethods; - - case FreeRDP_ExtEncryptionMethods: - return settings->ExtEncryptionMethods; - - case FreeRDP_EncryptionLevel: - return settings->EncryptionLevel; - - case FreeRDP_ServerRandomLength: - return settings->ServerRandomLength; - - case FreeRDP_ClientRandomLength: - return settings->ClientRandomLength; - - case FreeRDP_ChannelCount: - return settings->ChannelCount; - - case FreeRDP_ChannelDefArraySize: - return settings->ChannelDefArraySize; - - case FreeRDP_ClusterInfoFlags: - return settings->ClusterInfoFlags; - - case FreeRDP_RedirectedSessionId: - return settings->RedirectedSessionId; - - case FreeRDP_MonitorDefArraySize: - return settings->MonitorDefArraySize; - - case FreeRDP_DesktopPosX: - return settings->DesktopPosX; - - case FreeRDP_DesktopPosY: - return settings->DesktopPosY; - - case FreeRDP_MultitransportFlags: - return settings->MultitransportFlags; - - case FreeRDP_CompressionLevel: - return settings->CompressionLevel; - - case FreeRDP_AutoReconnectMaxRetries: - return settings->AutoReconnectMaxRetries; - - case FreeRDP_PerformanceFlags: - return settings->PerformanceFlags; - - case FreeRDP_RequestedProtocols: - return settings->RequestedProtocols; - - case FreeRDP_SelectedProtocol: - return settings->SelectedProtocol; - - case FreeRDP_NegotiationFlags: - return settings->NegotiationFlags; - - case FreeRDP_CookieMaxLength: - return settings->CookieMaxLength; - - case FreeRDP_PreconnectionId: - return settings->PreconnectionId; - - case FreeRDP_RedirectionFlags: - return settings->RedirectionFlags; - - case FreeRDP_LoadBalanceInfoLength: - return settings->LoadBalanceInfoLength; - - case FreeRDP_RedirectionPasswordLength: - return settings->RedirectionPasswordLength; - - case FreeRDP_RedirectionTsvUrlLength: - return settings->RedirectionTsvUrlLength; - - case FreeRDP_TargetNetAddressCount: - return settings->TargetNetAddressCount; - - case FreeRDP_PercentScreen: - return settings->PercentScreen; - - case FreeRDP_PercentScreenUseWidth: - return settings->PercentScreenUseWidth; - - case FreeRDP_PercentScreenUseHeight: - return settings->PercentScreenUseHeight; - - case FreeRDP_GatewayUsageMethod: - return settings->GatewayUsageMethod; - - case FreeRDP_GatewayPort: - return settings->GatewayPort; - - case FreeRDP_GatewayCredentialsSource: - return settings->GatewayCredentialsSource; - - case FreeRDP_ProxyType: - return settings->ProxyType; - - case FreeRDP_ProxyPort: - return settings->ProxyPort; - - case FreeRDP_RemoteAppNumIconCaches: - return settings->RemoteAppNumIconCaches; - - case FreeRDP_RemoteAppNumIconCacheEntries: - return settings->RemoteAppNumIconCacheEntries; - - case FreeRDP_ReceivedCapabilitiesSize: - return settings->ReceivedCapabilitiesSize; - - case FreeRDP_OsMajorType: - return settings->OsMajorType; - - case FreeRDP_OsMinorType: - return settings->OsMinorType; - - case FreeRDP_BitmapCacheVersion: - return settings->BitmapCacheVersion; - - case FreeRDP_BitmapCacheV2NumCells: - return settings->BitmapCacheV2NumCells; - - case FreeRDP_PointerCacheSize: - return settings->PointerCacheSize; - - case FreeRDP_KeyboardLayout: - return settings->KeyboardLayout; - - case FreeRDP_KeyboardType: - return settings->KeyboardType; - - case FreeRDP_KeyboardSubType: - return settings->KeyboardSubType; - - case FreeRDP_KeyboardFunctionKey: - return settings->KeyboardFunctionKey; - - case FreeRDP_KeyboardHook: - return settings->KeyboardHook; - break; - - case FreeRDP_BrushSupportLevel: - return settings->BrushSupportLevel; - - case FreeRDP_GlyphSupportLevel: - return settings->GlyphSupportLevel; - - case FreeRDP_OffscreenSupportLevel: - return settings->OffscreenSupportLevel; - - case FreeRDP_OffscreenCacheSize: - return settings->OffscreenCacheSize; - - case FreeRDP_OffscreenCacheEntries: - return settings->OffscreenCacheEntries; - - case FreeRDP_VirtualChannelCompressionFlags: - return settings->VirtualChannelCompressionFlags; - - case FreeRDP_VirtualChannelChunkSize: - return settings->VirtualChannelChunkSize; - - case FreeRDP_MultifragMaxRequestSize: - return settings->MultifragMaxRequestSize; - - case FreeRDP_LargePointerFlag: - return settings->LargePointerFlag; - - case FreeRDP_CompDeskSupportLevel: - return settings->CompDeskSupportLevel; - - case FreeRDP_RemoteFxCodecId: - return settings->RemoteFxCodecId; - - case FreeRDP_RemoteFxCodecMode: - return settings->RemoteFxCodecMode; - - case FreeRDP_NSCodecId: - return settings->NSCodecId; - - case FreeRDP_FrameAcknowledge: - return settings->FrameAcknowledge; - - case FreeRDP_NSCodecColorLossLevel: - return settings->NSCodecColorLossLevel; - - case FreeRDP_JpegCodecId: - return settings->JpegCodecId; - - case FreeRDP_JpegQuality: - return settings->JpegQuality; - - case FreeRDP_BitmapCacheV3CodecId: - return settings->BitmapCacheV3CodecId; - - case FreeRDP_DrawNineGridCacheSize: - return settings->DrawNineGridCacheSize; - - case FreeRDP_DrawNineGridCacheEntries: - return settings->DrawNineGridCacheEntries; - - case FreeRDP_DeviceCount: - return settings->DeviceCount; - - case FreeRDP_DeviceArraySize: - return settings->DeviceArraySize; - - case FreeRDP_StaticChannelCount: - return settings->StaticChannelCount; - - case FreeRDP_StaticChannelArraySize: - return settings->StaticChannelArraySize; - - case FreeRDP_DynamicChannelCount: - return settings->DynamicChannelCount; - - case FreeRDP_DynamicChannelArraySize: - return settings->DynamicChannelArraySize; - - case FreeRDP_SmartSizingWidth: - return settings->SmartSizingWidth; - - case FreeRDP_SmartSizingHeight: - return settings->SmartSizingHeight; - - case FreeRDP_TlsSecLevel: - return settings->TlsSecLevel; - - default: - WLog_ERR(TAG, "freerdp_get_param_uint32: unknown id: %d", id); - return 0; - } -} - -int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param) -{ - switch (id) - { - case FreeRDP_ShareId: - settings->ShareId = param; - break; - - case FreeRDP_PduSource: - settings->PduSource = param; - break; - - case FreeRDP_ServerPort: - settings->ServerPort = param; - break; - - case FreeRDP_RdpVersion: - settings->RdpVersion = param; - break; - - case FreeRDP_DesktopWidth: - settings->DesktopWidth = param; - break; - - case FreeRDP_DesktopHeight: - settings->DesktopHeight = param; - break; - - case FreeRDP_ColorDepth: - settings->ColorDepth = param; - break; - - case FreeRDP_ConnectionType: - settings->ConnectionType = param; - break; - - case FreeRDP_ClientBuild: - settings->ClientBuild = param; - break; - - case FreeRDP_EarlyCapabilityFlags: - settings->EarlyCapabilityFlags = param; - break; - - case FreeRDP_EncryptionMethods: - settings->EncryptionMethods = param; - break; - - case FreeRDP_ExtEncryptionMethods: - settings->ExtEncryptionMethods = param; - break; - - case FreeRDP_EncryptionLevel: - settings->EncryptionLevel = param; - break; - - case FreeRDP_ServerRandomLength: - settings->ServerRandomLength = param; - break; - - case FreeRDP_ClientRandomLength: - settings->ClientRandomLength = param; - break; - - case FreeRDP_ChannelCount: - settings->ChannelCount = param; - break; - - case FreeRDP_ChannelDefArraySize: - settings->ChannelDefArraySize = param; - break; - - case FreeRDP_ClusterInfoFlags: - settings->ClusterInfoFlags = param; - break; - - case FreeRDP_RedirectedSessionId: - settings->RedirectedSessionId = param; - break; - - case FreeRDP_MonitorDefArraySize: - settings->MonitorDefArraySize = param; - break; - - case FreeRDP_DesktopPosX: - settings->DesktopPosX = param; - break; - - case FreeRDP_DesktopPosY: - settings->DesktopPosY = param; - break; - - case FreeRDP_MultitransportFlags: - settings->MultitransportFlags = param; - break; - - case FreeRDP_CompressionLevel: - settings->CompressionLevel = param; - break; - - case FreeRDP_AutoReconnectMaxRetries: - settings->AutoReconnectMaxRetries = param; - break; - - case FreeRDP_PerformanceFlags: - settings->PerformanceFlags = param; - break; - - case FreeRDP_RequestedProtocols: - settings->RequestedProtocols = param; - break; - - case FreeRDP_SelectedProtocol: - settings->SelectedProtocol = param; - break; - - case FreeRDP_NegotiationFlags: - settings->NegotiationFlags = param; - break; - - case FreeRDP_CookieMaxLength: - settings->CookieMaxLength = param; - break; - - case FreeRDP_PreconnectionId: - settings->PreconnectionId = param; - break; - - case FreeRDP_RedirectionFlags: - settings->RedirectionFlags = param; - break; - - case FreeRDP_LoadBalanceInfoLength: - settings->LoadBalanceInfoLength = param; - break; - - case FreeRDP_RedirectionPasswordLength: - settings->RedirectionPasswordLength = param; - break; - - case FreeRDP_RedirectionTsvUrlLength: - settings->RedirectionTsvUrlLength = param; - break; - - case FreeRDP_TargetNetAddressCount: - settings->TargetNetAddressCount = param; - break; - - case FreeRDP_PercentScreen: - settings->PercentScreen = param; - break; - - case FreeRDP_PercentScreenUseWidth: - settings->PercentScreenUseWidth = param; - break; - - case FreeRDP_PercentScreenUseHeight: - settings->PercentScreenUseHeight = param; - break; - - case FreeRDP_GatewayUsageMethod: - settings->GatewayUsageMethod = param; - break; - - case FreeRDP_GatewayPort: - settings->GatewayPort = param; - break; - - case FreeRDP_GatewayCredentialsSource: - settings->GatewayCredentialsSource = param; - break; - - case FreeRDP_ProxyType: - settings->ProxyType = param; - break; - - case FreeRDP_ProxyPort: - settings->ProxyPort = param; - break; - - case FreeRDP_RemoteAppNumIconCaches: - settings->RemoteAppNumIconCaches = param; - break; - - case FreeRDP_RemoteAppNumIconCacheEntries: - settings->RemoteAppNumIconCacheEntries = param; - break; - - case FreeRDP_ReceivedCapabilitiesSize: - settings->ReceivedCapabilitiesSize = param; - break; - - case FreeRDP_OsMajorType: - settings->OsMajorType = param; - break; - - case FreeRDP_OsMinorType: - settings->OsMinorType = param; - break; - - case FreeRDP_BitmapCacheVersion: - settings->BitmapCacheVersion = param; - break; - - case FreeRDP_BitmapCacheV2NumCells: - settings->BitmapCacheV2NumCells = param; - break; - - case FreeRDP_PointerCacheSize: - settings->PointerCacheSize = param; - break; - - case FreeRDP_KeyboardLayout: - settings->KeyboardLayout = param; - break; - - case FreeRDP_KeyboardType: - settings->KeyboardType = param; - break; - - case FreeRDP_KeyboardSubType: - settings->KeyboardSubType = param; - break; - - case FreeRDP_KeyboardFunctionKey: - settings->KeyboardFunctionKey = param; - break; - - case FreeRDP_KeyboardHook: - settings->KeyboardHook = param; - break; - - case FreeRDP_BrushSupportLevel: - settings->BrushSupportLevel = param; - break; - - case FreeRDP_GlyphSupportLevel: - settings->GlyphSupportLevel = param; - break; - - case FreeRDP_OffscreenSupportLevel: - settings->OffscreenSupportLevel = param; - break; - - case FreeRDP_OffscreenCacheSize: - settings->OffscreenCacheSize = param; - break; - - case FreeRDP_OffscreenCacheEntries: - settings->OffscreenCacheEntries = param; - break; - - case FreeRDP_VirtualChannelCompressionFlags: - settings->VirtualChannelCompressionFlags = param; - break; - - case FreeRDP_VirtualChannelChunkSize: - settings->VirtualChannelChunkSize = param; - break; - - case FreeRDP_MultifragMaxRequestSize: - settings->MultifragMaxRequestSize = param; - break; - - case FreeRDP_LargePointerFlag: - settings->LargePointerFlag = param; - break; - - case FreeRDP_CompDeskSupportLevel: - settings->CompDeskSupportLevel = param; - break; - - case FreeRDP_RemoteFxCodecId: - settings->RemoteFxCodecId = param; - break; - - case FreeRDP_RemoteFxCodecMode: - settings->RemoteFxCodecMode = param; - break; - - case FreeRDP_NSCodecId: - settings->NSCodecId = param; - break; - - case FreeRDP_FrameAcknowledge: - settings->FrameAcknowledge = param; - break; - - case FreeRDP_NSCodecColorLossLevel: - settings->NSCodecColorLossLevel = param; - break; - - case FreeRDP_JpegCodecId: - settings->JpegCodecId = param; - break; - - case FreeRDP_JpegQuality: - settings->JpegQuality = param; - break; - - case FreeRDP_BitmapCacheV3CodecId: - settings->BitmapCacheV3CodecId = param; - break; - - case FreeRDP_DrawNineGridCacheSize: - settings->DrawNineGridCacheSize = param; - break; - - case FreeRDP_DrawNineGridCacheEntries: - settings->DrawNineGridCacheEntries = param; - break; - - case FreeRDP_DeviceCount: - settings->DeviceCount = param; - break; - - case FreeRDP_DeviceArraySize: - settings->DeviceArraySize = param; - break; - - case FreeRDP_StaticChannelCount: - settings->StaticChannelCount = param; - break; - - case FreeRDP_StaticChannelArraySize: - settings->StaticChannelArraySize = param; - break; - - case FreeRDP_DynamicChannelCount: - settings->DynamicChannelCount = param; - break; - - case FreeRDP_DynamicChannelArraySize: - settings->DynamicChannelArraySize = param; - break; - - case FreeRDP_TlsSecLevel: - settings->TlsSecLevel = param; - break; - - default: - WLog_ERR(TAG, "freerdp_set_param_uint32: unknown id %d (param = %"PRIu32")", id, param); - return -1; - } - - /* Mark field as modified */ - settings->SettingsModified[id] = 1; - return 0; -} - -UINT64 freerdp_get_param_uint64(rdpSettings* settings, int id) -{ - switch (id) - { - case FreeRDP_ParentWindowId: - return settings->ParentWindowId; - - default: - WLog_ERR(TAG, "freerdp_get_param_uint64: unknown id: %d", id); - return -1; - } -} - -int freerdp_set_param_uint64(rdpSettings* settings, int id, UINT64 param) -{ - switch (id) - { - case FreeRDP_ParentWindowId: - settings->ParentWindowId = param; - break; - - default: - WLog_ERR(TAG, "freerdp_set_param_uint64: unknown id %d (param = %"PRIu64")", id, param); - return -1; - } - - /* Mark field as modified */ - settings->SettingsModified[id] = 1; - return 0; -} - -char* freerdp_get_param_string(rdpSettings* settings, int id) -{ - switch (id) - { - case FreeRDP_ServerHostname: - return settings->ServerHostname; - - case FreeRDP_Username: - return settings->Username; - - case FreeRDP_Password: - return settings->Password; - - case FreeRDP_Domain: - return settings->Domain; - - case FreeRDP_PasswordHash: - return settings->PasswordHash; - - case FreeRDP_ClientHostname: - return settings->ClientHostname; - - case FreeRDP_ClientProductId: - return settings->ClientProductId; - - case FreeRDP_AlternateShell: - return settings->AlternateShell; - - case FreeRDP_ShellWorkingDirectory: - return settings->ShellWorkingDirectory; - - case FreeRDP_ClientAddress: - return settings->ClientAddress; - - case FreeRDP_ClientDir: - return settings->ClientDir; - - case FreeRDP_DynamicDSTTimeZoneKeyName: - return settings->DynamicDSTTimeZoneKeyName; - - case FreeRDP_RemoteAssistanceSessionId: - return settings->RemoteAssistanceSessionId; - - case FreeRDP_RemoteAssistancePassStub: - return settings->RemoteAssistancePassStub; - - case FreeRDP_RemoteAssistancePassword: - return settings->RemoteAssistancePassword; - - case FreeRDP_RemoteAssistanceRCTicket: - return settings->RemoteAssistanceRCTicket; - - case FreeRDP_AuthenticationServiceClass: - return settings->AuthenticationServiceClass; - - case FreeRDP_AllowedTlsCiphers: - return settings->AllowedTlsCiphers; - - case FreeRDP_NtlmSamFile: - return settings->NtlmSamFile; - - case FreeRDP_PreconnectionBlob: - return settings->PreconnectionBlob; - - case FreeRDP_KerberosKdc: - return settings->KerberosKdc; - - case FreeRDP_KerberosRealm: - return settings->KerberosRealm; - - case FreeRDP_CertificateName: - return settings->CertificateName; - - case FreeRDP_CertificateFile: - return settings->CertificateFile; - - case FreeRDP_PrivateKeyFile: - return settings->PrivateKeyFile; - - case FreeRDP_RdpKeyFile: - return settings->RdpKeyFile; - - case FreeRDP_CertificateContent: - return settings->CertificateContent; - - case FreeRDP_PrivateKeyContent: - return settings->PrivateKeyContent; - - case FreeRDP_RdpKeyContent: - return settings->RdpKeyContent; - - case FreeRDP_WindowTitle: - return settings->WindowTitle; - - case FreeRDP_ComputerName: - return settings->ComputerName; - - case FreeRDP_ConnectionFile: - return settings->ConnectionFile; - - case FreeRDP_AssistanceFile: - return settings->AssistanceFile; - - case FreeRDP_HomePath: - return settings->HomePath; - - case FreeRDP_ConfigPath: - return settings->ConfigPath; - - case FreeRDP_CurrentPath: - return settings->CurrentPath; - - case FreeRDP_DumpRemoteFxFile: - return settings->DumpRemoteFxFile; - - case FreeRDP_PlayRemoteFxFile: - return settings->PlayRemoteFxFile; - - case FreeRDP_GatewayHostname: - return settings->GatewayHostname; - - case FreeRDP_GatewayUsername: - return settings->GatewayUsername; - - case FreeRDP_GatewayPassword: - return settings->GatewayPassword; - - case FreeRDP_GatewayDomain: - return settings->GatewayDomain; - - case FreeRDP_GatewayAccessToken: - return settings->GatewayAccessToken; - - case FreeRDP_ProxyHostname: - return settings->ProxyHostname; - - case FreeRDP_RemoteApplicationName: - return settings->RemoteApplicationName; - - case FreeRDP_RemoteApplicationIcon: - return settings->RemoteApplicationIcon; - - case FreeRDP_RemoteApplicationProgram: - return settings->RemoteApplicationProgram; - - case FreeRDP_RemoteApplicationFile: - return settings->RemoteApplicationFile; - - case FreeRDP_RemoteApplicationGuid: - return settings->RemoteApplicationGuid; - - case FreeRDP_RemoteApplicationCmdLine: - return settings->RemoteApplicationCmdLine; - - case FreeRDP_ImeFileName: - return settings->ImeFileName; - - case FreeRDP_DrivesToRedirect: - return settings->DrivesToRedirect; - - default: - WLog_ERR(TAG, "freerdp_get_param_string: unknown id: %d", id); - return NULL; - } -} - -int freerdp_set_param_string(rdpSettings* settings, int id, const char* param) -{ - char** tmp = NULL; - - if (!param) - return -1; - - switch (id) - { - case FreeRDP_ServerHostname: - tmp = &settings->ServerHostname; - break; - - case FreeRDP_Username: - tmp = &settings->Username; - break; - - case FreeRDP_Password: - tmp = &settings->Password; - break; - - case FreeRDP_Domain: - tmp = &settings->Domain; - break; - - case FreeRDP_PasswordHash: - tmp = &settings->PasswordHash; - break; - - case FreeRDP_ClientHostname: - tmp = &settings->ClientHostname; - break; - - case FreeRDP_ClientProductId: - tmp = &settings->ClientProductId; - break; - - case FreeRDP_AlternateShell: - tmp = &settings->AlternateShell; - break; - - case FreeRDP_ShellWorkingDirectory: - tmp = &settings->ShellWorkingDirectory; - break; - - case FreeRDP_ClientAddress: - tmp = &settings->ClientAddress; - break; - - case FreeRDP_ClientDir: - tmp = &settings->ClientDir; - break; - - case FreeRDP_DynamicDSTTimeZoneKeyName: - tmp = &settings->DynamicDSTTimeZoneKeyName; - break; - - case FreeRDP_RemoteAssistanceSessionId: - tmp = &settings->RemoteAssistanceSessionId; - break; - - case FreeRDP_RemoteAssistancePassStub: - tmp = &settings->RemoteAssistancePassStub; - break; - - case FreeRDP_RemoteAssistancePassword: - tmp = &settings->RemoteAssistancePassword; - break; - - case FreeRDP_RemoteAssistanceRCTicket: - tmp = &settings->RemoteAssistanceRCTicket; - break; - - case FreeRDP_AuthenticationServiceClass: - tmp = &settings->AuthenticationServiceClass; - break; - - case FreeRDP_AllowedTlsCiphers: - tmp = &settings->AllowedTlsCiphers; - break; - - case FreeRDP_NtlmSamFile: - tmp = &settings->NtlmSamFile; - break; - - case FreeRDP_PreconnectionBlob: - tmp = &settings->PreconnectionBlob; - break; - - case FreeRDP_KerberosKdc: - tmp = &settings->KerberosKdc; - break; - - case FreeRDP_KerberosRealm: - tmp = &settings->KerberosRealm; - break; - - case FreeRDP_CertificateName: - tmp = &settings->CertificateName; - break; - - case FreeRDP_CertificateFile: - tmp = &settings->CertificateFile; - break; - - case FreeRDP_PrivateKeyFile: - tmp = &settings->PrivateKeyFile; - break; - - case FreeRDP_CertificateContent: - tmp = &settings->CertificateContent; - break; - - case FreeRDP_PrivateKeyContent: - tmp = &settings->PrivateKeyContent; - break; - - case FreeRDP_RdpKeyContent: - tmp = &settings->RdpKeyContent; - break; - - case FreeRDP_RdpKeyFile: - tmp = &settings->RdpKeyFile; - break; - - case FreeRDP_WindowTitle: - tmp = &settings->WindowTitle; - break; - - case FreeRDP_ComputerName: - tmp = &settings->ComputerName; - break; - - case FreeRDP_ConnectionFile: - tmp = &settings->ConnectionFile; - break; - - case FreeRDP_AssistanceFile: - tmp = &settings->AssistanceFile; - break; - - case FreeRDP_HomePath: - tmp = &settings->HomePath; - break; - - case FreeRDP_ConfigPath: - tmp = &settings->ConfigPath; - break; - - case FreeRDP_CurrentPath: - tmp = &settings->CurrentPath; - break; - - case FreeRDP_DumpRemoteFxFile: - tmp = &settings->DumpRemoteFxFile; - break; - - case FreeRDP_PlayRemoteFxFile: - tmp = &settings->PlayRemoteFxFile; - break; - - case FreeRDP_GatewayHostname: - tmp = &settings->GatewayHostname; - break; - - case FreeRDP_GatewayUsername: - tmp = &settings->GatewayUsername; - break; - - case FreeRDP_GatewayPassword: - tmp = &settings->GatewayPassword; - break; - - case FreeRDP_GatewayDomain: - tmp = &settings->GatewayDomain; - break; - - case FreeRDP_GatewayAccessToken: - tmp = &settings->GatewayAccessToken; - break; - - case FreeRDP_ProxyHostname: - tmp = &settings->ProxyHostname; - break; - - case FreeRDP_RemoteApplicationName: - tmp = &settings->RemoteApplicationName; - break; - - case FreeRDP_RemoteApplicationIcon: - tmp = &settings->RemoteApplicationIcon; - break; - - case FreeRDP_RemoteApplicationProgram: - tmp = &settings->RemoteApplicationProgram; - break; - - case FreeRDP_RemoteApplicationFile: - tmp = &settings->RemoteApplicationFile; - break; - - case FreeRDP_RemoteApplicationGuid: - tmp = &settings->RemoteApplicationGuid; - break; - - case FreeRDP_RemoteApplicationCmdLine: - tmp = &settings->RemoteApplicationCmdLine; - break; - - case FreeRDP_ImeFileName: - tmp = &settings->ImeFileName; - break; - - case FreeRDP_DrivesToRedirect: - tmp = &settings->DrivesToRedirect; - break; - - default: - WLog_ERR(TAG, "unknown id %d (param = %s)", id, param); - return -1; - } - - free(*tmp); - - if (!(*tmp = _strdup(param))) - return -1; - - /* Mark field as modified */ - settings->SettingsModified[id] = 1; - return 0; -} diff --git a/libfreerdp/common/settings_getters.c b/libfreerdp/common/settings_getters.c new file mode 100644 index 000000000..ccb19457e --- /dev/null +++ b/libfreerdp/common/settings_getters.c @@ -0,0 +1,2703 @@ +/* Generated by */ + +#include +#include + +#define TAG FREERDP_TAG("common.settings") + +BOOL freerdp_get_param_bool(rdpSettings* settings, size_t id) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_ServerMode: + return settings->ServerMode; + + case FreeRDP_WaitForOutputBufferFlush: + return settings->WaitForOutputBufferFlush; + + case FreeRDP_NetworkAutoDetect: + return settings->NetworkAutoDetect; + + case FreeRDP_SupportAsymetricKeys: + return settings->SupportAsymetricKeys; + + case FreeRDP_SupportErrorInfoPdu: + return settings->SupportErrorInfoPdu; + + case FreeRDP_SupportStatusInfoPdu: + return settings->SupportStatusInfoPdu; + + case FreeRDP_SupportMonitorLayoutPdu: + return settings->SupportMonitorLayoutPdu; + + case FreeRDP_SupportGraphicsPipeline: + return settings->SupportGraphicsPipeline; + + case FreeRDP_SupportDynamicTimeZone: + return settings->SupportDynamicTimeZone; + + case FreeRDP_SupportHeartbeatPdu: + return settings->SupportHeartbeatPdu; + + case FreeRDP_UseRdpSecurityLayer: + return settings->UseRdpSecurityLayer; + + case FreeRDP_ConsoleSession: + return settings->ConsoleSession; + + case FreeRDP_SpanMonitors: + return settings->SpanMonitors; + + case FreeRDP_UseMultimon: + return settings->UseMultimon; + + case FreeRDP_ForceMultimon: + return settings->ForceMultimon; + + case FreeRDP_ListMonitors: + return settings->ListMonitors; + + case FreeRDP_HasMonitorAttributes: + return settings->HasMonitorAttributes; + + case FreeRDP_SupportMultitransport: + return settings->SupportMultitransport; + + case FreeRDP_AutoLogonEnabled: + return settings->AutoLogonEnabled; + + case FreeRDP_CompressionEnabled: + return settings->CompressionEnabled; + + case FreeRDP_DisableCtrlAltDel: + return settings->DisableCtrlAltDel; + + case FreeRDP_EnableWindowsKey: + return settings->EnableWindowsKey; + + case FreeRDP_MaximizeShell: + return settings->MaximizeShell; + + case FreeRDP_LogonNotify: + return settings->LogonNotify; + + case FreeRDP_LogonErrors: + return settings->LogonErrors; + + case FreeRDP_MouseAttached: + return settings->MouseAttached; + + case FreeRDP_MouseHasWheel: + return settings->MouseHasWheel; + + case FreeRDP_RemoteConsoleAudio: + return settings->RemoteConsoleAudio; + + case FreeRDP_AudioPlayback: + return settings->AudioPlayback; + + case FreeRDP_AudioCapture: + return settings->AudioCapture; + + case FreeRDP_VideoDisable: + return settings->VideoDisable; + + case FreeRDP_PasswordIsSmartcardPin: + return settings->PasswordIsSmartcardPin; + + case FreeRDP_UsingSavedCredentials: + return settings->UsingSavedCredentials; + + case FreeRDP_ForceEncryptedCsPdu: + return settings->ForceEncryptedCsPdu; + + case FreeRDP_HiDefRemoteApp: + return settings->HiDefRemoteApp; + + case FreeRDP_IPv6Enabled: + return settings->IPv6Enabled; + + case FreeRDP_AutoReconnectionEnabled: + return settings->AutoReconnectionEnabled; + + case FreeRDP_PrintReconnectCookie: + return settings->PrintReconnectCookie; + + case FreeRDP_DynamicDaylightTimeDisabled: + return settings->DynamicDaylightTimeDisabled; + + case FreeRDP_AllowFontSmoothing: + return settings->AllowFontSmoothing; + + case FreeRDP_DisableWallpaper: + return settings->DisableWallpaper; + + case FreeRDP_DisableFullWindowDrag: + return settings->DisableFullWindowDrag; + + case FreeRDP_DisableMenuAnims: + return settings->DisableMenuAnims; + + case FreeRDP_DisableThemes: + return settings->DisableThemes; + + case FreeRDP_DisableCursorShadow: + return settings->DisableCursorShadow; + + case FreeRDP_DisableCursorBlinking: + return settings->DisableCursorBlinking; + + case FreeRDP_AllowDesktopComposition: + return settings->AllowDesktopComposition; + + case FreeRDP_RemoteAssistanceMode: + return settings->RemoteAssistanceMode; + + case FreeRDP_EncomspVirtualChannel: + return settings->EncomspVirtualChannel; + + case FreeRDP_RemdeskVirtualChannel: + return settings->RemdeskVirtualChannel; + + case FreeRDP_LyncRdpMode: + return settings->LyncRdpMode; + + case FreeRDP_TlsSecurity: + return settings->TlsSecurity; + + case FreeRDP_NlaSecurity: + return settings->NlaSecurity; + + case FreeRDP_RdpSecurity: + return settings->RdpSecurity; + + case FreeRDP_ExtSecurity: + return settings->ExtSecurity; + + case FreeRDP_Authentication: + return settings->Authentication; + + case FreeRDP_NegotiateSecurityLayer: + return settings->NegotiateSecurityLayer; + + case FreeRDP_RestrictedAdminModeRequired: + return settings->RestrictedAdminModeRequired; + + case FreeRDP_DisableCredentialsDelegation: + return settings->DisableCredentialsDelegation; + + case FreeRDP_VmConnectMode: + return settings->VmConnectMode; + + case FreeRDP_FIPSMode: + return settings->FIPSMode; + + case FreeRDP_MstscCookieMode: + return settings->MstscCookieMode; + + case FreeRDP_SendPreconnectionPdu: + return settings->SendPreconnectionPdu; + + case FreeRDP_SmartcardLogon: + return settings->SmartcardLogon; + + case FreeRDP_IgnoreCertificate: + return settings->IgnoreCertificate; + + case FreeRDP_ExternalCertificateManagement: + return settings->ExternalCertificateManagement; + + case FreeRDP_AutoAcceptCertificate: + return settings->AutoAcceptCertificate; + + case FreeRDP_AutoDenyCertificate: + return settings->AutoDenyCertificate; + + case FreeRDP_Workarea: + return settings->Workarea; + + case FreeRDP_Fullscreen: + return settings->Fullscreen; + + case FreeRDP_GrabKeyboard: + return settings->GrabKeyboard; + + case FreeRDP_Decorations: + return settings->Decorations; + + case FreeRDP_MouseMotion: + return settings->MouseMotion; + + case FreeRDP_AsyncInput: + return settings->AsyncInput; + + case FreeRDP_AsyncUpdate: + return settings->AsyncUpdate; + + case FreeRDP_AsyncChannels: + return settings->AsyncChannels; + + case FreeRDP_ToggleFullscreen: + return settings->ToggleFullscreen; + + case FreeRDP_EmbeddedWindow: + return settings->EmbeddedWindow; + + case FreeRDP_SmartSizing: + return settings->SmartSizing; + + case FreeRDP_PercentScreenUseWidth: + return settings->PercentScreenUseWidth; + + case FreeRDP_PercentScreenUseHeight: + return settings->PercentScreenUseHeight; + + case FreeRDP_DynamicResolutionUpdate: + return settings->DynamicResolutionUpdate; + + case FreeRDP_SoftwareGdi: + return settings->SoftwareGdi; + + case FreeRDP_LocalConnection: + return settings->LocalConnection; + + case FreeRDP_AuthenticationOnly: + return settings->AuthenticationOnly; + + case FreeRDP_CredentialsFromStdin: + return settings->CredentialsFromStdin; + + case FreeRDP_UnmapButtons: + return settings->UnmapButtons; + + case FreeRDP_OldLicenseBehaviour: + return settings->OldLicenseBehaviour; + + case FreeRDP_DumpRemoteFx: + return settings->DumpRemoteFx; + + case FreeRDP_PlayRemoteFx: + return settings->PlayRemoteFx; + + case FreeRDP_GatewayUseSameCredentials: + return settings->GatewayUseSameCredentials; + + case FreeRDP_GatewayEnabled: + return settings->GatewayEnabled; + + case FreeRDP_GatewayBypassLocal: + return settings->GatewayBypassLocal; + + case FreeRDP_GatewayRpcTransport: + return settings->GatewayRpcTransport; + + case FreeRDP_GatewayHttpTransport: + return settings->GatewayHttpTransport; + + case FreeRDP_GatewayUdpTransport: + return settings->GatewayUdpTransport; + + case FreeRDP_RemoteApplicationMode: + return settings->RemoteApplicationMode; + + case FreeRDP_DisableRemoteAppCapsCheck: + return settings->DisableRemoteAppCapsCheck; + + case FreeRDP_RemoteAppLanguageBarSupported: + return settings->RemoteAppLanguageBarSupported; + + case FreeRDP_RefreshRect: + return settings->RefreshRect; + + case FreeRDP_SuppressOutput: + return settings->SuppressOutput; + + case FreeRDP_FastPathOutput: + return settings->FastPathOutput; + + case FreeRDP_SaltedChecksum: + return settings->SaltedChecksum; + + case FreeRDP_LongCredentialsSupported: + return settings->LongCredentialsSupported; + + case FreeRDP_NoBitmapCompressionHeader: + return settings->NoBitmapCompressionHeader; + + case FreeRDP_BitmapCompressionDisabled: + return settings->BitmapCompressionDisabled; + + case FreeRDP_DesktopResize: + return settings->DesktopResize; + + case FreeRDP_DrawAllowDynamicColorFidelity: + return settings->DrawAllowDynamicColorFidelity; + + case FreeRDP_DrawAllowColorSubsampling: + return settings->DrawAllowColorSubsampling; + + case FreeRDP_DrawAllowSkipAlpha: + return settings->DrawAllowSkipAlpha; + + case FreeRDP_BitmapCacheV3Enabled: + return settings->BitmapCacheV3Enabled; + + case FreeRDP_AltSecFrameMarkerSupport: + return settings->AltSecFrameMarkerSupport; + + case FreeRDP_AllowUnanouncedOrdersFromServer: + return settings->AllowUnanouncedOrdersFromServer; + + case FreeRDP_BitmapCacheEnabled: + return settings->BitmapCacheEnabled; + + case FreeRDP_AllowCacheWaitingList: + return settings->AllowCacheWaitingList; + + case FreeRDP_BitmapCachePersistEnabled: + return settings->BitmapCachePersistEnabled; + + case FreeRDP_ColorPointerFlag: + return settings->ColorPointerFlag; + + case FreeRDP_UnicodeInput: + return settings->UnicodeInput; + + case FreeRDP_FastPathInput: + return settings->FastPathInput; + + case FreeRDP_MultiTouchInput: + return settings->MultiTouchInput; + + case FreeRDP_MultiTouchGestures: + return settings->MultiTouchGestures; + + case FreeRDP_HasHorizontalWheel: + return settings->HasHorizontalWheel; + + case FreeRDP_HasExtendedMouseEvent: + return settings->HasExtendedMouseEvent; + + case FreeRDP_SoundBeepsEnabled: + return settings->SoundBeepsEnabled; + + case FreeRDP_SurfaceCommandsEnabled: + return settings->SurfaceCommandsEnabled; + + case FreeRDP_FrameMarkerCommandEnabled: + return settings->FrameMarkerCommandEnabled; + + case FreeRDP_SurfaceFrameMarkerEnabled: + return settings->SurfaceFrameMarkerEnabled; + + case FreeRDP_RemoteFxOnly: + return settings->RemoteFxOnly; + + case FreeRDP_RemoteFxCodec: + return settings->RemoteFxCodec; + + case FreeRDP_RemoteFxImageCodec: + return settings->RemoteFxImageCodec; + + case FreeRDP_NSCodec: + return settings->NSCodec; + + case FreeRDP_NSCodecAllowSubsampling: + return settings->NSCodecAllowSubsampling; + + case FreeRDP_NSCodecAllowDynamicColorFidelity: + return settings->NSCodecAllowDynamicColorFidelity; + + case FreeRDP_JpegCodec: + return settings->JpegCodec; + + case FreeRDP_GfxThinClient: + return settings->GfxThinClient; + + case FreeRDP_GfxSmallCache: + return settings->GfxSmallCache; + + case FreeRDP_GfxProgressive: + return settings->GfxProgressive; + + case FreeRDP_GfxProgressiveV2: + return settings->GfxProgressiveV2; + + case FreeRDP_GfxH264: + return settings->GfxH264; + + case FreeRDP_GfxAVC444: + return settings->GfxAVC444; + + case FreeRDP_GfxSendQoeAck: + return settings->GfxSendQoeAck; + + case FreeRDP_GfxAVC444v2: + return settings->GfxAVC444v2; + + case FreeRDP_DrawNineGridEnabled: + return settings->DrawNineGridEnabled; + + case FreeRDP_DrawGdiPlusEnabled: + return settings->DrawGdiPlusEnabled; + + case FreeRDP_DrawGdiPlusCacheEnabled: + return settings->DrawGdiPlusCacheEnabled; + + case FreeRDP_DeviceRedirection: + return settings->DeviceRedirection; + + case FreeRDP_RedirectDrives: + return settings->RedirectDrives; + + case FreeRDP_RedirectHomeDrive: + return settings->RedirectHomeDrive; + + case FreeRDP_RedirectSmartCards: + return settings->RedirectSmartCards; + + case FreeRDP_RedirectPrinters: + return settings->RedirectPrinters; + + case FreeRDP_RedirectSerialPorts: + return settings->RedirectSerialPorts; + + case FreeRDP_RedirectParallelPorts: + return settings->RedirectParallelPorts; + + case FreeRDP_PreferIPv6OverIPv4: + return settings->PreferIPv6OverIPv4; + + case FreeRDP_RedirectClipboard: + return settings->RedirectClipboard; + + case FreeRDP_SupportDynamicChannels: + return settings->SupportDynamicChannels; + + case FreeRDP_SupportEchoChannel: + return settings->SupportEchoChannel; + + case FreeRDP_SupportDisplayControl: + return settings->SupportDisplayControl; + + case FreeRDP_SupportGeometryTracking: + return settings->SupportGeometryTracking; + + case FreeRDP_SupportSSHAgentChannel: + return settings->SupportSSHAgentChannel; + + case FreeRDP_SupportVideoOptimized: + return settings->SupportVideoOptimized; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } +} + +BOOL freerdp_set_param_bool(rdpSettings* settings, size_t id, BOOL val) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_ServerMode: + settings->ServerMode = val; + break; + + case FreeRDP_WaitForOutputBufferFlush: + settings->WaitForOutputBufferFlush = val; + break; + + case FreeRDP_NetworkAutoDetect: + settings->NetworkAutoDetect = val; + break; + + case FreeRDP_SupportAsymetricKeys: + settings->SupportAsymetricKeys = val; + break; + + case FreeRDP_SupportErrorInfoPdu: + settings->SupportErrorInfoPdu = val; + break; + + case FreeRDP_SupportStatusInfoPdu: + settings->SupportStatusInfoPdu = val; + break; + + case FreeRDP_SupportMonitorLayoutPdu: + settings->SupportMonitorLayoutPdu = val; + break; + + case FreeRDP_SupportGraphicsPipeline: + settings->SupportGraphicsPipeline = val; + break; + + case FreeRDP_SupportDynamicTimeZone: + settings->SupportDynamicTimeZone = val; + break; + + case FreeRDP_SupportHeartbeatPdu: + settings->SupportHeartbeatPdu = val; + break; + + case FreeRDP_UseRdpSecurityLayer: + settings->UseRdpSecurityLayer = val; + break; + + case FreeRDP_ConsoleSession: + settings->ConsoleSession = val; + break; + + case FreeRDP_SpanMonitors: + settings->SpanMonitors = val; + break; + + case FreeRDP_UseMultimon: + settings->UseMultimon = val; + break; + + case FreeRDP_ForceMultimon: + settings->ForceMultimon = val; + break; + + case FreeRDP_ListMonitors: + settings->ListMonitors = val; + break; + + case FreeRDP_HasMonitorAttributes: + settings->HasMonitorAttributes = val; + break; + + case FreeRDP_SupportMultitransport: + settings->SupportMultitransport = val; + break; + + case FreeRDP_AutoLogonEnabled: + settings->AutoLogonEnabled = val; + break; + + case FreeRDP_CompressionEnabled: + settings->CompressionEnabled = val; + break; + + case FreeRDP_DisableCtrlAltDel: + settings->DisableCtrlAltDel = val; + break; + + case FreeRDP_EnableWindowsKey: + settings->EnableWindowsKey = val; + break; + + case FreeRDP_MaximizeShell: + settings->MaximizeShell = val; + break; + + case FreeRDP_LogonNotify: + settings->LogonNotify = val; + break; + + case FreeRDP_LogonErrors: + settings->LogonErrors = val; + break; + + case FreeRDP_MouseAttached: + settings->MouseAttached = val; + break; + + case FreeRDP_MouseHasWheel: + settings->MouseHasWheel = val; + break; + + case FreeRDP_RemoteConsoleAudio: + settings->RemoteConsoleAudio = val; + break; + + case FreeRDP_AudioPlayback: + settings->AudioPlayback = val; + break; + + case FreeRDP_AudioCapture: + settings->AudioCapture = val; + break; + + case FreeRDP_VideoDisable: + settings->VideoDisable = val; + break; + + case FreeRDP_PasswordIsSmartcardPin: + settings->PasswordIsSmartcardPin = val; + break; + + case FreeRDP_UsingSavedCredentials: + settings->UsingSavedCredentials = val; + break; + + case FreeRDP_ForceEncryptedCsPdu: + settings->ForceEncryptedCsPdu = val; + break; + + case FreeRDP_HiDefRemoteApp: + settings->HiDefRemoteApp = val; + break; + + case FreeRDP_IPv6Enabled: + settings->IPv6Enabled = val; + break; + + case FreeRDP_AutoReconnectionEnabled: + settings->AutoReconnectionEnabled = val; + break; + + case FreeRDP_PrintReconnectCookie: + settings->PrintReconnectCookie = val; + break; + + case FreeRDP_DynamicDaylightTimeDisabled: + settings->DynamicDaylightTimeDisabled = val; + break; + + case FreeRDP_AllowFontSmoothing: + settings->AllowFontSmoothing = val; + break; + + case FreeRDP_DisableWallpaper: + settings->DisableWallpaper = val; + break; + + case FreeRDP_DisableFullWindowDrag: + settings->DisableFullWindowDrag = val; + break; + + case FreeRDP_DisableMenuAnims: + settings->DisableMenuAnims = val; + break; + + case FreeRDP_DisableThemes: + settings->DisableThemes = val; + break; + + case FreeRDP_DisableCursorShadow: + settings->DisableCursorShadow = val; + break; + + case FreeRDP_DisableCursorBlinking: + settings->DisableCursorBlinking = val; + break; + + case FreeRDP_AllowDesktopComposition: + settings->AllowDesktopComposition = val; + break; + + case FreeRDP_RemoteAssistanceMode: + settings->RemoteAssistanceMode = val; + break; + + case FreeRDP_EncomspVirtualChannel: + settings->EncomspVirtualChannel = val; + break; + + case FreeRDP_RemdeskVirtualChannel: + settings->RemdeskVirtualChannel = val; + break; + + case FreeRDP_LyncRdpMode: + settings->LyncRdpMode = val; + break; + + case FreeRDP_TlsSecurity: + settings->TlsSecurity = val; + break; + + case FreeRDP_NlaSecurity: + settings->NlaSecurity = val; + break; + + case FreeRDP_RdpSecurity: + settings->RdpSecurity = val; + break; + + case FreeRDP_ExtSecurity: + settings->ExtSecurity = val; + break; + + case FreeRDP_Authentication: + settings->Authentication = val; + break; + + case FreeRDP_NegotiateSecurityLayer: + settings->NegotiateSecurityLayer = val; + break; + + case FreeRDP_RestrictedAdminModeRequired: + settings->RestrictedAdminModeRequired = val; + break; + + case FreeRDP_DisableCredentialsDelegation: + settings->DisableCredentialsDelegation = val; + break; + + case FreeRDP_VmConnectMode: + settings->VmConnectMode = val; + break; + + case FreeRDP_FIPSMode: + settings->FIPSMode = val; + break; + + case FreeRDP_MstscCookieMode: + settings->MstscCookieMode = val; + break; + + case FreeRDP_SendPreconnectionPdu: + settings->SendPreconnectionPdu = val; + break; + + case FreeRDP_SmartcardLogon: + settings->SmartcardLogon = val; + break; + + case FreeRDP_IgnoreCertificate: + settings->IgnoreCertificate = val; + break; + + case FreeRDP_ExternalCertificateManagement: + settings->ExternalCertificateManagement = val; + break; + + case FreeRDP_AutoAcceptCertificate: + settings->AutoAcceptCertificate = val; + break; + + case FreeRDP_AutoDenyCertificate: + settings->AutoDenyCertificate = val; + break; + + case FreeRDP_Workarea: + settings->Workarea = val; + break; + + case FreeRDP_Fullscreen: + settings->Fullscreen = val; + break; + + case FreeRDP_GrabKeyboard: + settings->GrabKeyboard = val; + break; + + case FreeRDP_Decorations: + settings->Decorations = val; + break; + + case FreeRDP_MouseMotion: + settings->MouseMotion = val; + break; + + case FreeRDP_AsyncInput: + settings->AsyncInput = val; + break; + + case FreeRDP_AsyncUpdate: + settings->AsyncUpdate = val; + break; + + case FreeRDP_AsyncChannels: + settings->AsyncChannels = val; + break; + + case FreeRDP_ToggleFullscreen: + settings->ToggleFullscreen = val; + break; + + case FreeRDP_EmbeddedWindow: + settings->EmbeddedWindow = val; + break; + + case FreeRDP_SmartSizing: + settings->SmartSizing = val; + break; + + case FreeRDP_PercentScreenUseWidth: + settings->PercentScreenUseWidth = val; + break; + + case FreeRDP_PercentScreenUseHeight: + settings->PercentScreenUseHeight = val; + break; + + case FreeRDP_DynamicResolutionUpdate: + settings->DynamicResolutionUpdate = val; + break; + + case FreeRDP_SoftwareGdi: + settings->SoftwareGdi = val; + break; + + case FreeRDP_LocalConnection: + settings->LocalConnection = val; + break; + + case FreeRDP_AuthenticationOnly: + settings->AuthenticationOnly = val; + break; + + case FreeRDP_CredentialsFromStdin: + settings->CredentialsFromStdin = val; + break; + + case FreeRDP_UnmapButtons: + settings->UnmapButtons = val; + break; + + case FreeRDP_OldLicenseBehaviour: + settings->OldLicenseBehaviour = val; + break; + + case FreeRDP_DumpRemoteFx: + settings->DumpRemoteFx = val; + break; + + case FreeRDP_PlayRemoteFx: + settings->PlayRemoteFx = val; + break; + + case FreeRDP_GatewayUseSameCredentials: + settings->GatewayUseSameCredentials = val; + break; + + case FreeRDP_GatewayEnabled: + settings->GatewayEnabled = val; + break; + + case FreeRDP_GatewayBypassLocal: + settings->GatewayBypassLocal = val; + break; + + case FreeRDP_GatewayRpcTransport: + settings->GatewayRpcTransport = val; + break; + + case FreeRDP_GatewayHttpTransport: + settings->GatewayHttpTransport = val; + break; + + case FreeRDP_GatewayUdpTransport: + settings->GatewayUdpTransport = val; + break; + + case FreeRDP_RemoteApplicationMode: + settings->RemoteApplicationMode = val; + break; + + case FreeRDP_DisableRemoteAppCapsCheck: + settings->DisableRemoteAppCapsCheck = val; + break; + + case FreeRDP_RemoteAppLanguageBarSupported: + settings->RemoteAppLanguageBarSupported = val; + break; + + case FreeRDP_RefreshRect: + settings->RefreshRect = val; + break; + + case FreeRDP_SuppressOutput: + settings->SuppressOutput = val; + break; + + case FreeRDP_FastPathOutput: + settings->FastPathOutput = val; + break; + + case FreeRDP_SaltedChecksum: + settings->SaltedChecksum = val; + break; + + case FreeRDP_LongCredentialsSupported: + settings->LongCredentialsSupported = val; + break; + + case FreeRDP_NoBitmapCompressionHeader: + settings->NoBitmapCompressionHeader = val; + break; + + case FreeRDP_BitmapCompressionDisabled: + settings->BitmapCompressionDisabled = val; + break; + + case FreeRDP_DesktopResize: + settings->DesktopResize = val; + break; + + case FreeRDP_DrawAllowDynamicColorFidelity: + settings->DrawAllowDynamicColorFidelity = val; + break; + + case FreeRDP_DrawAllowColorSubsampling: + settings->DrawAllowColorSubsampling = val; + break; + + case FreeRDP_DrawAllowSkipAlpha: + settings->DrawAllowSkipAlpha = val; + break; + + case FreeRDP_BitmapCacheV3Enabled: + settings->BitmapCacheV3Enabled = val; + break; + + case FreeRDP_AltSecFrameMarkerSupport: + settings->AltSecFrameMarkerSupport = val; + break; + + case FreeRDP_AllowUnanouncedOrdersFromServer: + settings->AllowUnanouncedOrdersFromServer = val; + break; + + case FreeRDP_BitmapCacheEnabled: + settings->BitmapCacheEnabled = val; + break; + + case FreeRDP_AllowCacheWaitingList: + settings->AllowCacheWaitingList = val; + break; + + case FreeRDP_BitmapCachePersistEnabled: + settings->BitmapCachePersistEnabled = val; + break; + + case FreeRDP_ColorPointerFlag: + settings->ColorPointerFlag = val; + break; + + case FreeRDP_UnicodeInput: + settings->UnicodeInput = val; + break; + + case FreeRDP_FastPathInput: + settings->FastPathInput = val; + break; + + case FreeRDP_MultiTouchInput: + settings->MultiTouchInput = val; + break; + + case FreeRDP_MultiTouchGestures: + settings->MultiTouchGestures = val; + break; + + case FreeRDP_HasHorizontalWheel: + settings->HasHorizontalWheel = val; + break; + + case FreeRDP_HasExtendedMouseEvent: + settings->HasExtendedMouseEvent = val; + break; + + case FreeRDP_SoundBeepsEnabled: + settings->SoundBeepsEnabled = val; + break; + + case FreeRDP_SurfaceCommandsEnabled: + settings->SurfaceCommandsEnabled = val; + break; + + case FreeRDP_FrameMarkerCommandEnabled: + settings->FrameMarkerCommandEnabled = val; + break; + + case FreeRDP_SurfaceFrameMarkerEnabled: + settings->SurfaceFrameMarkerEnabled = val; + break; + + case FreeRDP_RemoteFxOnly: + settings->RemoteFxOnly = val; + break; + + case FreeRDP_RemoteFxCodec: + settings->RemoteFxCodec = val; + break; + + case FreeRDP_RemoteFxImageCodec: + settings->RemoteFxImageCodec = val; + break; + + case FreeRDP_NSCodec: + settings->NSCodec = val; + break; + + case FreeRDP_NSCodecAllowSubsampling: + settings->NSCodecAllowSubsampling = val; + break; + + case FreeRDP_NSCodecAllowDynamicColorFidelity: + settings->NSCodecAllowDynamicColorFidelity = val; + break; + + case FreeRDP_JpegCodec: + settings->JpegCodec = val; + break; + + case FreeRDP_GfxThinClient: + settings->GfxThinClient = val; + break; + + case FreeRDP_GfxSmallCache: + settings->GfxSmallCache = val; + break; + + case FreeRDP_GfxProgressive: + settings->GfxProgressive = val; + break; + + case FreeRDP_GfxProgressiveV2: + settings->GfxProgressiveV2 = val; + break; + + case FreeRDP_GfxH264: + settings->GfxH264 = val; + break; + + case FreeRDP_GfxAVC444: + settings->GfxAVC444 = val; + break; + + case FreeRDP_GfxSendQoeAck: + settings->GfxSendQoeAck = val; + break; + + case FreeRDP_GfxAVC444v2: + settings->GfxAVC444v2 = val; + break; + + case FreeRDP_DrawNineGridEnabled: + settings->DrawNineGridEnabled = val; + break; + + case FreeRDP_DrawGdiPlusEnabled: + settings->DrawGdiPlusEnabled = val; + break; + + case FreeRDP_DrawGdiPlusCacheEnabled: + settings->DrawGdiPlusCacheEnabled = val; + break; + + case FreeRDP_DeviceRedirection: + settings->DeviceRedirection = val; + break; + + case FreeRDP_RedirectDrives: + settings->RedirectDrives = val; + break; + + case FreeRDP_RedirectHomeDrive: + settings->RedirectHomeDrive = val; + break; + + case FreeRDP_RedirectSmartCards: + settings->RedirectSmartCards = val; + break; + + case FreeRDP_RedirectPrinters: + settings->RedirectPrinters = val; + break; + + case FreeRDP_RedirectSerialPorts: + settings->RedirectSerialPorts = val; + break; + + case FreeRDP_RedirectParallelPorts: + settings->RedirectParallelPorts = val; + break; + + case FreeRDP_PreferIPv6OverIPv4: + settings->PreferIPv6OverIPv4 = val; + break; + + case FreeRDP_RedirectClipboard: + settings->RedirectClipboard = val; + break; + + case FreeRDP_SupportDynamicChannels: + settings->SupportDynamicChannels = val; + break; + + case FreeRDP_SupportEchoChannel: + settings->SupportEchoChannel = val; + break; + + case FreeRDP_SupportDisplayControl: + settings->SupportDisplayControl = val; + break; + + case FreeRDP_SupportGeometryTracking: + settings->SupportGeometryTracking = val; + break; + + case FreeRDP_SupportSSHAgentChannel: + settings->SupportSSHAgentChannel = val; + break; + + case FreeRDP_SupportVideoOptimized: + settings->SupportVideoOptimized = val; + break; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } + + return TRUE; +} + +UINT16 freerdp_get_param_uint16(rdpSettings* settings, size_t id) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_DesktopOrientation: + return settings->DesktopOrientation; + + case FreeRDP_ProxyPort: + return settings->ProxyPort; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } +} + +BOOL freerdp_set_param_uint16(rdpSettings* settings, size_t id, UINT16 val) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_DesktopOrientation: + settings->DesktopOrientation = val; + break; + + case FreeRDP_ProxyPort: + settings->ProxyPort = val; + break; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } + + return TRUE; +} + +INT16 freerdp_get_param_int16(rdpSettings* settings, size_t id) +{ + if (!settings) + return FALSE; + + switch (id) + { + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } +} + +BOOL freerdp_set_param_int16(rdpSettings* settings, size_t id, INT16 val) +{ + if (!settings) + return FALSE; + + switch (id) + { + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } + + return TRUE; +} + +UINT32 freerdp_get_param_uint32(rdpSettings* settings, size_t id) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_ShareId: + return settings->ShareId; + + case FreeRDP_PduSource: + return settings->PduSource; + + case FreeRDP_ServerPort: + return settings->ServerPort; + + case FreeRDP_MaxTimeInCheckLoop: + return settings->MaxTimeInCheckLoop; + + case FreeRDP_AcceptedCertLength: + return settings->AcceptedCertLength; + + case FreeRDP_RdpVersion: + return settings->RdpVersion; + + case FreeRDP_DesktopWidth: + return settings->DesktopWidth; + + case FreeRDP_DesktopHeight: + return settings->DesktopHeight; + + case FreeRDP_ColorDepth: + return settings->ColorDepth; + + case FreeRDP_ConnectionType: + return settings->ConnectionType; + + case FreeRDP_ClientBuild: + return settings->ClientBuild; + + case FreeRDP_EarlyCapabilityFlags: + return settings->EarlyCapabilityFlags; + + case FreeRDP_DesktopPhysicalWidth: + return settings->DesktopPhysicalWidth; + + case FreeRDP_DesktopPhysicalHeight: + return settings->DesktopPhysicalHeight; + + case FreeRDP_DesktopScaleFactor: + return settings->DesktopScaleFactor; + + case FreeRDP_DeviceScaleFactor: + return settings->DeviceScaleFactor; + + case FreeRDP_EncryptionMethods: + return settings->EncryptionMethods; + + case FreeRDP_ExtEncryptionMethods: + return settings->ExtEncryptionMethods; + + case FreeRDP_EncryptionLevel: + return settings->EncryptionLevel; + + case FreeRDP_ServerRandomLength: + return settings->ServerRandomLength; + + case FreeRDP_ServerCertificateLength: + return settings->ServerCertificateLength; + + case FreeRDP_ClientRandomLength: + return settings->ClientRandomLength; + + case FreeRDP_ChannelCount: + return settings->ChannelCount; + + case FreeRDP_ChannelDefArraySize: + return settings->ChannelDefArraySize; + + case FreeRDP_ClusterInfoFlags: + return settings->ClusterInfoFlags; + + case FreeRDP_RedirectedSessionId: + return settings->RedirectedSessionId; + + case FreeRDP_MonitorCount: + return settings->MonitorCount; + + case FreeRDP_MonitorDefArraySize: + return settings->MonitorDefArraySize; + + case FreeRDP_DesktopPosX: + return settings->DesktopPosX; + + case FreeRDP_DesktopPosY: + return settings->DesktopPosY; + + case FreeRDP_NumMonitorIds: + return settings->NumMonitorIds; + + case FreeRDP_MonitorLocalShiftX: + return settings->MonitorLocalShiftX; + + case FreeRDP_MonitorLocalShiftY: + return settings->MonitorLocalShiftY; + + case FreeRDP_MultitransportFlags: + return settings->MultitransportFlags; + + case FreeRDP_CompressionLevel: + return settings->CompressionLevel; + + case FreeRDP_AutoReconnectMaxRetries: + return settings->AutoReconnectMaxRetries; + + case FreeRDP_PerformanceFlags: + return settings->PerformanceFlags; + + case FreeRDP_RequestedProtocols: + return settings->RequestedProtocols; + + case FreeRDP_SelectedProtocol: + return settings->SelectedProtocol; + + case FreeRDP_NegotiationFlags: + return settings->NegotiationFlags; + + case FreeRDP_AuthenticationLevel: + return settings->AuthenticationLevel; + + case FreeRDP_TlsSecLevel: + return settings->TlsSecLevel; + + case FreeRDP_CookieMaxLength: + return settings->CookieMaxLength; + + case FreeRDP_PreconnectionId: + return settings->PreconnectionId; + + case FreeRDP_RedirectionFlags: + return settings->RedirectionFlags; + + case FreeRDP_LoadBalanceInfoLength: + return settings->LoadBalanceInfoLength; + + case FreeRDP_RedirectionPasswordLength: + return settings->RedirectionPasswordLength; + + case FreeRDP_RedirectionTsvUrlLength: + return settings->RedirectionTsvUrlLength; + + case FreeRDP_TargetNetAddressCount: + return settings->TargetNetAddressCount; + + case FreeRDP_RedirectionAcceptedCertLength: + return settings->RedirectionAcceptedCertLength; + + case FreeRDP_RedirectionPreferType: + return settings->RedirectionPreferType; + + case FreeRDP_Password51Length: + return settings->Password51Length; + + case FreeRDP_PercentScreen: + return settings->PercentScreen; + + case FreeRDP_SmartSizingWidth: + return settings->SmartSizingWidth; + + case FreeRDP_SmartSizingHeight: + return settings->SmartSizingHeight; + + case FreeRDP_GatewayUsageMethod: + return settings->GatewayUsageMethod; + + case FreeRDP_GatewayPort: + return settings->GatewayPort; + + case FreeRDP_GatewayCredentialsSource: + return settings->GatewayCredentialsSource; + + case FreeRDP_GatewayAcceptedCertLength: + return settings->GatewayAcceptedCertLength; + + case FreeRDP_ProxyType: + return settings->ProxyType; + + case FreeRDP_RemoteApplicationExpandCmdLine: + return settings->RemoteApplicationExpandCmdLine; + + case FreeRDP_RemoteApplicationExpandWorkingDir: + return settings->RemoteApplicationExpandWorkingDir; + + case FreeRDP_RemoteAppNumIconCaches: + return settings->RemoteAppNumIconCaches; + + case FreeRDP_RemoteAppNumIconCacheEntries: + return settings->RemoteAppNumIconCacheEntries; + + case FreeRDP_RemoteWndSupportLevel: + return settings->RemoteWndSupportLevel; + + case FreeRDP_ReceivedCapabilitiesSize: + return settings->ReceivedCapabilitiesSize; + + case FreeRDP_OsMajorType: + return settings->OsMajorType; + + case FreeRDP_OsMinorType: + return settings->OsMinorType; + + case FreeRDP_BitmapCacheVersion: + return settings->BitmapCacheVersion; + + case FreeRDP_BitmapCacheV2NumCells: + return settings->BitmapCacheV2NumCells; + + case FreeRDP_PointerCacheSize: + return settings->PointerCacheSize; + + case FreeRDP_KeyboardLayout: + return settings->KeyboardLayout; + + case FreeRDP_KeyboardType: + return settings->KeyboardType; + + case FreeRDP_KeyboardSubType: + return settings->KeyboardSubType; + + case FreeRDP_KeyboardFunctionKey: + return settings->KeyboardFunctionKey; + + case FreeRDP_KeyboardHook: + return settings->KeyboardHook; + + case FreeRDP_BrushSupportLevel: + return settings->BrushSupportLevel; + + case FreeRDP_GlyphSupportLevel: + return settings->GlyphSupportLevel; + + case FreeRDP_OffscreenSupportLevel: + return settings->OffscreenSupportLevel; + + case FreeRDP_OffscreenCacheSize: + return settings->OffscreenCacheSize; + + case FreeRDP_OffscreenCacheEntries: + return settings->OffscreenCacheEntries; + + case FreeRDP_VirtualChannelCompressionFlags: + return settings->VirtualChannelCompressionFlags; + + case FreeRDP_VirtualChannelChunkSize: + return settings->VirtualChannelChunkSize; + + case FreeRDP_MultifragMaxRequestSize: + return settings->MultifragMaxRequestSize; + + case FreeRDP_LargePointerFlag: + return settings->LargePointerFlag; + + case FreeRDP_CompDeskSupportLevel: + return settings->CompDeskSupportLevel; + + case FreeRDP_RemoteFxCodecId: + return settings->RemoteFxCodecId; + + case FreeRDP_RemoteFxCodecMode: + return settings->RemoteFxCodecMode; + + case FreeRDP_RemoteFxCaptureFlags: + return settings->RemoteFxCaptureFlags; + + case FreeRDP_NSCodecId: + return settings->NSCodecId; + + case FreeRDP_FrameAcknowledge: + return settings->FrameAcknowledge; + + case FreeRDP_NSCodecColorLossLevel: + return settings->NSCodecColorLossLevel; + + case FreeRDP_JpegCodecId: + return settings->JpegCodecId; + + case FreeRDP_JpegQuality: + return settings->JpegQuality; + + case FreeRDP_BitmapCacheV3CodecId: + return settings->BitmapCacheV3CodecId; + + case FreeRDP_DrawNineGridCacheSize: + return settings->DrawNineGridCacheSize; + + case FreeRDP_DrawNineGridCacheEntries: + return settings->DrawNineGridCacheEntries; + + case FreeRDP_DeviceCount: + return settings->DeviceCount; + + case FreeRDP_DeviceArraySize: + return settings->DeviceArraySize; + + case FreeRDP_StaticChannelCount: + return settings->StaticChannelCount; + + case FreeRDP_StaticChannelArraySize: + return settings->StaticChannelArraySize; + + case FreeRDP_DynamicChannelCount: + return settings->DynamicChannelCount; + + case FreeRDP_DynamicChannelArraySize: + return settings->DynamicChannelArraySize; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } +} + +BOOL freerdp_set_param_uint32(rdpSettings* settings, size_t id, UINT32 val) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_ShareId: + settings->ShareId = val; + break; + + case FreeRDP_PduSource: + settings->PduSource = val; + break; + + case FreeRDP_ServerPort: + settings->ServerPort = val; + break; + + case FreeRDP_MaxTimeInCheckLoop: + settings->MaxTimeInCheckLoop = val; + break; + + case FreeRDP_AcceptedCertLength: + settings->AcceptedCertLength = val; + break; + + case FreeRDP_RdpVersion: + settings->RdpVersion = val; + break; + + case FreeRDP_DesktopWidth: + settings->DesktopWidth = val; + break; + + case FreeRDP_DesktopHeight: + settings->DesktopHeight = val; + break; + + case FreeRDP_ColorDepth: + settings->ColorDepth = val; + break; + + case FreeRDP_ConnectionType: + settings->ConnectionType = val; + break; + + case FreeRDP_ClientBuild: + settings->ClientBuild = val; + break; + + case FreeRDP_EarlyCapabilityFlags: + settings->EarlyCapabilityFlags = val; + break; + + case FreeRDP_DesktopPhysicalWidth: + settings->DesktopPhysicalWidth = val; + break; + + case FreeRDP_DesktopPhysicalHeight: + settings->DesktopPhysicalHeight = val; + break; + + case FreeRDP_DesktopScaleFactor: + settings->DesktopScaleFactor = val; + break; + + case FreeRDP_DeviceScaleFactor: + settings->DeviceScaleFactor = val; + break; + + case FreeRDP_EncryptionMethods: + settings->EncryptionMethods = val; + break; + + case FreeRDP_ExtEncryptionMethods: + settings->ExtEncryptionMethods = val; + break; + + case FreeRDP_EncryptionLevel: + settings->EncryptionLevel = val; + break; + + case FreeRDP_ServerRandomLength: + settings->ServerRandomLength = val; + break; + + case FreeRDP_ServerCertificateLength: + settings->ServerCertificateLength = val; + break; + + case FreeRDP_ClientRandomLength: + settings->ClientRandomLength = val; + break; + + case FreeRDP_ChannelCount: + settings->ChannelCount = val; + break; + + case FreeRDP_ChannelDefArraySize: + settings->ChannelDefArraySize = val; + break; + + case FreeRDP_ClusterInfoFlags: + settings->ClusterInfoFlags = val; + break; + + case FreeRDP_RedirectedSessionId: + settings->RedirectedSessionId = val; + break; + + case FreeRDP_MonitorCount: + settings->MonitorCount = val; + break; + + case FreeRDP_MonitorDefArraySize: + settings->MonitorDefArraySize = val; + break; + + case FreeRDP_DesktopPosX: + settings->DesktopPosX = val; + break; + + case FreeRDP_DesktopPosY: + settings->DesktopPosY = val; + break; + + case FreeRDP_NumMonitorIds: + settings->NumMonitorIds = val; + break; + + case FreeRDP_MonitorLocalShiftX: + settings->MonitorLocalShiftX = val; + break; + + case FreeRDP_MonitorLocalShiftY: + settings->MonitorLocalShiftY = val; + break; + + case FreeRDP_MultitransportFlags: + settings->MultitransportFlags = val; + break; + + case FreeRDP_CompressionLevel: + settings->CompressionLevel = val; + break; + + case FreeRDP_AutoReconnectMaxRetries: + settings->AutoReconnectMaxRetries = val; + break; + + case FreeRDP_PerformanceFlags: + settings->PerformanceFlags = val; + break; + + case FreeRDP_RequestedProtocols: + settings->RequestedProtocols = val; + break; + + case FreeRDP_SelectedProtocol: + settings->SelectedProtocol = val; + break; + + case FreeRDP_NegotiationFlags: + settings->NegotiationFlags = val; + break; + + case FreeRDP_AuthenticationLevel: + settings->AuthenticationLevel = val; + break; + + case FreeRDP_TlsSecLevel: + settings->TlsSecLevel = val; + break; + + case FreeRDP_CookieMaxLength: + settings->CookieMaxLength = val; + break; + + case FreeRDP_PreconnectionId: + settings->PreconnectionId = val; + break; + + case FreeRDP_RedirectionFlags: + settings->RedirectionFlags = val; + break; + + case FreeRDP_LoadBalanceInfoLength: + settings->LoadBalanceInfoLength = val; + break; + + case FreeRDP_RedirectionPasswordLength: + settings->RedirectionPasswordLength = val; + break; + + case FreeRDP_RedirectionTsvUrlLength: + settings->RedirectionTsvUrlLength = val; + break; + + case FreeRDP_TargetNetAddressCount: + settings->TargetNetAddressCount = val; + break; + + case FreeRDP_RedirectionAcceptedCertLength: + settings->RedirectionAcceptedCertLength = val; + break; + + case FreeRDP_RedirectionPreferType: + settings->RedirectionPreferType = val; + break; + + case FreeRDP_Password51Length: + settings->Password51Length = val; + break; + + case FreeRDP_PercentScreen: + settings->PercentScreen = val; + break; + + case FreeRDP_SmartSizingWidth: + settings->SmartSizingWidth = val; + break; + + case FreeRDP_SmartSizingHeight: + settings->SmartSizingHeight = val; + break; + + case FreeRDP_GatewayUsageMethod: + settings->GatewayUsageMethod = val; + break; + + case FreeRDP_GatewayPort: + settings->GatewayPort = val; + break; + + case FreeRDP_GatewayCredentialsSource: + settings->GatewayCredentialsSource = val; + break; + + case FreeRDP_GatewayAcceptedCertLength: + settings->GatewayAcceptedCertLength = val; + break; + + case FreeRDP_ProxyType: + settings->ProxyType = val; + break; + + case FreeRDP_RemoteApplicationExpandCmdLine: + settings->RemoteApplicationExpandCmdLine = val; + break; + + case FreeRDP_RemoteApplicationExpandWorkingDir: + settings->RemoteApplicationExpandWorkingDir = val; + break; + + case FreeRDP_RemoteAppNumIconCaches: + settings->RemoteAppNumIconCaches = val; + break; + + case FreeRDP_RemoteAppNumIconCacheEntries: + settings->RemoteAppNumIconCacheEntries = val; + break; + + case FreeRDP_RemoteWndSupportLevel: + settings->RemoteWndSupportLevel = val; + break; + + case FreeRDP_ReceivedCapabilitiesSize: + settings->ReceivedCapabilitiesSize = val; + break; + + case FreeRDP_OsMajorType: + settings->OsMajorType = val; + break; + + case FreeRDP_OsMinorType: + settings->OsMinorType = val; + break; + + case FreeRDP_BitmapCacheVersion: + settings->BitmapCacheVersion = val; + break; + + case FreeRDP_BitmapCacheV2NumCells: + settings->BitmapCacheV2NumCells = val; + break; + + case FreeRDP_PointerCacheSize: + settings->PointerCacheSize = val; + break; + + case FreeRDP_KeyboardLayout: + settings->KeyboardLayout = val; + break; + + case FreeRDP_KeyboardType: + settings->KeyboardType = val; + break; + + case FreeRDP_KeyboardSubType: + settings->KeyboardSubType = val; + break; + + case FreeRDP_KeyboardFunctionKey: + settings->KeyboardFunctionKey = val; + break; + + case FreeRDP_KeyboardHook: + settings->KeyboardHook = val; + break; + + case FreeRDP_BrushSupportLevel: + settings->BrushSupportLevel = val; + break; + + case FreeRDP_GlyphSupportLevel: + settings->GlyphSupportLevel = val; + break; + + case FreeRDP_OffscreenSupportLevel: + settings->OffscreenSupportLevel = val; + break; + + case FreeRDP_OffscreenCacheSize: + settings->OffscreenCacheSize = val; + break; + + case FreeRDP_OffscreenCacheEntries: + settings->OffscreenCacheEntries = val; + break; + + case FreeRDP_VirtualChannelCompressionFlags: + settings->VirtualChannelCompressionFlags = val; + break; + + case FreeRDP_VirtualChannelChunkSize: + settings->VirtualChannelChunkSize = val; + break; + + case FreeRDP_MultifragMaxRequestSize: + settings->MultifragMaxRequestSize = val; + break; + + case FreeRDP_LargePointerFlag: + settings->LargePointerFlag = val; + break; + + case FreeRDP_CompDeskSupportLevel: + settings->CompDeskSupportLevel = val; + break; + + case FreeRDP_RemoteFxCodecId: + settings->RemoteFxCodecId = val; + break; + + case FreeRDP_RemoteFxCodecMode: + settings->RemoteFxCodecMode = val; + break; + + case FreeRDP_RemoteFxCaptureFlags: + settings->RemoteFxCaptureFlags = val; + break; + + case FreeRDP_NSCodecId: + settings->NSCodecId = val; + break; + + case FreeRDP_FrameAcknowledge: + settings->FrameAcknowledge = val; + break; + + case FreeRDP_NSCodecColorLossLevel: + settings->NSCodecColorLossLevel = val; + break; + + case FreeRDP_JpegCodecId: + settings->JpegCodecId = val; + break; + + case FreeRDP_JpegQuality: + settings->JpegQuality = val; + break; + + case FreeRDP_BitmapCacheV3CodecId: + settings->BitmapCacheV3CodecId = val; + break; + + case FreeRDP_DrawNineGridCacheSize: + settings->DrawNineGridCacheSize = val; + break; + + case FreeRDP_DrawNineGridCacheEntries: + settings->DrawNineGridCacheEntries = val; + break; + + case FreeRDP_DeviceCount: + settings->DeviceCount = val; + break; + + case FreeRDP_DeviceArraySize: + settings->DeviceArraySize = val; + break; + + case FreeRDP_StaticChannelCount: + settings->StaticChannelCount = val; + break; + + case FreeRDP_StaticChannelArraySize: + settings->StaticChannelArraySize = val; + break; + + case FreeRDP_DynamicChannelCount: + settings->DynamicChannelCount = val; + break; + + case FreeRDP_DynamicChannelArraySize: + settings->DynamicChannelArraySize = val; + break; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } + + return TRUE; +} + +INT32 freerdp_get_param_int32(rdpSettings* settings, size_t id) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_XPan: + return settings->XPan; + + case FreeRDP_YPan: + return settings->YPan; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } +} + +BOOL freerdp_set_param_int32(rdpSettings* settings, size_t id, INT32 val) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_XPan: + settings->XPan = val; + break; + + case FreeRDP_YPan: + settings->YPan = val; + break; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } + + return TRUE; +} + +UINT64 freerdp_get_param_uint64(rdpSettings* settings, size_t id) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_ParentWindowId: + return settings->ParentWindowId; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } +} + +BOOL freerdp_set_param_uint64(rdpSettings* settings, size_t id, UINT64 val) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_ParentWindowId: + settings->ParentWindowId = val; + break; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } + + return TRUE; +} + +INT64 freerdp_get_param_int64(rdpSettings* settings, size_t id) +{ + if (!settings) + return FALSE; + + switch (id) + { + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } +} + +BOOL freerdp_set_param_int64(rdpSettings* settings, size_t id, INT64 val) +{ + if (!settings) + return FALSE; + + switch (id) + { + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } + + return TRUE; +} + +const char* freerdp_get_param_string(rdpSettings* settings, size_t id) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_ServerHostname: + return settings->ServerHostname; + + case FreeRDP_Username: + return settings->Username; + + case FreeRDP_Password: + return settings->Password; + + case FreeRDP_Domain: + return settings->Domain; + + case FreeRDP_PasswordHash: + return settings->PasswordHash; + + case FreeRDP_AcceptedCert: + return settings->AcceptedCert; + + case FreeRDP_ClientHostname: + return settings->ClientHostname; + + case FreeRDP_ClientProductId: + return settings->ClientProductId; + + case FreeRDP_AlternateShell: + return settings->AlternateShell; + + case FreeRDP_ShellWorkingDirectory: + return settings->ShellWorkingDirectory; + + case FreeRDP_ClientAddress: + return settings->ClientAddress; + + case FreeRDP_ClientDir: + return settings->ClientDir; + + case FreeRDP_DynamicDSTTimeZoneKeyName: + return settings->DynamicDSTTimeZoneKeyName; + + case FreeRDP_RemoteAssistanceSessionId: + return settings->RemoteAssistanceSessionId; + + case FreeRDP_RemoteAssistancePassStub: + return settings->RemoteAssistancePassStub; + + case FreeRDP_RemoteAssistancePassword: + return settings->RemoteAssistancePassword; + + case FreeRDP_RemoteAssistanceRCTicket: + return settings->RemoteAssistanceRCTicket; + + case FreeRDP_AuthenticationServiceClass: + return settings->AuthenticationServiceClass; + + case FreeRDP_AllowedTlsCiphers: + return settings->AllowedTlsCiphers; + + case FreeRDP_NtlmSamFile: + return settings->NtlmSamFile; + + case FreeRDP_PreconnectionBlob: + return settings->PreconnectionBlob; + + case FreeRDP_TargetNetAddress: + return settings->TargetNetAddress; + + case FreeRDP_RedirectionUsername: + return settings->RedirectionUsername; + + case FreeRDP_RedirectionDomain: + return settings->RedirectionDomain; + + case FreeRDP_RedirectionTargetFQDN: + return settings->RedirectionTargetFQDN; + + case FreeRDP_RedirectionTargetNetBiosName: + return settings->RedirectionTargetNetBiosName; + + case FreeRDP_RedirectionAcceptedCert: + return settings->RedirectionAcceptedCert; + + case FreeRDP_KerberosKdc: + return settings->KerberosKdc; + + case FreeRDP_KerberosRealm: + return settings->KerberosRealm; + + case FreeRDP_CertificateName: + return settings->CertificateName; + + case FreeRDP_CertificateFile: + return settings->CertificateFile; + + case FreeRDP_PrivateKeyFile: + return settings->PrivateKeyFile; + + case FreeRDP_RdpKeyFile: + return settings->RdpKeyFile; + + case FreeRDP_CertificateContent: + return settings->CertificateContent; + + case FreeRDP_PrivateKeyContent: + return settings->PrivateKeyContent; + + case FreeRDP_RdpKeyContent: + return settings->RdpKeyContent; + + case FreeRDP_WindowTitle: + return settings->WindowTitle; + + case FreeRDP_WmClass: + return settings->WmClass; + + case FreeRDP_ComputerName: + return settings->ComputerName; + + case FreeRDP_ConnectionFile: + return settings->ConnectionFile; + + case FreeRDP_AssistanceFile: + return settings->AssistanceFile; + + case FreeRDP_HomePath: + return settings->HomePath; + + case FreeRDP_ConfigPath: + return settings->ConfigPath; + + case FreeRDP_CurrentPath: + return settings->CurrentPath; + + case FreeRDP_DumpRemoteFxFile: + return settings->DumpRemoteFxFile; + + case FreeRDP_PlayRemoteFxFile: + return settings->PlayRemoteFxFile; + + case FreeRDP_GatewayHostname: + return settings->GatewayHostname; + + case FreeRDP_GatewayUsername: + return settings->GatewayUsername; + + case FreeRDP_GatewayPassword: + return settings->GatewayPassword; + + case FreeRDP_GatewayDomain: + return settings->GatewayDomain; + + case FreeRDP_GatewayAccessToken: + return settings->GatewayAccessToken; + + case FreeRDP_GatewayAcceptedCert: + return settings->GatewayAcceptedCert; + + case FreeRDP_ProxyHostname: + return settings->ProxyHostname; + + case FreeRDP_ProxyUsername: + return settings->ProxyUsername; + + case FreeRDP_ProxyPassword: + return settings->ProxyPassword; + + case FreeRDP_RemoteApplicationName: + return settings->RemoteApplicationName; + + case FreeRDP_RemoteApplicationIcon: + return settings->RemoteApplicationIcon; + + case FreeRDP_RemoteApplicationProgram: + return settings->RemoteApplicationProgram; + + case FreeRDP_RemoteApplicationFile: + return settings->RemoteApplicationFile; + + case FreeRDP_RemoteApplicationGuid: + return settings->RemoteApplicationGuid; + + case FreeRDP_RemoteApplicationCmdLine: + return settings->RemoteApplicationCmdLine; + + case FreeRDP_ImeFileName: + return settings->ImeFileName; + + case FreeRDP_DrivesToRedirect: + return settings->DrivesToRedirect; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } +} + +BOOL freerdp_set_param_string(rdpSettings* settings, size_t id, const char* val) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_ServerHostname: + free(settings->ServerHostname); + settings->ServerHostname = _strdup(val); + return settings->ServerHostname != NULL; + + case FreeRDP_Username: + free(settings->Username); + settings->Username = _strdup(val); + return settings->Username != NULL; + + case FreeRDP_Password: + free(settings->Password); + settings->Password = _strdup(val); + return settings->Password != NULL; + + case FreeRDP_Domain: + free(settings->Domain); + settings->Domain = _strdup(val); + return settings->Domain != NULL; + + case FreeRDP_PasswordHash: + free(settings->PasswordHash); + settings->PasswordHash = _strdup(val); + return settings->PasswordHash != NULL; + + case FreeRDP_AcceptedCert: + free(settings->AcceptedCert); + settings->AcceptedCert = _strdup(val); + return settings->AcceptedCert != NULL; + + case FreeRDP_ClientHostname: + free(settings->ClientHostname); + settings->ClientHostname = _strdup(val); + return settings->ClientHostname != NULL; + + case FreeRDP_ClientProductId: + free(settings->ClientProductId); + settings->ClientProductId = _strdup(val); + return settings->ClientProductId != NULL; + + case FreeRDP_AlternateShell: + free(settings->AlternateShell); + settings->AlternateShell = _strdup(val); + return settings->AlternateShell != NULL; + + case FreeRDP_ShellWorkingDirectory: + free(settings->ShellWorkingDirectory); + settings->ShellWorkingDirectory = _strdup(val); + return settings->ShellWorkingDirectory != NULL; + + case FreeRDP_ClientAddress: + free(settings->ClientAddress); + settings->ClientAddress = _strdup(val); + return settings->ClientAddress != NULL; + + case FreeRDP_ClientDir: + free(settings->ClientDir); + settings->ClientDir = _strdup(val); + return settings->ClientDir != NULL; + + case FreeRDP_DynamicDSTTimeZoneKeyName: + free(settings->DynamicDSTTimeZoneKeyName); + settings->DynamicDSTTimeZoneKeyName = _strdup(val); + return settings->DynamicDSTTimeZoneKeyName != NULL; + + case FreeRDP_RemoteAssistanceSessionId: + free(settings->RemoteAssistanceSessionId); + settings->RemoteAssistanceSessionId = _strdup(val); + return settings->RemoteAssistanceSessionId != NULL; + + case FreeRDP_RemoteAssistancePassStub: + free(settings->RemoteAssistancePassStub); + settings->RemoteAssistancePassStub = _strdup(val); + return settings->RemoteAssistancePassStub != NULL; + + case FreeRDP_RemoteAssistancePassword: + free(settings->RemoteAssistancePassword); + settings->RemoteAssistancePassword = _strdup(val); + return settings->RemoteAssistancePassword != NULL; + + case FreeRDP_RemoteAssistanceRCTicket: + free(settings->RemoteAssistanceRCTicket); + settings->RemoteAssistanceRCTicket = _strdup(val); + return settings->RemoteAssistanceRCTicket != NULL; + + case FreeRDP_AuthenticationServiceClass: + free(settings->AuthenticationServiceClass); + settings->AuthenticationServiceClass = _strdup(val); + return settings->AuthenticationServiceClass != NULL; + + case FreeRDP_AllowedTlsCiphers: + free(settings->AllowedTlsCiphers); + settings->AllowedTlsCiphers = _strdup(val); + return settings->AllowedTlsCiphers != NULL; + + case FreeRDP_NtlmSamFile: + free(settings->NtlmSamFile); + settings->NtlmSamFile = _strdup(val); + return settings->NtlmSamFile != NULL; + + case FreeRDP_PreconnectionBlob: + free(settings->PreconnectionBlob); + settings->PreconnectionBlob = _strdup(val); + return settings->PreconnectionBlob != NULL; + + case FreeRDP_TargetNetAddress: + free(settings->TargetNetAddress); + settings->TargetNetAddress = _strdup(val); + return settings->TargetNetAddress != NULL; + + case FreeRDP_RedirectionUsername: + free(settings->RedirectionUsername); + settings->RedirectionUsername = _strdup(val); + return settings->RedirectionUsername != NULL; + + case FreeRDP_RedirectionDomain: + free(settings->RedirectionDomain); + settings->RedirectionDomain = _strdup(val); + return settings->RedirectionDomain != NULL; + + case FreeRDP_RedirectionTargetFQDN: + free(settings->RedirectionTargetFQDN); + settings->RedirectionTargetFQDN = _strdup(val); + return settings->RedirectionTargetFQDN != NULL; + + case FreeRDP_RedirectionTargetNetBiosName: + free(settings->RedirectionTargetNetBiosName); + settings->RedirectionTargetNetBiosName = _strdup(val); + return settings->RedirectionTargetNetBiosName != NULL; + + case FreeRDP_RedirectionAcceptedCert: + free(settings->RedirectionAcceptedCert); + settings->RedirectionAcceptedCert = _strdup(val); + return settings->RedirectionAcceptedCert != NULL; + + case FreeRDP_KerberosKdc: + free(settings->KerberosKdc); + settings->KerberosKdc = _strdup(val); + return settings->KerberosKdc != NULL; + + case FreeRDP_KerberosRealm: + free(settings->KerberosRealm); + settings->KerberosRealm = _strdup(val); + return settings->KerberosRealm != NULL; + + case FreeRDP_CertificateName: + free(settings->CertificateName); + settings->CertificateName = _strdup(val); + return settings->CertificateName != NULL; + + case FreeRDP_CertificateFile: + free(settings->CertificateFile); + settings->CertificateFile = _strdup(val); + return settings->CertificateFile != NULL; + + case FreeRDP_PrivateKeyFile: + free(settings->PrivateKeyFile); + settings->PrivateKeyFile = _strdup(val); + return settings->PrivateKeyFile != NULL; + + case FreeRDP_RdpKeyFile: + free(settings->RdpKeyFile); + settings->RdpKeyFile = _strdup(val); + return settings->RdpKeyFile != NULL; + + case FreeRDP_CertificateContent: + free(settings->CertificateContent); + settings->CertificateContent = _strdup(val); + return settings->CertificateContent != NULL; + + case FreeRDP_PrivateKeyContent: + free(settings->PrivateKeyContent); + settings->PrivateKeyContent = _strdup(val); + return settings->PrivateKeyContent != NULL; + + case FreeRDP_RdpKeyContent: + free(settings->RdpKeyContent); + settings->RdpKeyContent = _strdup(val); + return settings->RdpKeyContent != NULL; + + case FreeRDP_WindowTitle: + free(settings->WindowTitle); + settings->WindowTitle = _strdup(val); + return settings->WindowTitle != NULL; + + case FreeRDP_WmClass: + free(settings->WmClass); + settings->WmClass = _strdup(val); + return settings->WmClass != NULL; + + case FreeRDP_ComputerName: + free(settings->ComputerName); + settings->ComputerName = _strdup(val); + return settings->ComputerName != NULL; + + case FreeRDP_ConnectionFile: + free(settings->ConnectionFile); + settings->ConnectionFile = _strdup(val); + return settings->ConnectionFile != NULL; + + case FreeRDP_AssistanceFile: + free(settings->AssistanceFile); + settings->AssistanceFile = _strdup(val); + return settings->AssistanceFile != NULL; + + case FreeRDP_HomePath: + free(settings->HomePath); + settings->HomePath = _strdup(val); + return settings->HomePath != NULL; + + case FreeRDP_ConfigPath: + free(settings->ConfigPath); + settings->ConfigPath = _strdup(val); + return settings->ConfigPath != NULL; + + case FreeRDP_CurrentPath: + free(settings->CurrentPath); + settings->CurrentPath = _strdup(val); + return settings->CurrentPath != NULL; + + case FreeRDP_DumpRemoteFxFile: + free(settings->DumpRemoteFxFile); + settings->DumpRemoteFxFile = _strdup(val); + return settings->DumpRemoteFxFile != NULL; + + case FreeRDP_PlayRemoteFxFile: + free(settings->PlayRemoteFxFile); + settings->PlayRemoteFxFile = _strdup(val); + return settings->PlayRemoteFxFile != NULL; + + case FreeRDP_GatewayHostname: + free(settings->GatewayHostname); + settings->GatewayHostname = _strdup(val); + return settings->GatewayHostname != NULL; + + case FreeRDP_GatewayUsername: + free(settings->GatewayUsername); + settings->GatewayUsername = _strdup(val); + return settings->GatewayUsername != NULL; + + case FreeRDP_GatewayPassword: + free(settings->GatewayPassword); + settings->GatewayPassword = _strdup(val); + return settings->GatewayPassword != NULL; + + case FreeRDP_GatewayDomain: + free(settings->GatewayDomain); + settings->GatewayDomain = _strdup(val); + return settings->GatewayDomain != NULL; + + case FreeRDP_GatewayAccessToken: + free(settings->GatewayAccessToken); + settings->GatewayAccessToken = _strdup(val); + return settings->GatewayAccessToken != NULL; + + case FreeRDP_GatewayAcceptedCert: + free(settings->GatewayAcceptedCert); + settings->GatewayAcceptedCert = _strdup(val); + return settings->GatewayAcceptedCert != NULL; + + case FreeRDP_ProxyHostname: + free(settings->ProxyHostname); + settings->ProxyHostname = _strdup(val); + return settings->ProxyHostname != NULL; + + case FreeRDP_ProxyUsername: + free(settings->ProxyUsername); + settings->ProxyUsername = _strdup(val); + return settings->ProxyUsername != NULL; + + case FreeRDP_ProxyPassword: + free(settings->ProxyPassword); + settings->ProxyPassword = _strdup(val); + return settings->ProxyPassword != NULL; + + case FreeRDP_RemoteApplicationName: + free(settings->RemoteApplicationName); + settings->RemoteApplicationName = _strdup(val); + return settings->RemoteApplicationName != NULL; + + case FreeRDP_RemoteApplicationIcon: + free(settings->RemoteApplicationIcon); + settings->RemoteApplicationIcon = _strdup(val); + return settings->RemoteApplicationIcon != NULL; + + case FreeRDP_RemoteApplicationProgram: + free(settings->RemoteApplicationProgram); + settings->RemoteApplicationProgram = _strdup(val); + return settings->RemoteApplicationProgram != NULL; + + case FreeRDP_RemoteApplicationFile: + free(settings->RemoteApplicationFile); + settings->RemoteApplicationFile = _strdup(val); + return settings->RemoteApplicationFile != NULL; + + case FreeRDP_RemoteApplicationGuid: + free(settings->RemoteApplicationGuid); + settings->RemoteApplicationGuid = _strdup(val); + return settings->RemoteApplicationGuid != NULL; + + case FreeRDP_RemoteApplicationCmdLine: + free(settings->RemoteApplicationCmdLine); + settings->RemoteApplicationCmdLine = _strdup(val); + return settings->RemoteApplicationCmdLine != NULL; + + case FreeRDP_ImeFileName: + free(settings->ImeFileName); + settings->ImeFileName = _strdup(val); + return settings->ImeFileName != NULL; + + case FreeRDP_DrivesToRedirect: + free(settings->DrivesToRedirect); + settings->DrivesToRedirect = _strdup(val); + return settings->DrivesToRedirect != NULL; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } + + return TRUE; +} + +const void* freerdp_get_param_pointer(rdpSettings* settings, size_t id) +{ + if (!settings) + return FALSE; + + switch (id) + { + case FreeRDP_instance: + return settings->instance; + + case FreeRDP_RdpServerCertificate: + return settings->RdpServerCertificate; + + case FreeRDP_ServerAutoReconnectCookie: + return settings->ServerAutoReconnectCookie; + + case FreeRDP_BitmapCacheV2CellInfo: + return settings->BitmapCacheV2CellInfo; + + case FreeRDP_RdpServerRsaKey: + return settings->RdpServerRsaKey; + + case FreeRDP_MonitorIds: + return settings->MonitorIds; + + case FreeRDP_TargetNetPorts: + return settings->TargetNetPorts; + + case FreeRDP_MonitorDefArray: + return settings->MonitorDefArray; + + case FreeRDP_ChannelDefArray: + return settings->ChannelDefArray; + + case FreeRDP_ClientAutoReconnectCookie: + return settings->ClientAutoReconnectCookie; + + case FreeRDP_TargetNetAddresses: + return settings->TargetNetAddresses; + + case FreeRDP_StaticChannelArray: + return settings->StaticChannelArray; + + case FreeRDP_DynamicChannelArray: + return settings->DynamicChannelArray; + + case FreeRDP_DeviceArray: + return settings->DeviceArray; + + case FreeRDP_GlyphCache: + return settings->GlyphCache; + + case FreeRDP_FragCache: + return settings->FragCache; + + case FreeRDP_ClientTimeZone: + return settings->ClientTimeZone; + + case FreeRDP_ServerRandom: + return settings->ServerRandom; + + case FreeRDP_ServerCertificate: + return settings->ServerCertificate; + + case FreeRDP_ClientRandom: + return settings->ClientRandom; + + case FreeRDP_LoadBalanceInfo: + return settings->LoadBalanceInfo; + + case FreeRDP_RedirectionPassword: + return settings->RedirectionPassword; + + case FreeRDP_RedirectionTsvUrl: + return settings->RedirectionTsvUrl; + + case FreeRDP_Password51: + return settings->Password51; + + case FreeRDP_ReceivedCapabilities: + return settings->ReceivedCapabilities; + + case FreeRDP_OrderSupport: + return settings->OrderSupport; + + default: + WLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id); + return FALSE; + } +} + + diff --git a/libfreerdp/core/test/TestSettings.c b/libfreerdp/core/test/TestSettings.c index ebfc15fee..0cef4bd02 100644 --- a/libfreerdp/core/test/TestSettings.c +++ b/libfreerdp/core/test/TestSettings.c @@ -1,7 +1,10 @@ #include +#include "settings_property_lists.h" int TestSettings(int argc, char* argv[]) { + int rc = -1; + size_t x; rdpSettings* settings = NULL; rdpSettings* cloned; WINPR_UNUSED(argc); @@ -25,8 +28,120 @@ int TestSettings(int argc, char* argv[]) return -1; } +#if defined(have_bool_list_indices) + + for (x = 0; x < ARRAYSIZE(bool_list_indices); x++) + { + const size_t key = bool_list_indices[x]; + const BOOL val = freerdp_get_param_bool(settings, key); + + if (!freerdp_set_param_bool(settings, key, val)) + goto fail; + } + +#endif +#if defined(have_int16_list_indices) + + for (x = 0; x < ARRAYSIZE(int16_list_indices); x++) + { + const size_t key = int16_list_indices[x]; + const INT16 val = freerdp_get_param_int16(settings, key); + + if (!freerdp_set_param_int16(settings, key, val)) + goto fail; + } + +#endif +#if defined(have_uint16_list_indices) + + for (x = 0; x < ARRAYSIZE(uint16_list_indices); x++) + { + const size_t key = uint16_list_indices[x]; + const UINT16 val = freerdp_get_param_uint16(settings, key); + + if (!freerdp_set_param_uint16(settings, key, val)) + goto fail; + } + +#endif +#if defined(have_uint32_list_indices) + + for (x = 0; x < ARRAYSIZE(uint32_list_indices); x++) + { + const size_t key = uint32_list_indices[x]; + const UINT32 val = freerdp_get_param_uint32(settings, key); + + if (!freerdp_set_param_uint32(settings, key, val)) + goto fail; + } + +#endif +#if defined(have_int32_list_indices) + + for (x = 0; x < ARRAYSIZE(int32_list_indices); x++) + { + const size_t key = int32_list_indices[x]; + const INT32 val = freerdp_get_param_int32(settings, key); + + if (!freerdp_set_param_int32(settings, key, val)) + goto fail; + } + +#endif +#if defined(have_uint64_list_indices) + + for (x = 0; x < ARRAYSIZE(uint64_list_indices); x++) + { + const size_t key = uint64_list_indices[x]; + const UINT64 val = freerdp_get_param_uint64(settings, key); + + if (!freerdp_set_param_uint64(settings, key, val)) + goto fail; + } + +#endif +#if defined(have_int64_list_indices) + + for (x = 0; x < ARRAYSIZE(int64_list_indices); x++) + { + const size_t key = int64_list_indices[x]; + const INT64 val = freerdp_get_param_int64(settings, key); + + if (!freerdp_set_param_int64(settings, key, val)) + goto fail; + } + +#endif +#if defined(have_string_list_indices) + + for (x = 0; x < ARRAYSIZE(string_list_indices); x++) + { + const size_t key = string_list_indices[x]; + const char* val = "test-string"; + const char* res; + + if (!freerdp_set_param_string(settings, key, val)) + goto fail; + + res = freerdp_get_param_string(settings, key); + if (strncmp(val, res, sizeof(val)) != 0) + goto fail; + } + +#endif +#if defined(have_pointer_list_indices) + + for (x = 0; x < ARRAYSIZE(pointer_list_indices); x++) + { + const size_t key = pointer_list_indices[x]; + const void* val = freerdp_get_param_pointer(settings, key); + } + +#endif + rc = 0; +fail: freerdp_settings_free(cloned); freerdp_settings_free(settings); - return 0; + return rc; } diff --git a/libfreerdp/core/test/settings_property_lists.h b/libfreerdp/core/test/settings_property_lists.h new file mode 100644 index 000000000..648b6061f --- /dev/null +++ b/libfreerdp/core/test/settings_property_lists.h @@ -0,0 +1,397 @@ +#ifndef TEST_SETTINGS_PROPERTY_LISTS +#define TEST_SETTINGS_PROPERTY_LISTS + +#define have_bool_list_indices +static const size_t bool_list_indices[] = +{ + FreeRDP_ServerMode, + FreeRDP_WaitForOutputBufferFlush, + FreeRDP_NetworkAutoDetect, + FreeRDP_SupportAsymetricKeys, + FreeRDP_SupportErrorInfoPdu, + FreeRDP_SupportStatusInfoPdu, + FreeRDP_SupportMonitorLayoutPdu, + FreeRDP_SupportGraphicsPipeline, + FreeRDP_SupportDynamicTimeZone, + FreeRDP_SupportHeartbeatPdu, + FreeRDP_UseRdpSecurityLayer, + FreeRDP_ConsoleSession, + FreeRDP_SpanMonitors, + FreeRDP_UseMultimon, + FreeRDP_ForceMultimon, + FreeRDP_ListMonitors, + FreeRDP_HasMonitorAttributes, + FreeRDP_SupportMultitransport, + FreeRDP_AutoLogonEnabled, + FreeRDP_CompressionEnabled, + FreeRDP_DisableCtrlAltDel, + FreeRDP_EnableWindowsKey, + FreeRDP_MaximizeShell, + FreeRDP_LogonNotify, + FreeRDP_LogonErrors, + FreeRDP_MouseAttached, + FreeRDP_MouseHasWheel, + FreeRDP_RemoteConsoleAudio, + FreeRDP_AudioPlayback, + FreeRDP_AudioCapture, + FreeRDP_VideoDisable, + FreeRDP_PasswordIsSmartcardPin, + FreeRDP_UsingSavedCredentials, + FreeRDP_ForceEncryptedCsPdu, + FreeRDP_HiDefRemoteApp, + FreeRDP_IPv6Enabled, + FreeRDP_AutoReconnectionEnabled, + FreeRDP_PrintReconnectCookie, + FreeRDP_DynamicDaylightTimeDisabled, + FreeRDP_AllowFontSmoothing, + FreeRDP_DisableWallpaper, + FreeRDP_DisableFullWindowDrag, + FreeRDP_DisableMenuAnims, + FreeRDP_DisableThemes, + FreeRDP_DisableCursorShadow, + FreeRDP_DisableCursorBlinking, + FreeRDP_AllowDesktopComposition, + FreeRDP_RemoteAssistanceMode, + FreeRDP_EncomspVirtualChannel, + FreeRDP_RemdeskVirtualChannel, + FreeRDP_LyncRdpMode, + FreeRDP_TlsSecurity, + FreeRDP_NlaSecurity, + FreeRDP_RdpSecurity, + FreeRDP_ExtSecurity, + FreeRDP_Authentication, + FreeRDP_NegotiateSecurityLayer, + FreeRDP_RestrictedAdminModeRequired, + FreeRDP_DisableCredentialsDelegation, + FreeRDP_VmConnectMode, + FreeRDP_FIPSMode, + FreeRDP_MstscCookieMode, + FreeRDP_SendPreconnectionPdu, + FreeRDP_SmartcardLogon, + FreeRDP_IgnoreCertificate, + FreeRDP_ExternalCertificateManagement, + FreeRDP_AutoAcceptCertificate, + FreeRDP_AutoDenyCertificate, + FreeRDP_Workarea, + FreeRDP_Fullscreen, + FreeRDP_GrabKeyboard, + FreeRDP_Decorations, + FreeRDP_MouseMotion, + FreeRDP_AsyncInput, + FreeRDP_AsyncUpdate, + FreeRDP_AsyncChannels, + FreeRDP_ToggleFullscreen, + FreeRDP_EmbeddedWindow, + FreeRDP_SmartSizing, + FreeRDP_PercentScreenUseWidth, + FreeRDP_PercentScreenUseHeight, + FreeRDP_DynamicResolutionUpdate, + FreeRDP_SoftwareGdi, + FreeRDP_LocalConnection, + FreeRDP_AuthenticationOnly, + FreeRDP_CredentialsFromStdin, + FreeRDP_UnmapButtons, + FreeRDP_OldLicenseBehaviour, + FreeRDP_DumpRemoteFx, + FreeRDP_PlayRemoteFx, + FreeRDP_GatewayUseSameCredentials, + FreeRDP_GatewayEnabled, + FreeRDP_GatewayBypassLocal, + FreeRDP_GatewayRpcTransport, + FreeRDP_GatewayHttpTransport, + FreeRDP_GatewayUdpTransport, + FreeRDP_RemoteApplicationMode, + FreeRDP_DisableRemoteAppCapsCheck, + FreeRDP_RemoteAppLanguageBarSupported, + FreeRDP_RefreshRect, + FreeRDP_SuppressOutput, + FreeRDP_FastPathOutput, + FreeRDP_SaltedChecksum, + FreeRDP_LongCredentialsSupported, + FreeRDP_NoBitmapCompressionHeader, + FreeRDP_BitmapCompressionDisabled, + FreeRDP_DesktopResize, + FreeRDP_DrawAllowDynamicColorFidelity, + FreeRDP_DrawAllowColorSubsampling, + FreeRDP_DrawAllowSkipAlpha, + FreeRDP_BitmapCacheV3Enabled, + FreeRDP_AltSecFrameMarkerSupport, + FreeRDP_AllowUnanouncedOrdersFromServer, + FreeRDP_BitmapCacheEnabled, + FreeRDP_AllowCacheWaitingList, + FreeRDP_BitmapCachePersistEnabled, + FreeRDP_ColorPointerFlag, + FreeRDP_UnicodeInput, + FreeRDP_FastPathInput, + FreeRDP_MultiTouchInput, + FreeRDP_MultiTouchGestures, + FreeRDP_HasHorizontalWheel, + FreeRDP_HasExtendedMouseEvent, + FreeRDP_SoundBeepsEnabled, + FreeRDP_SurfaceCommandsEnabled, + FreeRDP_FrameMarkerCommandEnabled, + FreeRDP_SurfaceFrameMarkerEnabled, + FreeRDP_RemoteFxOnly, + FreeRDP_RemoteFxCodec, + FreeRDP_RemoteFxImageCodec, + FreeRDP_NSCodec, + FreeRDP_NSCodecAllowSubsampling, + FreeRDP_NSCodecAllowDynamicColorFidelity, + FreeRDP_JpegCodec, + FreeRDP_GfxThinClient, + FreeRDP_GfxSmallCache, + FreeRDP_GfxProgressive, + FreeRDP_GfxProgressiveV2, + FreeRDP_GfxH264, + FreeRDP_GfxAVC444, + FreeRDP_GfxSendQoeAck, + FreeRDP_GfxAVC444v2, + FreeRDP_DrawNineGridEnabled, + FreeRDP_DrawGdiPlusEnabled, + FreeRDP_DrawGdiPlusCacheEnabled, + FreeRDP_DeviceRedirection, + FreeRDP_RedirectDrives, + FreeRDP_RedirectHomeDrive, + FreeRDP_RedirectSmartCards, + FreeRDP_RedirectPrinters, + FreeRDP_RedirectSerialPorts, + FreeRDP_RedirectParallelPorts, + FreeRDP_PreferIPv6OverIPv4, + FreeRDP_RedirectClipboard, + FreeRDP_SupportDynamicChannels, + FreeRDP_SupportEchoChannel, + FreeRDP_SupportDisplayControl, + FreeRDP_SupportGeometryTracking, + FreeRDP_SupportSSHAgentChannel, + FreeRDP_SupportVideoOptimized, +}; + +#define have_uint16_list_indices +static const size_t uint16_list_indices[] = +{ + FreeRDP_DesktopOrientation, + FreeRDP_ProxyPort, +}; + +#define have_uint32_list_indices +static const size_t uint32_list_indices[] = +{ + FreeRDP_ShareId, + FreeRDP_PduSource, + FreeRDP_ServerPort, + FreeRDP_MaxTimeInCheckLoop, + FreeRDP_AcceptedCertLength, + FreeRDP_RdpVersion, + FreeRDP_DesktopWidth, + FreeRDP_DesktopHeight, + FreeRDP_ColorDepth, + FreeRDP_ConnectionType, + FreeRDP_ClientBuild, + FreeRDP_EarlyCapabilityFlags, + FreeRDP_DesktopPhysicalWidth, + FreeRDP_DesktopPhysicalHeight, + FreeRDP_DesktopScaleFactor, + FreeRDP_DeviceScaleFactor, + FreeRDP_EncryptionMethods, + FreeRDP_ExtEncryptionMethods, + FreeRDP_EncryptionLevel, + FreeRDP_ServerRandomLength, + FreeRDP_ServerCertificateLength, + FreeRDP_ClientRandomLength, + FreeRDP_ChannelCount, + FreeRDP_ChannelDefArraySize, + FreeRDP_ClusterInfoFlags, + FreeRDP_RedirectedSessionId, + FreeRDP_MonitorCount, + FreeRDP_MonitorDefArraySize, + FreeRDP_DesktopPosX, + FreeRDP_DesktopPosY, + FreeRDP_NumMonitorIds, + FreeRDP_MonitorLocalShiftX, + FreeRDP_MonitorLocalShiftY, + FreeRDP_MultitransportFlags, + FreeRDP_CompressionLevel, + FreeRDP_AutoReconnectMaxRetries, + FreeRDP_PerformanceFlags, + FreeRDP_RequestedProtocols, + FreeRDP_SelectedProtocol, + FreeRDP_NegotiationFlags, + FreeRDP_AuthenticationLevel, + FreeRDP_TlsSecLevel, + FreeRDP_CookieMaxLength, + FreeRDP_PreconnectionId, + FreeRDP_RedirectionFlags, + FreeRDP_LoadBalanceInfoLength, + FreeRDP_RedirectionPasswordLength, + FreeRDP_RedirectionTsvUrlLength, + FreeRDP_TargetNetAddressCount, + FreeRDP_RedirectionAcceptedCertLength, + FreeRDP_RedirectionPreferType, + FreeRDP_Password51Length, + FreeRDP_PercentScreen, + FreeRDP_SmartSizingWidth, + FreeRDP_SmartSizingHeight, + FreeRDP_GatewayUsageMethod, + FreeRDP_GatewayPort, + FreeRDP_GatewayCredentialsSource, + FreeRDP_GatewayAcceptedCertLength, + FreeRDP_ProxyType, + FreeRDP_RemoteApplicationExpandCmdLine, + FreeRDP_RemoteApplicationExpandWorkingDir, + FreeRDP_RemoteAppNumIconCaches, + FreeRDP_RemoteAppNumIconCacheEntries, + FreeRDP_RemoteWndSupportLevel, + FreeRDP_ReceivedCapabilitiesSize, + FreeRDP_OsMajorType, + FreeRDP_OsMinorType, + FreeRDP_BitmapCacheVersion, + FreeRDP_BitmapCacheV2NumCells, + FreeRDP_PointerCacheSize, + FreeRDP_KeyboardLayout, + FreeRDP_KeyboardType, + FreeRDP_KeyboardSubType, + FreeRDP_KeyboardFunctionKey, + FreeRDP_KeyboardHook, + FreeRDP_BrushSupportLevel, + FreeRDP_GlyphSupportLevel, + FreeRDP_OffscreenSupportLevel, + FreeRDP_OffscreenCacheSize, + FreeRDP_OffscreenCacheEntries, + FreeRDP_VirtualChannelCompressionFlags, + FreeRDP_VirtualChannelChunkSize, + FreeRDP_MultifragMaxRequestSize, + FreeRDP_LargePointerFlag, + FreeRDP_CompDeskSupportLevel, + FreeRDP_RemoteFxCodecId, + FreeRDP_RemoteFxCodecMode, + FreeRDP_RemoteFxCaptureFlags, + FreeRDP_NSCodecId, + FreeRDP_FrameAcknowledge, + FreeRDP_NSCodecColorLossLevel, + FreeRDP_JpegCodecId, + FreeRDP_JpegQuality, + FreeRDP_BitmapCacheV3CodecId, + FreeRDP_DrawNineGridCacheSize, + FreeRDP_DrawNineGridCacheEntries, + FreeRDP_DeviceCount, + FreeRDP_DeviceArraySize, + FreeRDP_StaticChannelCount, + FreeRDP_StaticChannelArraySize, + FreeRDP_DynamicChannelCount, + FreeRDP_DynamicChannelArraySize, +}; + +#define have_int32_list_indices +static const size_t int32_list_indices[] = +{ + FreeRDP_XPan, + FreeRDP_YPan, +}; + +#define have_uint64_list_indices +static const size_t uint64_list_indices[] = +{ + FreeRDP_ParentWindowId, +}; + +#define have_string_list_indices +static const size_t string_list_indices[] = +{ + FreeRDP_ServerHostname, + FreeRDP_Username, + FreeRDP_Password, + FreeRDP_Domain, + FreeRDP_PasswordHash, + FreeRDP_AcceptedCert, + FreeRDP_ClientHostname, + FreeRDP_ClientProductId, + FreeRDP_AlternateShell, + FreeRDP_ShellWorkingDirectory, + FreeRDP_ClientAddress, + FreeRDP_ClientDir, + FreeRDP_DynamicDSTTimeZoneKeyName, + FreeRDP_RemoteAssistanceSessionId, + FreeRDP_RemoteAssistancePassStub, + FreeRDP_RemoteAssistancePassword, + FreeRDP_RemoteAssistanceRCTicket, + FreeRDP_AuthenticationServiceClass, + FreeRDP_AllowedTlsCiphers, + FreeRDP_NtlmSamFile, + FreeRDP_PreconnectionBlob, + FreeRDP_TargetNetAddress, + FreeRDP_RedirectionUsername, + FreeRDP_RedirectionDomain, + FreeRDP_RedirectionTargetFQDN, + FreeRDP_RedirectionTargetNetBiosName, + FreeRDP_RedirectionAcceptedCert, + FreeRDP_KerberosKdc, + FreeRDP_KerberosRealm, + FreeRDP_CertificateName, + FreeRDP_CertificateFile, + FreeRDP_PrivateKeyFile, + FreeRDP_RdpKeyFile, + FreeRDP_CertificateContent, + FreeRDP_PrivateKeyContent, + FreeRDP_RdpKeyContent, + FreeRDP_WindowTitle, + FreeRDP_WmClass, + FreeRDP_ComputerName, + FreeRDP_ConnectionFile, + FreeRDP_AssistanceFile, + FreeRDP_HomePath, + FreeRDP_ConfigPath, + FreeRDP_CurrentPath, + FreeRDP_DumpRemoteFxFile, + FreeRDP_PlayRemoteFxFile, + FreeRDP_GatewayHostname, + FreeRDP_GatewayUsername, + FreeRDP_GatewayPassword, + FreeRDP_GatewayDomain, + FreeRDP_GatewayAccessToken, + FreeRDP_GatewayAcceptedCert, + FreeRDP_ProxyHostname, + FreeRDP_ProxyUsername, + FreeRDP_ProxyPassword, + FreeRDP_RemoteApplicationName, + FreeRDP_RemoteApplicationIcon, + FreeRDP_RemoteApplicationProgram, + FreeRDP_RemoteApplicationFile, + FreeRDP_RemoteApplicationGuid, + FreeRDP_RemoteApplicationCmdLine, + FreeRDP_ImeFileName, + FreeRDP_DrivesToRedirect, +}; + +#define have_pointer_list_indices +static const size_t pointer_list_indices[] = +{ + FreeRDP_StaticChannelArray, + FreeRDP_DynamicChannelArray, + FreeRDP_instance, + FreeRDP_RdpServerCertificate, + FreeRDP_MonitorIds, + FreeRDP_TargetNetPorts, + FreeRDP_DeviceArray, + FreeRDP_ClientAutoReconnectCookie, + FreeRDP_TargetNetAddresses, + FreeRDP_MonitorDefArray, + FreeRDP_BitmapCacheV2CellInfo, + FreeRDP_ServerAutoReconnectCookie, + FreeRDP_ServerRandom, + FreeRDP_ServerCertificate, + FreeRDP_ClientRandom, + FreeRDP_LoadBalanceInfo, + FreeRDP_RedirectionPassword, + FreeRDP_RedirectionTsvUrl, + FreeRDP_Password51, + FreeRDP_ReceivedCapabilities, + FreeRDP_OrderSupport, + FreeRDP_RdpServerRsaKey, + FreeRDP_GlyphCache, + FreeRDP_FragCache, + FreeRDP_ClientTimeZone, + FreeRDP_ChannelDefArray, +}; + +#endif /* TEST_SETTINGS_PROPERTY_LISTS */ + diff --git a/scripts/update-settings-tests b/scripts/update-settings-tests new file mode 100755 index 000000000..7be477c2c --- /dev/null +++ b/scripts/update-settings-tests @@ -0,0 +1,187 @@ +#!/usr/bin/env python +import os +import sys + +def get_values(entry_dict, entry_type): + values = [] + if '*' == entry_type: + for key in entry_dict.keys(): + if entry_type in key: + values += entry_dict[key] + entry_dict.pop(key, None) + elif entry_type in entry_dict: + values = entry_dict[entry_type] + entry_dict.pop(entry_type, None) + return values + +def write_entry(f, entry_dict, entry_type, entry_name): + values = get_values(entry_dict, entry_type) + if not values: + return + + f.write('#define have_' + entry_name.lower() + '_list_indices\n') + f.write('static const size_t ' + entry_name.lower() + '_list_indices[] =\n') + f.write('{\n') + + for val in values: + f.write('\tFreeRDP_' + val + ',\n') + + f.write('};\n\n') + +def write_getter_case(f, val): + f.write('\t\tcase FreeRDP_' + val + ':\n') + f.write('\t\t\treturn settings->' + val + ';\n\n') + +def write_getter(f, entry_dict, entry_type, entry_name): + isString = 'string' in entry_name + isPointer = 'pointer' in entry_name + values = get_values(entry_dict, entry_type) + + if isPointer: + f.write('const void*') + elif isString: + f.write('const ' + entry_type) + else: + f.write(entry_type) + f.write(' freerdp_get_param_' + entry_name.lower() + '(rdpSettings* settings, size_t id)\n') + f.write('{\n') + f.write('\tif (!settings)\n') + f.write('\t\treturn FALSE;\n\n') + f.write('\tswitch (id)\n') + f.write('\t{\n') + if values: + for val in values: + write_getter_case(f, val) + f.write('\t\tdefault:\n') + f.write('\t\t\tWLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id);\n') + f.write('\t\t\treturn FALSE;\n') + f.write('\t}\n') + f.write('}\n\n') + +def write_setter_case(f, val, isString, isPointer): + f.write('\t\tcase FreeRDP_' + val + ':\n') + if not isString: + f.write('\t\t\tsettings->' + val + ' = val;\n') + f.write('\t\t\tbreak;\n\n') + else: + f.write('\t\t\tfree(settings->' + val + ');\n') + f.write('\t\t\tsettings->' + val + ' = _strdup(val);\n') + f.write('\t\t\treturn settings->' + val + ' != NULL;\n\n') + +def write_setter(f, entry_dict, entry_type, entry_name): + isString = 'string' in entry_name + isPointer = 'pointer' in entry_name + values = get_values(entry_dict, entry_type) + + f.write('BOOL freerdp_set_param_' + entry_name.lower() + '(rdpSettings* settings, size_t id, ') + if isString or isPointer: + f.write('const ') + if not isPointer: + f.write(entry_type + ' val)\n') + else: + f.write('void* val)\n') + f.write('{\n') + f.write('\tif (!settings)\n') + f.write('\t\treturn FALSE;\n\n') + f.write('\tswitch (id)\n') + f.write('\t{\n') + if values: + for val in values: + write_setter_case(f, val, isString, isPointer) + f.write('\t\tdefault:\n') + f.write('\t\t\tWLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id);\n') + f.write('\t\t\treturn FALSE;\n') + f.write('\t}\n') + f.write('\treturn TRUE;\n') + f.write('}\n\n') + +name = os.path.dirname(os.path.realpath(__file__)) +begin = "WARNING: this data structure is carefully padded for ABI stability!" +end = "WARNING: End of ABI stable zone!" + +print('begin parsing settings header') +try: + type_list = dict() + + with open(name + "/../include/freerdp/settings.h", "rb") as f: + lines = f.readlines() + started = False + for line in lines: + if not started: + if begin in line: + started = True + continue + + if end in line: + break + + sline = line.strip() + if not sline: + continue + if sline.startswith('/'): + continue + if sline.startswith('*'): + continue + if 'padding' in sline: + continue + + if sline.startswith('ALIGN64'): + sline = sline[7:].strip() + + sline = sline[:sline.find(';')] + pair = sline.split() + if pair[0] in type_list: + type_list[pair[0]].append(pair[1]) + else: + type_list[pair[0]] = [pair[1]] + + with open(name + '/../libfreerdp/common/settings_getters.c', 'w+') as f: + f.write('/* Generated by ' + '' + ' */\n\n') + f.write('#include \n') + f.write('#include \n\n') + f.write('#define TAG FREERDP_TAG("common.settings")\n\n') + + getter_list = dict(type_list) + setter_list = dict(type_list) + write_getter(f, getter_list, 'BOOL', 'bool') + write_setter(f, setter_list, 'BOOL', 'bool') + write_getter(f, getter_list, 'UINT16', 'uint16') + write_setter(f, setter_list, 'UINT16', 'uint16') + write_getter(f, getter_list, 'INT16', 'int16') + write_setter(f, setter_list, 'INT16', 'int16') + write_getter(f, getter_list, 'UINT32', 'uint32') + write_setter(f, setter_list, 'UINT32', 'uint32') + write_getter(f, getter_list, 'INT32', 'int32') + write_setter(f, setter_list, 'INT32', 'int32') + write_getter(f, getter_list, 'UINT64', 'uint64') + write_setter(f, setter_list, 'UINT64', 'uint64') + write_getter(f, getter_list, 'INT64', 'int64') + write_setter(f, setter_list, 'INT64', 'int64') + write_getter(f, getter_list, 'char*', 'string') + write_setter(f, setter_list, 'char*', 'string') + write_getter(f, getter_list, '*', 'pointer') +# write_setter(f, setter_list, '*', 'pointer') + + f.write('\n') + + with open(name + '/../libfreerdp/core/test/settings_property_lists.h', 'w+') as f: + f.write('#ifndef TEST_SETTINGS_PROPERTY_LISTS\n') + f.write('#define TEST_SETTINGS_PROPERTY_LISTS\n\n') + + write_entry(f, type_list, 'BOOL', 'bool') + write_entry(f, type_list, 'UINT16', 'uint16') + write_entry(f, type_list, 'INT16', 'int16') + write_entry(f, type_list, 'UINT32', 'uint32') + write_entry(f, type_list, 'INT32', 'int32') + write_entry(f, type_list, 'UINT64', 'uint64') + write_entry(f, type_list, 'INT64', 'int64') + write_entry(f, type_list, 'char*', 'string') + write_entry(f, type_list, '*', 'pointer') + + f.write('#endif /* TEST_SETTINGS_PROPERTY_LISTS */\n\n') + + print('remaining:\n' + str(type_list)) +except IOError as e: + print('failed to parse settings header ' + str(e)) + sys.exit(-1) +print('ended parsing settings header') From 6ac91924d5edfc627fc90e67ddc8e378b267a4ad Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Mon, 6 May 2019 09:51:42 +0200 Subject: [PATCH 2/4] Fixed use of settings getter/setter --- client/common/file.c | 260 +++++++++++++++++++++++---------- include/freerdp/settings.h | 2 +- libfreerdp/common/assistance.c | 23 +-- libfreerdp/common/settings.c | 32 ++-- 4 files changed, 214 insertions(+), 103 deletions(-) mode change 100755 => 100644 client/common/file.c diff --git a/client/common/file.c b/client/common/file.c old mode 100755 new mode 100644 index 16f56724d..a0f104991 --- a/client/common/file.c +++ b/client/common/file.c @@ -740,7 +740,7 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* { if (~((size_t) file->Domain)) { - if (freerdp_set_param_string(settings, FreeRDP_Domain, file->Domain) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_Domain, file->Domain)) return FALSE; } @@ -752,12 +752,12 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (!freerdp_parse_username(file->Username, &user, &domain)) return FALSE; - if (freerdp_set_param_string(settings, FreeRDP_Username, user) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_Username, user)) return FALSE; if (domain) { - if (freerdp_set_param_string(settings, FreeRDP_Domain, domain) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_Domain, domain)) return FALSE; } @@ -767,7 +767,7 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (~((size_t)file->Password)) { - if (freerdp_set_param_string(settings, FreeRDP_Password, file->Password) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_Password, file->Password)) return FALSE; } @@ -779,49 +779,76 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (!freerdp_parse_hostname(file->FullAddress, &host, &port)) return FALSE; - if (freerdp_set_param_string(settings, FreeRDP_ServerHostname, host) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_ServerHostname, host)) return FALSE; - if (port > 0) - freerdp_set_param_uint32(settings, FreeRDP_ServerPort, (UINT32) port); - free(host); + + if (port > 0) + { + if (!freerdp_set_param_uint32(settings, FreeRDP_ServerPort, (UINT32) port)) + return FALSE; + } } if (~file->ServerPort) - freerdp_set_param_uint32(settings, FreeRDP_ServerPort, file->ServerPort); + { + if (!freerdp_set_param_uint32(settings, FreeRDP_ServerPort, file->ServerPort)) + return FALSE; + } if (~file->DesktopWidth) - freerdp_set_param_uint32(settings, FreeRDP_DesktopWidth, file->DesktopWidth); + { + if (!freerdp_set_param_uint32(settings, FreeRDP_DesktopWidth, file->DesktopWidth)) + return FALSE; + } if (~file->DesktopHeight) - freerdp_set_param_uint32(settings, FreeRDP_DesktopHeight, file->DesktopHeight); + { + if (!freerdp_set_param_uint32(settings, FreeRDP_DesktopHeight, file->DesktopHeight)) + return FALSE; + } if (~file->SessionBpp) - freerdp_set_param_uint32(settings, FreeRDP_ColorDepth, file->SessionBpp); + { + if (!freerdp_set_param_uint32(settings, FreeRDP_ColorDepth, file->SessionBpp)) + return FALSE; + } if (~file->ConnectToConsole) - freerdp_set_param_bool(settings, FreeRDP_ConsoleSession, file->ConnectToConsole); + { + if (!freerdp_set_param_bool(settings, FreeRDP_ConsoleSession, file->ConnectToConsole)) + return FALSE; + } if (~file->AdministrativeSession) - freerdp_set_param_bool(settings, FreeRDP_ConsoleSession, file->AdministrativeSession); + { + if (!freerdp_set_param_bool(settings, FreeRDP_ConsoleSession, file->AdministrativeSession)) + return FALSE; + } if (~file->NegotiateSecurityLayer) - freerdp_set_param_bool(settings, FreeRDP_NegotiateSecurityLayer, file->NegotiateSecurityLayer); + { + if (!freerdp_set_param_bool(settings, FreeRDP_NegotiateSecurityLayer, file->NegotiateSecurityLayer)) + return FALSE; + } if (~file->EnableCredSSPSupport) - freerdp_set_param_bool(settings, FreeRDP_NlaSecurity, file->EnableCredSSPSupport); + { + if (!freerdp_set_param_bool(settings, FreeRDP_NlaSecurity, file->EnableCredSSPSupport)) + return FALSE; + } if (~((size_t) file->AlternateShell)) { - if (freerdp_set_param_string(settings, FreeRDP_AlternateShell, file->AlternateShell) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_AlternateShell, file->AlternateShell)) return FALSE; } if (~((size_t) file->ShellWorkingDirectory)) { - if (freerdp_set_param_string(settings, FreeRDP_ShellWorkingDirectory, - file->ShellWorkingDirectory) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_ShellWorkingDirectory, + file->ShellWorkingDirectory)) return FALSE; } @@ -839,14 +866,16 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* * 1: The remote session will appear in a window. * 2: The remote session will appear full screen. */ - freerdp_set_param_bool(settings, FreeRDP_Fullscreen, - (file->ScreenModeId == 2) ? TRUE : FALSE); + if (!freerdp_set_param_bool(settings, FreeRDP_Fullscreen, + (file->ScreenModeId == 2) ? TRUE : FALSE)) + return FALSE; } if (~(file->SmartSizing)) { - freerdp_set_param_bool(settings, FreeRDP_SmartSizing, - (file->SmartSizing == 1) ? TRUE : FALSE); + if (!freerdp_set_param_bool(settings, FreeRDP_SmartSizing, + (file->SmartSizing == 1) ? TRUE : FALSE)) + return FALSE; } if (~((size_t) file->LoadBalanceInfo)) @@ -879,27 +908,36 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* } if (~file->ConnectionType) - freerdp_set_param_uint32(settings, FreeRDP_ConnectionType, file->ConnectionType); + { + if (!freerdp_set_param_uint32(settings, FreeRDP_ConnectionType, file->ConnectionType)) + return FALSE; + } if (~file->AudioMode) { if (file->AudioMode == AUDIO_MODE_REDIRECT) { - freerdp_set_param_bool(settings, FreeRDP_AudioPlayback, TRUE); + if (!freerdp_set_param_bool(settings, FreeRDP_AudioPlayback, TRUE)) + return FALSE; } else if (file->AudioMode == AUDIO_MODE_PLAY_ON_SERVER) { - freerdp_set_param_bool(settings, FreeRDP_RemoteConsoleAudio, TRUE); + if (!freerdp_set_param_bool(settings, FreeRDP_RemoteConsoleAudio, TRUE)) + return FALSE; } else if (file->AudioMode == AUDIO_MODE_NONE) { - freerdp_set_param_bool(settings, FreeRDP_AudioPlayback, FALSE); - freerdp_set_param_bool(settings, FreeRDP_RemoteConsoleAudio, FALSE); + if (!freerdp_set_param_bool(settings, FreeRDP_AudioPlayback, FALSE) || + !freerdp_set_param_bool(settings, FreeRDP_RemoteConsoleAudio, FALSE)) + return FALSE; } } if (~file->Compression) - freerdp_set_param_bool(settings, FreeRDP_CompressionEnabled, file->Compression); + { + if (!freerdp_set_param_bool(settings, FreeRDP_CompressionEnabled, file->Compression)) + return FALSE; + } if (~((size_t) file->GatewayHostname)) { @@ -909,48 +947,61 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (!freerdp_parse_hostname(file->GatewayHostname, &host, &port)) return FALSE; - if (freerdp_set_param_string(settings, FreeRDP_GatewayHostname, host) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_GatewayHostname, host)) return FALSE; - if (port > 0) - freerdp_set_param_uint32(settings, FreeRDP_GatewayPort, (UINT32) port); - free(host); + + if (port > 0) + { + if (!freerdp_set_param_uint32(settings, FreeRDP_GatewayPort, (UINT32) port)) + return FALSE; + } } if (~((size_t) file->GatewayAccessToken)) { - if (freerdp_set_param_string(settings, FreeRDP_GatewayAccessToken, file->GatewayAccessToken) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_GatewayAccessToken, file->GatewayAccessToken)) return FALSE; } if (~file->GatewayUsageMethod) - freerdp_set_gateway_usage_method(settings, file->GatewayUsageMethod); + { + if (!freerdp_set_gateway_usage_method(settings, file->GatewayUsageMethod)) + return FALSE; + } if (~file->PromptCredentialOnce) - freerdp_set_param_bool(settings, FreeRDP_GatewayUseSameCredentials, file->PromptCredentialOnce); + { + if (!freerdp_set_param_bool(settings, FreeRDP_GatewayUseSameCredentials, + file->PromptCredentialOnce)) + return FALSE; + } if (~file->RemoteApplicationMode) - freerdp_set_param_bool(settings, FreeRDP_RemoteApplicationMode, file->RemoteApplicationMode); + { + if (!freerdp_set_param_bool(settings, FreeRDP_RemoteApplicationMode, file->RemoteApplicationMode)) + return FALSE; + } if (~((size_t) file->RemoteApplicationProgram)) { - if (freerdp_set_param_string(settings, FreeRDP_RemoteApplicationProgram, - file->RemoteApplicationProgram) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_RemoteApplicationProgram, + file->RemoteApplicationProgram)) return FALSE; } if (~((size_t) file->RemoteApplicationName)) { - if (freerdp_set_param_string(settings, FreeRDP_RemoteApplicationName, - file->RemoteApplicationName) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_RemoteApplicationName, + file->RemoteApplicationName)) return FALSE; } if (~((size_t) file->RemoteApplicationIcon)) { - if (freerdp_set_param_string(settings, FreeRDP_RemoteApplicationIcon, - file->RemoteApplicationIcon) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_RemoteApplicationIcon, + file->RemoteApplicationIcon)) return FALSE; } @@ -963,70 +1014,124 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (~((size_t) file->RemoteApplicationCmdLine)) { - if (freerdp_set_param_string(settings, FreeRDP_RemoteApplicationCmdLine, - file->RemoteApplicationCmdLine) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_RemoteApplicationCmdLine, + file->RemoteApplicationCmdLine)) return FALSE; } if (~file->SpanMonitors) - freerdp_set_param_bool(settings, FreeRDP_SpanMonitors, file->SpanMonitors); + { + if (!freerdp_set_param_bool(settings, FreeRDP_SpanMonitors, file->SpanMonitors)) + return FALSE; + } if (~file->UseMultiMon) - freerdp_set_param_bool(settings, FreeRDP_UseMultimon, file->UseMultiMon); + { + if (!freerdp_set_param_bool(settings, FreeRDP_UseMultimon, file->UseMultiMon)) + return FALSE; + } if (~file->AllowFontSmoothing) - freerdp_set_param_bool(settings, FreeRDP_AllowFontSmoothing, file->AllowFontSmoothing); + { + if (!freerdp_set_param_bool(settings, FreeRDP_AllowFontSmoothing, file->AllowFontSmoothing)) + return FALSE; + } if (~file->DisableWallpaper) - freerdp_set_param_bool(settings, FreeRDP_DisableWallpaper, file->DisableWallpaper); + { + if (!freerdp_set_param_bool(settings, FreeRDP_DisableWallpaper, file->DisableWallpaper)) + return FALSE; + } if (~file->DisableFullWindowDrag) - freerdp_set_param_bool(settings, FreeRDP_DisableFullWindowDrag, file->DisableFullWindowDrag); + { + if (!freerdp_set_param_bool(settings, FreeRDP_DisableFullWindowDrag, file->DisableFullWindowDrag)) + return FALSE; + } if (~file->DisableMenuAnims) - freerdp_set_param_bool(settings, FreeRDP_DisableMenuAnims, file->DisableMenuAnims); + { + if (!freerdp_set_param_bool(settings, FreeRDP_DisableMenuAnims, file->DisableMenuAnims)) + return FALSE; + } if (~file->DisableThemes) - freerdp_set_param_bool(settings, FreeRDP_DisableThemes, file->DisableThemes); + { + if (!freerdp_set_param_bool(settings, FreeRDP_DisableThemes, file->DisableThemes)) + return FALSE; + } if (~file->AllowDesktopComposition) - freerdp_set_param_bool(settings, FreeRDP_AllowDesktopComposition, file->AllowDesktopComposition); + { + if (!freerdp_set_param_bool(settings, FreeRDP_AllowDesktopComposition, + file->AllowDesktopComposition)) + return FALSE; + } if (~file->BitmapCachePersistEnable) - freerdp_set_param_bool(settings, FreeRDP_BitmapCachePersistEnabled, file->BitmapCachePersistEnable); + { + if (!freerdp_set_param_bool(settings, FreeRDP_BitmapCachePersistEnabled, + file->BitmapCachePersistEnable)) + return FALSE; + } if (~file->DisableRemoteAppCapsCheck) - freerdp_set_param_bool(settings, FreeRDP_DisableRemoteAppCapsCheck, - file->DisableRemoteAppCapsCheck); + { + if (!freerdp_set_param_bool(settings, FreeRDP_DisableRemoteAppCapsCheck, + file->DisableRemoteAppCapsCheck)) + return FALSE; + } if (~file->AutoReconnectionEnabled) - freerdp_set_param_bool(settings, FreeRDP_AutoReconnectionEnabled, file->AutoReconnectionEnabled); + { + if (!freerdp_set_param_bool(settings, FreeRDP_AutoReconnectionEnabled, + file->AutoReconnectionEnabled)) + return FALSE; + } if (~file->AutoReconnectMaxRetries) - freerdp_set_param_uint32(settings, FreeRDP_AutoReconnectMaxRetries, file->AutoReconnectMaxRetries); + { + if (!freerdp_set_param_uint32(settings, FreeRDP_AutoReconnectMaxRetries, + file->AutoReconnectMaxRetries)) + return FALSE; + } if (~file->RedirectSmartCards) - freerdp_set_param_bool(settings, FreeRDP_RedirectSmartCards, file->RedirectSmartCards); + { + if (!freerdp_set_param_bool(settings, FreeRDP_RedirectSmartCards, file->RedirectSmartCards)) + return FALSE; + } if (~file->RedirectClipboard) - freerdp_set_param_bool(settings, FreeRDP_RedirectClipboard, file->RedirectClipboard); + { + if (!freerdp_set_param_bool(settings, FreeRDP_RedirectClipboard, file->RedirectClipboard)) + return FALSE; + } if (~file->RedirectPrinters) - freerdp_set_param_bool(settings, FreeRDP_RedirectPrinters, file->RedirectPrinters); + { + if (!freerdp_set_param_bool(settings, FreeRDP_RedirectPrinters, file->RedirectPrinters)) + return FALSE; + } if (~file->RedirectDrives) - freerdp_set_param_bool(settings, FreeRDP_RedirectDrives, file->RedirectDrives); + { + if (!freerdp_set_param_bool(settings, FreeRDP_RedirectDrives, file->RedirectDrives)) + return FALSE; + } if (~file->RedirectPosDevices) { - freerdp_set_param_bool(settings, FreeRDP_RedirectSerialPorts, file->RedirectComPorts); - freerdp_set_param_bool(settings, FreeRDP_RedirectParallelPorts, file->RedirectComPorts); + if (!freerdp_set_param_bool(settings, FreeRDP_RedirectSerialPorts, file->RedirectComPorts) || + !freerdp_set_param_bool(settings, FreeRDP_RedirectParallelPorts, file->RedirectComPorts)) + return FALSE; } if (~file->RedirectComPorts) { - freerdp_set_param_bool(settings, FreeRDP_RedirectSerialPorts, file->RedirectComPorts); - freerdp_set_param_bool(settings, FreeRDP_RedirectParallelPorts, file->RedirectComPorts); + if (!freerdp_set_param_bool(settings, FreeRDP_RedirectSerialPorts, file->RedirectComPorts) || + !freerdp_set_param_bool(settings, FreeRDP_RedirectParallelPorts, file->RedirectComPorts)) + return FALSE; } if (~file->RedirectDirectX) @@ -1072,19 +1177,23 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* * comma-separated list of drive letters to redirect. */ const BOOL empty = !file->DrivesToRedirect || (strlen(file->DrivesToRedirect) == 0); - freerdp_set_param_bool(settings, FreeRDP_RedirectDrives, !empty); + + if (!freerdp_set_param_bool(settings, FreeRDP_RedirectDrives, !empty)) + return FALSE; } if (~file->KeyboardHook) { - freerdp_set_param_uint32(settings, FreeRDP_KeyboardHook, file->KeyboardHook); + if (!freerdp_set_param_uint32(settings, FreeRDP_KeyboardHook, file->KeyboardHook)) + return FALSE; } if (~((size_t) file->PreconnectionBlob)) { - freerdp_set_param_string(settings, FreeRDP_PreconnectionBlob, file->PreconnectionBlob); - freerdp_set_param_bool(settings, FreeRDP_SendPreconnectionPdu, TRUE); - freerdp_set_param_bool(settings, FreeRDP_VmConnectMode, TRUE); + if (!freerdp_set_param_string(settings, FreeRDP_PreconnectionBlob, file->PreconnectionBlob) || + !freerdp_set_param_bool(settings, FreeRDP_SendPreconnectionPdu, TRUE) || + !freerdp_set_param_bool(settings, FreeRDP_VmConnectMode, TRUE)) + return FALSE; } if (file->argc > 1) @@ -1107,7 +1216,6 @@ static rdpFileLine* freerdp_client_rdp_file_find_line_index(rdpFile* file, int i line = &(file->lines[index]); return line; } - static rdpFileLine* freerdp_client_rdp_file_find_line_by_name(rdpFile* file, const char* name) { int index; @@ -1130,7 +1238,6 @@ static rdpFileLine* freerdp_client_rdp_file_find_line_by_name(rdpFile* file, con return (bFound) ? line : NULL; } - /** * Set a string option to a rdpFile * @param file rdpFile @@ -1138,7 +1245,6 @@ static rdpFileLine* freerdp_client_rdp_file_find_line_by_name(rdpFile* file, con * @param value value of the option * @return 0 on success */ - int freerdp_client_rdp_file_set_string_option(rdpFile* file, const char* name, const char* value) { int index; @@ -1187,7 +1293,6 @@ out_fail: free(text); return -1; } - const char* freerdp_client_rdp_file_get_string_option(rdpFile* file, const char* name) { rdpFileLine* line; @@ -1201,7 +1306,6 @@ const char* freerdp_client_rdp_file_get_string_option(rdpFile* file, const char* return line->sValue; } - int freerdp_client_rdp_file_set_integer_option(rdpFile* file, const char* name, int value) { int index; @@ -1248,7 +1352,6 @@ int freerdp_client_rdp_file_set_integer_option(rdpFile* file, const char* name, return 0; } - int freerdp_client_rdp_file_get_integer_option(rdpFile* file, const char* name) { rdpFileLine* line; @@ -1262,13 +1365,11 @@ int freerdp_client_rdp_file_get_integer_option(rdpFile* file, const char* name) return line->iValue; } - static void freerdp_client_file_string_check_free(LPSTR str) { if (~((size_t) str)) free(str); } - rdpFile* freerdp_client_rdp_file_new() { rdpFile* file; @@ -1309,7 +1410,6 @@ rdpFile* freerdp_client_rdp_file_new() return file; } - void freerdp_client_rdp_file_free(rdpFile* file) { int i; diff --git a/include/freerdp/settings.h b/include/freerdp/settings.h index 93a38784a..8e42f07ed 100644 --- a/include/freerdp/settings.h +++ b/include/freerdp/settings.h @@ -1572,7 +1572,7 @@ FREERDP_API void freerdp_target_net_addresses_free(rdpSettings* settings); FREERDP_API void freerdp_performance_flags_make(rdpSettings* settings); FREERDP_API void freerdp_performance_flags_split(rdpSettings* settings); -FREERDP_API void freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32 GatewayUsageMethod); +FREERDP_API BOOL freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32 GatewayUsageMethod); FREERDP_API void freerdp_update_gateway_usage_method(rdpSettings* settings, UINT32 GatewayEnabled, UINT32 GatewayBypassLocal); diff --git a/libfreerdp/common/assistance.c b/libfreerdp/common/assistance.c index 3432a0547..a7f0d4ab8 100644 --- a/libfreerdp/common/assistance.c +++ b/libfreerdp/common/assistance.c @@ -1160,44 +1160,47 @@ BOOL freerdp_assistance_populate_settings_from_assistance_file(rdpAssistanceFile if (!file->RASessionId || !file->MachineAddresses) return FALSE; - if (freerdp_set_param_string(settings, FreeRDP_RemoteAssistanceSessionId, file->RASessionId) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_RemoteAssistanceSessionId, file->RASessionId)) return FALSE; if (file->RCTicket) { - if (freerdp_set_param_string(settings, FreeRDP_RemoteAssistanceRCTicket, file->RCTicket) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_RemoteAssistanceRCTicket, file->RCTicket)) return FALSE; } else { - if (freerdp_set_param_string(settings, FreeRDP_RemoteAssistanceRCTicket, - file->ConnectionString2) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_RemoteAssistanceRCTicket, + file->ConnectionString2)) return FALSE; } if (file->PassStub) { - if (freerdp_set_param_string(settings, FreeRDP_RemoteAssistancePassStub, file->PassStub) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_RemoteAssistancePassStub, file->PassStub)) return FALSE; } - if (freerdp_set_param_string(settings, FreeRDP_ServerHostname, file->MachineAddresses[0]) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_ServerHostname, file->MachineAddresses[0])) return FALSE; - if (freerdp_set_param_string(settings, FreeRDP_AssistanceFile, file->filename) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_AssistanceFile, file->filename)) return FALSE; - if (freerdp_set_param_string(settings, FreeRDP_RemoteAssistancePassword, file->password) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_RemoteAssistancePassword, file->password)) return FALSE; if (file->Username) { - if (freerdp_set_param_string(settings, FreeRDP_Username, file->Username) != 0) + if (!freerdp_set_param_string(settings, FreeRDP_Username, file->Username)) return FALSE; } settings->RemoteAssistanceMode = TRUE; - freerdp_set_param_uint32(settings, FreeRDP_ServerPort, file->MachinePorts[0]); + + if (!freerdp_set_param_uint32(settings, FreeRDP_ServerPort, file->MachinePorts[0])) + return FALSE; + freerdp_target_net_addresses_free(settings); settings->TargetNetAddressCount = file->MachineCount; diff --git a/libfreerdp/common/settings.c b/libfreerdp/common/settings.c index a2d6aba47..8e571bb77 100644 --- a/libfreerdp/common/settings.c +++ b/libfreerdp/common/settings.c @@ -695,24 +695,28 @@ void freerdp_performance_flags_split(rdpSettings* settings) settings->DisableThemes = (settings->PerformanceFlags & PERF_DISABLE_THEMING) ? TRUE : FALSE; } -void freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32 GatewayUsageMethod) +BOOL freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32 GatewayUsageMethod) { - freerdp_set_param_uint32(settings, FreeRDP_GatewayUsageMethod, GatewayUsageMethod); + if (!freerdp_set_param_uint32(settings, FreeRDP_GatewayUsageMethod, GatewayUsageMethod)) + return FALSE; if (GatewayUsageMethod == TSC_PROXY_MODE_NONE_DIRECT) { - freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, FALSE); - freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE); + if (!freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, FALSE) || + !freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) + return FALSE; } else if (GatewayUsageMethod == TSC_PROXY_MODE_DIRECT) { - freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, TRUE); - freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE); + if (!freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, TRUE) || + !freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) + return FALSE; } else if (GatewayUsageMethod == TSC_PROXY_MODE_DETECT) { - freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, TRUE); - freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, TRUE); + if (!freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, TRUE) || + !freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, TRUE)) + return FALSE; } else if (GatewayUsageMethod == TSC_PROXY_MODE_DEFAULT) { @@ -721,14 +725,18 @@ void freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32 GatewayUsage * which means the client attempts to use gateway group policy settings * http://technet.microsoft.com/en-us/library/cc770601.aspx */ - freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, FALSE); - freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE); + if (!freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, FALSE) || + !freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) + return FALSE; } else if (GatewayUsageMethod == TSC_PROXY_MODE_NONE_DETECT) { - freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, FALSE); - freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE); + if (!freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, FALSE) || + !freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) + return FALSE; } + + return TRUE; } void freerdp_update_gateway_usage_method(rdpSettings* settings, UINT32 GatewayEnabled, From 93bf37568636a1543f43b3f509e80a788236e2af Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 8 May 2019 14:35:25 +0200 Subject: [PATCH 3/4] Refactored settings getter/setter to stay compatible. --- client/common/cmdline.c | 18 +-- client/common/file.c | 153 +++++++++--------- include/freerdp/settings.h | 53 ++++-- libfreerdp/common/assistance.c | 22 +-- libfreerdp/common/settings.c | 72 +++++++-- libfreerdp/common/settings_getters.c | 48 ++++-- libfreerdp/core/peer.c | 62 +++---- libfreerdp/core/test/TestSettings.c | 37 ++--- .../core/test/settings_property_lists.h | 2 + scripts/update-settings-tests | 4 +- server/shadow/shadow_server.c | 2 +- 11 files changed, 280 insertions(+), 193 deletions(-) diff --git a/client/common/cmdline.c b/client/common/cmdline.c index 93a426cff..0bca7a5c3 100644 --- a/client/common/cmdline.c +++ b/client/common/cmdline.c @@ -251,7 +251,8 @@ BOOL freerdp_client_print_command_line_help_ex(int argc, char** argv, printf(" %s connection.rdp /p:Pwd123! /f\n", name); printf(" %s /u:CONTOSO\\JohnDoe /p:Pwd123! /v:rdp.contoso.com\n", name); printf(" %s /u:JohnDoe /p:Pwd123! /w:1366 /h:768 /v:192.168.1.100:4489\n", name); - printf(" %s /u:JohnDoe /p:Pwd123! /vmconnect:C824F53E-95D2-46C6-9A18-23A5BB403532 /v:192.168.1.100\n", name); + printf(" %s /u:JohnDoe /p:Pwd123! /vmconnect:C824F53E-95D2-46C6-9A18-23A5BB403532 /v:192.168.1.100\n", + name); printf("\n"); printf("Clipboard Redirection: +clipboard\n"); printf("\n"); @@ -1165,7 +1166,6 @@ static int freerdp_detect_command_line_pre_filter(void* context, int index, int argc, LPSTR* argv) { size_t length; - WINPR_UNUSED(context); if (index == 1) @@ -1421,7 +1421,7 @@ static void activate_smartcard_logon_rdp(rdpSettings* settings) { settings->SmartcardLogon = TRUE; /* TODO: why not? settings->UseRdpSecurityLayer = TRUE; */ - freerdp_set_param_bool(settings, FreeRDP_PasswordIsSmartcardPin, TRUE); + freerdp_settings_set_bool(settings, FreeRDP_PasswordIsSmartcardPin, TRUE); } /** @@ -1547,7 +1547,6 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, CommandLineSwitchCase(arg, "v") { assert(arg->Value); - free(settings->ServerHostname); settings->ServerHostname = NULL; p = strchr(arg->Value, '['); @@ -1617,7 +1616,6 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, size_t count = 0; char* cur = arg->Value; assert(arg->Value); - settings->RedirectionPreferType = 0; do @@ -1689,7 +1687,6 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, CommandLineSwitchCase(arg, "size") { assert(arg->Value); - p = strchr(arg->Value, 'x'); if (p) @@ -1968,7 +1965,6 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, if (arg->Flags & COMMAND_LINE_VALUE_PRESENT) { assert(arg->Value); - p = strchr(arg->Value, ':'); if (p) @@ -2013,7 +2009,6 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, { char* atPtr; assert(arg->Value); - /* value is [scheme://][user:password@]hostname:port */ p = strstr(arg->Value, "://"); @@ -2555,7 +2550,6 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, if (arg->Flags & COMMAND_LINE_VALUE_PRESENT) { assert(arg->Value); - promptForPassword = (strncmp(arg->Value, "force", 6) == 0); if (!promptForPassword) @@ -2593,7 +2587,6 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, CommandLineSwitchCase(arg, "tls-ciphers") { assert(arg->Value); - free(settings->AllowedTlsCiphers); if (strcmp(arg->Value, "netmon") == 0) @@ -2754,7 +2747,6 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, CommandLineSwitchCase(arg, "codec-cache") { settings->BitmapCacheV3Enabled = TRUE; - assert(arg->Value); if (strcmp(arg->Value, "rfx") == 0) @@ -2848,9 +2840,7 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, { BYTE* base64 = NULL; int length; - assert(arg->Value); - crypto_base64_decode((const char*)(arg->Value), (int) strlen(arg->Value), &base64, &length); @@ -3080,7 +3070,7 @@ static BOOL freerdp_client_load_static_channel_addin(rdpChannels* channels, { PVIRTUALCHANNELENTRY entry = NULL; PVIRTUALCHANNELENTRYEX entryEx = NULL; - entryEx = (PVIRTUALCHANNELENTRYEX) (void*)freerdp_load_channel_addin_entry(name, NULL, NULL, + entryEx = (PVIRTUALCHANNELENTRYEX)(void*)freerdp_load_channel_addin_entry(name, NULL, NULL, FREERDP_ADDIN_CHANNEL_STATIC | FREERDP_ADDIN_CHANNEL_ENTRYEX); if (!entryEx) diff --git a/client/common/file.c b/client/common/file.c index a0f104991..fff513298 100644 --- a/client/common/file.c +++ b/client/common/file.c @@ -641,7 +641,6 @@ BOOL freerdp_client_write_rdp_file(const rdpFile* file, const char* name, BOOL u int status = 0; WCHAR* unicodestr = NULL; size = freerdp_client_write_rdp_file_buffer(file, NULL, 0); - buffer = (char*) calloc((size + 1), sizeof(char)); if (freerdp_client_write_rdp_file_buffer(file, buffer, size + 1) != size) @@ -658,6 +657,7 @@ BOOL freerdp_client_write_rdp_file(const rdpFile* file, const char* name, BOOL u if (unicode) { int length; + if (size > INT_MAX) { free(buffer); @@ -740,7 +740,7 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* { if (~((size_t) file->Domain)) { - if (!freerdp_set_param_string(settings, FreeRDP_Domain, file->Domain)) + if (!freerdp_settings_set_string(settings, FreeRDP_Domain, file->Domain)) return FALSE; } @@ -752,12 +752,12 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (!freerdp_parse_username(file->Username, &user, &domain)) return FALSE; - if (!freerdp_set_param_string(settings, FreeRDP_Username, user)) + if (!freerdp_settings_set_string(settings, FreeRDP_Username, user)) return FALSE; if (domain) { - if (!freerdp_set_param_string(settings, FreeRDP_Domain, domain)) + if (!freerdp_settings_set_string(settings, FreeRDP_Domain, domain)) return FALSE; } @@ -767,7 +767,7 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (~((size_t)file->Password)) { - if (!freerdp_set_param_string(settings, FreeRDP_Password, file->Password)) + if (!freerdp_settings_set_string(settings, FreeRDP_Password, file->Password)) return FALSE; } @@ -779,76 +779,77 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (!freerdp_parse_hostname(file->FullAddress, &host, &port)) return FALSE; - if (!freerdp_set_param_string(settings, FreeRDP_ServerHostname, host)) + if (!freerdp_settings_set_string(settings, FreeRDP_ServerHostname, host)) return FALSE; free(host); if (port > 0) { - if (!freerdp_set_param_uint32(settings, FreeRDP_ServerPort, (UINT32) port)) + if (!freerdp_settings_set_uint32(settings, FreeRDP_ServerPort, (UINT32) port)) return FALSE; } } if (~file->ServerPort) { - if (!freerdp_set_param_uint32(settings, FreeRDP_ServerPort, file->ServerPort)) + if (!freerdp_settings_set_uint32(settings, FreeRDP_ServerPort, file->ServerPort)) return FALSE; } if (~file->DesktopWidth) { - if (!freerdp_set_param_uint32(settings, FreeRDP_DesktopWidth, file->DesktopWidth)) + if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, file->DesktopWidth)) return FALSE; } if (~file->DesktopHeight) { - if (!freerdp_set_param_uint32(settings, FreeRDP_DesktopHeight, file->DesktopHeight)) + if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight, file->DesktopHeight)) return FALSE; } if (~file->SessionBpp) { - if (!freerdp_set_param_uint32(settings, FreeRDP_ColorDepth, file->SessionBpp)) + if (!freerdp_settings_set_uint32(settings, FreeRDP_ColorDepth, file->SessionBpp)) return FALSE; } if (~file->ConnectToConsole) { - if (!freerdp_set_param_bool(settings, FreeRDP_ConsoleSession, file->ConnectToConsole)) + if (!freerdp_settings_set_bool(settings, FreeRDP_ConsoleSession, file->ConnectToConsole)) return FALSE; } if (~file->AdministrativeSession) { - if (!freerdp_set_param_bool(settings, FreeRDP_ConsoleSession, file->AdministrativeSession)) + if (!freerdp_settings_set_bool(settings, FreeRDP_ConsoleSession, file->AdministrativeSession)) return FALSE; } if (~file->NegotiateSecurityLayer) { - if (!freerdp_set_param_bool(settings, FreeRDP_NegotiateSecurityLayer, file->NegotiateSecurityLayer)) + if (!freerdp_settings_set_bool(settings, FreeRDP_NegotiateSecurityLayer, + file->NegotiateSecurityLayer)) return FALSE; } if (~file->EnableCredSSPSupport) { - if (!freerdp_set_param_bool(settings, FreeRDP_NlaSecurity, file->EnableCredSSPSupport)) + if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, file->EnableCredSSPSupport)) return FALSE; } if (~((size_t) file->AlternateShell)) { - if (!freerdp_set_param_string(settings, FreeRDP_AlternateShell, file->AlternateShell)) + if (!freerdp_settings_set_string(settings, FreeRDP_AlternateShell, file->AlternateShell)) return FALSE; } if (~((size_t) file->ShellWorkingDirectory)) { - if (!freerdp_set_param_string(settings, FreeRDP_ShellWorkingDirectory, - file->ShellWorkingDirectory)) + if (!freerdp_settings_set_string(settings, FreeRDP_ShellWorkingDirectory, + file->ShellWorkingDirectory)) return FALSE; } @@ -866,15 +867,15 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* * 1: The remote session will appear in a window. * 2: The remote session will appear full screen. */ - if (!freerdp_set_param_bool(settings, FreeRDP_Fullscreen, - (file->ScreenModeId == 2) ? TRUE : FALSE)) + if (!freerdp_settings_set_bool(settings, FreeRDP_Fullscreen, + (file->ScreenModeId == 2) ? TRUE : FALSE)) return FALSE; } if (~(file->SmartSizing)) { - if (!freerdp_set_param_bool(settings, FreeRDP_SmartSizing, - (file->SmartSizing == 1) ? TRUE : FALSE)) + if (!freerdp_settings_set_bool(settings, FreeRDP_SmartSizing, + (file->SmartSizing == 1) ? TRUE : FALSE)) return FALSE; } @@ -909,7 +910,7 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (~file->ConnectionType) { - if (!freerdp_set_param_uint32(settings, FreeRDP_ConnectionType, file->ConnectionType)) + if (!freerdp_settings_set_uint32(settings, FreeRDP_ConnectionType, file->ConnectionType)) return FALSE; } @@ -917,25 +918,25 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* { if (file->AudioMode == AUDIO_MODE_REDIRECT) { - if (!freerdp_set_param_bool(settings, FreeRDP_AudioPlayback, TRUE)) + if (!freerdp_settings_set_bool(settings, FreeRDP_AudioPlayback, TRUE)) return FALSE; } else if (file->AudioMode == AUDIO_MODE_PLAY_ON_SERVER) { - if (!freerdp_set_param_bool(settings, FreeRDP_RemoteConsoleAudio, TRUE)) + if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteConsoleAudio, TRUE)) return FALSE; } else if (file->AudioMode == AUDIO_MODE_NONE) { - if (!freerdp_set_param_bool(settings, FreeRDP_AudioPlayback, FALSE) || - !freerdp_set_param_bool(settings, FreeRDP_RemoteConsoleAudio, FALSE)) + if (!freerdp_settings_set_bool(settings, FreeRDP_AudioPlayback, FALSE) || + !freerdp_settings_set_bool(settings, FreeRDP_RemoteConsoleAudio, FALSE)) return FALSE; } } if (~file->Compression) { - if (!freerdp_set_param_bool(settings, FreeRDP_CompressionEnabled, file->Compression)) + if (!freerdp_settings_set_bool(settings, FreeRDP_CompressionEnabled, file->Compression)) return FALSE; } @@ -947,21 +948,21 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (!freerdp_parse_hostname(file->GatewayHostname, &host, &port)) return FALSE; - if (!freerdp_set_param_string(settings, FreeRDP_GatewayHostname, host)) + if (!freerdp_settings_set_string(settings, FreeRDP_GatewayHostname, host)) return FALSE; free(host); if (port > 0) { - if (!freerdp_set_param_uint32(settings, FreeRDP_GatewayPort, (UINT32) port)) + if (!freerdp_settings_set_uint32(settings, FreeRDP_GatewayPort, (UINT32) port)) return FALSE; } } if (~((size_t) file->GatewayAccessToken)) { - if (!freerdp_set_param_string(settings, FreeRDP_GatewayAccessToken, file->GatewayAccessToken)) + if (!freerdp_settings_set_string(settings, FreeRDP_GatewayAccessToken, file->GatewayAccessToken)) return FALSE; } @@ -973,164 +974,166 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (~file->PromptCredentialOnce) { - if (!freerdp_set_param_bool(settings, FreeRDP_GatewayUseSameCredentials, - file->PromptCredentialOnce)) + if (!freerdp_settings_set_bool(settings, FreeRDP_GatewayUseSameCredentials, + file->PromptCredentialOnce)) return FALSE; } if (~file->RemoteApplicationMode) { - if (!freerdp_set_param_bool(settings, FreeRDP_RemoteApplicationMode, file->RemoteApplicationMode)) + if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteApplicationMode, + file->RemoteApplicationMode)) return FALSE; } if (~((size_t) file->RemoteApplicationProgram)) { - if (!freerdp_set_param_string(settings, FreeRDP_RemoteApplicationProgram, - file->RemoteApplicationProgram)) + if (!freerdp_settings_set_string(settings, FreeRDP_RemoteApplicationProgram, + file->RemoteApplicationProgram)) return FALSE; } if (~((size_t) file->RemoteApplicationName)) { - if (!freerdp_set_param_string(settings, FreeRDP_RemoteApplicationName, - file->RemoteApplicationName)) + if (!freerdp_settings_set_string(settings, FreeRDP_RemoteApplicationName, + file->RemoteApplicationName)) return FALSE; } if (~((size_t) file->RemoteApplicationIcon)) { - if (!freerdp_set_param_string(settings, FreeRDP_RemoteApplicationIcon, - file->RemoteApplicationIcon)) + if (!freerdp_settings_set_string(settings, FreeRDP_RemoteApplicationIcon, + file->RemoteApplicationIcon)) return FALSE; } if (~((size_t) file->RemoteApplicationFile)) { - if (freerdp_set_param_string(settings, FreeRDP_RemoteApplicationGuid, - file->RemoteApplicationGuid) != 0) + if (freerdp_settings_set_string(settings, FreeRDP_RemoteApplicationGuid, + file->RemoteApplicationGuid) != 0) return FALSE; } if (~((size_t) file->RemoteApplicationCmdLine)) { - if (!freerdp_set_param_string(settings, FreeRDP_RemoteApplicationCmdLine, - file->RemoteApplicationCmdLine)) + if (!freerdp_settings_set_string(settings, FreeRDP_RemoteApplicationCmdLine, + file->RemoteApplicationCmdLine)) return FALSE; } if (~file->SpanMonitors) { - if (!freerdp_set_param_bool(settings, FreeRDP_SpanMonitors, file->SpanMonitors)) + if (!freerdp_settings_set_bool(settings, FreeRDP_SpanMonitors, file->SpanMonitors)) return FALSE; } if (~file->UseMultiMon) { - if (!freerdp_set_param_bool(settings, FreeRDP_UseMultimon, file->UseMultiMon)) + if (!freerdp_settings_set_bool(settings, FreeRDP_UseMultimon, file->UseMultiMon)) return FALSE; } if (~file->AllowFontSmoothing) { - if (!freerdp_set_param_bool(settings, FreeRDP_AllowFontSmoothing, file->AllowFontSmoothing)) + if (!freerdp_settings_set_bool(settings, FreeRDP_AllowFontSmoothing, file->AllowFontSmoothing)) return FALSE; } if (~file->DisableWallpaper) { - if (!freerdp_set_param_bool(settings, FreeRDP_DisableWallpaper, file->DisableWallpaper)) + if (!freerdp_settings_set_bool(settings, FreeRDP_DisableWallpaper, file->DisableWallpaper)) return FALSE; } if (~file->DisableFullWindowDrag) { - if (!freerdp_set_param_bool(settings, FreeRDP_DisableFullWindowDrag, file->DisableFullWindowDrag)) + if (!freerdp_settings_set_bool(settings, FreeRDP_DisableFullWindowDrag, + file->DisableFullWindowDrag)) return FALSE; } if (~file->DisableMenuAnims) { - if (!freerdp_set_param_bool(settings, FreeRDP_DisableMenuAnims, file->DisableMenuAnims)) + if (!freerdp_settings_set_bool(settings, FreeRDP_DisableMenuAnims, file->DisableMenuAnims)) return FALSE; } if (~file->DisableThemes) { - if (!freerdp_set_param_bool(settings, FreeRDP_DisableThemes, file->DisableThemes)) + if (!freerdp_settings_set_bool(settings, FreeRDP_DisableThemes, file->DisableThemes)) return FALSE; } if (~file->AllowDesktopComposition) { - if (!freerdp_set_param_bool(settings, FreeRDP_AllowDesktopComposition, - file->AllowDesktopComposition)) + if (!freerdp_settings_set_bool(settings, FreeRDP_AllowDesktopComposition, + file->AllowDesktopComposition)) return FALSE; } if (~file->BitmapCachePersistEnable) { - if (!freerdp_set_param_bool(settings, FreeRDP_BitmapCachePersistEnabled, - file->BitmapCachePersistEnable)) + if (!freerdp_settings_set_bool(settings, FreeRDP_BitmapCachePersistEnabled, + file->BitmapCachePersistEnable)) return FALSE; } if (~file->DisableRemoteAppCapsCheck) { - if (!freerdp_set_param_bool(settings, FreeRDP_DisableRemoteAppCapsCheck, - file->DisableRemoteAppCapsCheck)) + if (!freerdp_settings_set_bool(settings, FreeRDP_DisableRemoteAppCapsCheck, + file->DisableRemoteAppCapsCheck)) return FALSE; } if (~file->AutoReconnectionEnabled) { - if (!freerdp_set_param_bool(settings, FreeRDP_AutoReconnectionEnabled, - file->AutoReconnectionEnabled)) + if (!freerdp_settings_set_bool(settings, FreeRDP_AutoReconnectionEnabled, + file->AutoReconnectionEnabled)) return FALSE; } if (~file->AutoReconnectMaxRetries) { - if (!freerdp_set_param_uint32(settings, FreeRDP_AutoReconnectMaxRetries, - file->AutoReconnectMaxRetries)) + if (!freerdp_settings_set_uint32(settings, FreeRDP_AutoReconnectMaxRetries, + file->AutoReconnectMaxRetries)) return FALSE; } if (~file->RedirectSmartCards) { - if (!freerdp_set_param_bool(settings, FreeRDP_RedirectSmartCards, file->RedirectSmartCards)) + if (!freerdp_settings_set_bool(settings, FreeRDP_RedirectSmartCards, file->RedirectSmartCards)) return FALSE; } if (~file->RedirectClipboard) { - if (!freerdp_set_param_bool(settings, FreeRDP_RedirectClipboard, file->RedirectClipboard)) + if (!freerdp_settings_set_bool(settings, FreeRDP_RedirectClipboard, file->RedirectClipboard)) return FALSE; } if (~file->RedirectPrinters) { - if (!freerdp_set_param_bool(settings, FreeRDP_RedirectPrinters, file->RedirectPrinters)) + if (!freerdp_settings_set_bool(settings, FreeRDP_RedirectPrinters, file->RedirectPrinters)) return FALSE; } if (~file->RedirectDrives) { - if (!freerdp_set_param_bool(settings, FreeRDP_RedirectDrives, file->RedirectDrives)) + if (!freerdp_settings_set_bool(settings, FreeRDP_RedirectDrives, file->RedirectDrives)) return FALSE; } if (~file->RedirectPosDevices) { - if (!freerdp_set_param_bool(settings, FreeRDP_RedirectSerialPorts, file->RedirectComPorts) || - !freerdp_set_param_bool(settings, FreeRDP_RedirectParallelPorts, file->RedirectComPorts)) + if (!freerdp_settings_set_bool(settings, FreeRDP_RedirectSerialPorts, file->RedirectComPorts) || + !freerdp_settings_set_bool(settings, FreeRDP_RedirectParallelPorts, file->RedirectComPorts)) return FALSE; } if (~file->RedirectComPorts) { - if (!freerdp_set_param_bool(settings, FreeRDP_RedirectSerialPorts, file->RedirectComPorts) || - !freerdp_set_param_bool(settings, FreeRDP_RedirectParallelPorts, file->RedirectComPorts)) + if (!freerdp_settings_set_bool(settings, FreeRDP_RedirectSerialPorts, file->RedirectComPorts) || + !freerdp_settings_set_bool(settings, FreeRDP_RedirectParallelPorts, file->RedirectComPorts)) return FALSE; } @@ -1165,7 +1168,7 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* * devicestoredirect:s:USB\VID_04A9&PID_30C1\6&4BD985D&0&2;,DynamicDevices * */ - freerdp_set_param_bool(settings, FreeRDP_RedirectDrives, TRUE); + freerdp_settings_set_bool(settings, FreeRDP_RedirectDrives, TRUE); } if (~((size_t) file->DrivesToRedirect)) @@ -1178,21 +1181,21 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* */ const BOOL empty = !file->DrivesToRedirect || (strlen(file->DrivesToRedirect) == 0); - if (!freerdp_set_param_bool(settings, FreeRDP_RedirectDrives, !empty)) + if (!freerdp_settings_set_bool(settings, FreeRDP_RedirectDrives, !empty)) return FALSE; } if (~file->KeyboardHook) { - if (!freerdp_set_param_uint32(settings, FreeRDP_KeyboardHook, file->KeyboardHook)) + if (!freerdp_settings_set_uint32(settings, FreeRDP_KeyboardHook, file->KeyboardHook)) return FALSE; } if (~((size_t) file->PreconnectionBlob)) { - if (!freerdp_set_param_string(settings, FreeRDP_PreconnectionBlob, file->PreconnectionBlob) || - !freerdp_set_param_bool(settings, FreeRDP_SendPreconnectionPdu, TRUE) || - !freerdp_set_param_bool(settings, FreeRDP_VmConnectMode, TRUE)) + if (!freerdp_settings_set_string(settings, FreeRDP_PreconnectionBlob, file->PreconnectionBlob) || + !freerdp_settings_set_bool(settings, FreeRDP_SendPreconnectionPdu, TRUE) || + !freerdp_settings_set_bool(settings, FreeRDP_VmConnectMode, TRUE)) return FALSE; } diff --git a/include/freerdp/settings.h b/include/freerdp/settings.h index 8e42f07ed..697fc64d4 100644 --- a/include/freerdp/settings.h +++ b/include/freerdp/settings.h @@ -1576,31 +1576,50 @@ FREERDP_API BOOL freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32 FREERDP_API void freerdp_update_gateway_usage_method(rdpSettings* settings, UINT32 GatewayEnabled, UINT32 GatewayBypassLocal); -FREERDP_API BOOL freerdp_get_param_bool(rdpSettings* settings, size_t id); -FREERDP_API BOOL freerdp_set_param_bool(rdpSettings* settings, size_t id, BOOL param); +/* DEPRECATED: + * the functions freerdp_get_param_* and freerdp_set_param_* are deprecated. + * use freerdp_settings_get_* and freerdp_settings_set_* as a replacement! + */ +FREERDP_API BOOL freerdp_get_param_bool(rdpSettings* settings, int id); +FREERDP_API int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param); -FREERDP_API INT16 freerdp_get_param_int16(rdpSettings* settings, size_t id); -FREERDP_API BOOL freerdp_set_param_int16(rdpSettings* settings, size_t id, INT16 param); +FREERDP_API int freerdp_get_param_int(rdpSettings* settings, int id); +FREERDP_API int freerdp_set_param_int(rdpSettings* settings, int id, int param); -FREERDP_API UINT16 freerdp_get_param_uint16(rdpSettings* settings, size_t id); -FREERDP_API BOOL freerdp_set_param_uint16(rdpSettings* settings, size_t id, UINT16 param); +FREERDP_API UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id); +FREERDP_API int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param); -FREERDP_API INT32 freerdp_get_param_int32(rdpSettings* settings, size_t id); -FREERDP_API BOOL freerdp_set_param_int32(rdpSettings* settings, size_t id, INT32 param); +FREERDP_API UINT64 freerdp_get_param_uint64(rdpSettings* settings, int id); +FREERDP_API int freerdp_set_param_uint64(rdpSettings* settings, int id, UINT64 param); -FREERDP_API UINT32 freerdp_get_param_uint32(rdpSettings* settings, size_t id); -FREERDP_API BOOL freerdp_set_param_uint32(rdpSettings* settings, size_t id, UINT32 param); +FREERDP_API char* freerdp_get_param_string(rdpSettings* settings, int id); +FREERDP_API int freerdp_set_param_string(rdpSettings* settings, int id, const char* param); -FREERDP_API INT64 freerdp_get_param_int64(rdpSettings* settings, size_t id); -FREERDP_API BOOL freerdp_set_param_int64(rdpSettings* settings, size_t id, INT64 param); +FREERDP_API BOOL freerdp_settings_get_bool(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_settings_set_bool(rdpSettings* settings, size_t id, BOOL param); -FREERDP_API UINT64 freerdp_get_param_uint64(rdpSettings* settings, size_t id); -FREERDP_API BOOL freerdp_set_param_uint64(rdpSettings* settings, size_t id, UINT64 param); +FREERDP_API INT16 freerdp_settings_get_int16(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_settings_set_int16(rdpSettings* settings, size_t id, INT16 param); -FREERDP_API const char* freerdp_get_param_string(rdpSettings* settings, size_t id); -FREERDP_API BOOL freerdp_set_param_string(rdpSettings* settings, size_t id, const char* param); +FREERDP_API UINT16 freerdp_settings_get_uint16(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_settings_set_uint16(rdpSettings* settings, size_t id, UINT16 param); -FREERDP_API const void* freerdp_get_param_pointer(rdpSettings* settings, size_t id); +FREERDP_API INT32 freerdp_settings_get_int32(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_settings_set_int32(rdpSettings* settings, size_t id, INT32 param); + +FREERDP_API UINT32 freerdp_settings_get_uint32(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 param); + +FREERDP_API INT64 freerdp_settings_get_int64(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_settings_set_int64(rdpSettings* settings, size_t id, INT64 param); + +FREERDP_API UINT64 freerdp_settings_get_uint64(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_settings_set_uint64(rdpSettings* settings, size_t id, UINT64 param); + +FREERDP_API const char* freerdp_settings_get_string(rdpSettings* settings, size_t id); +FREERDP_API BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id, const char* param); + +FREERDP_API const void* freerdp_settings_get_pointer(rdpSettings* settings, size_t id); #ifdef __cplusplus } diff --git a/libfreerdp/common/assistance.c b/libfreerdp/common/assistance.c index a7f0d4ab8..4d34e685f 100644 --- a/libfreerdp/common/assistance.c +++ b/libfreerdp/common/assistance.c @@ -1155,50 +1155,50 @@ BOOL freerdp_assistance_populate_settings_from_assistance_file(rdpAssistanceFile rdpSettings* settings) { UINT32 i; - freerdp_set_param_bool(settings, FreeRDP_RemoteAssistanceMode, TRUE); + freerdp_settings_set_bool(settings, FreeRDP_RemoteAssistanceMode, TRUE); if (!file->RASessionId || !file->MachineAddresses) return FALSE; - if (!freerdp_set_param_string(settings, FreeRDP_RemoteAssistanceSessionId, file->RASessionId)) + if (!freerdp_settings_set_string(settings, FreeRDP_RemoteAssistanceSessionId, file->RASessionId)) return FALSE; if (file->RCTicket) { - if (!freerdp_set_param_string(settings, FreeRDP_RemoteAssistanceRCTicket, file->RCTicket)) + if (!freerdp_settings_set_string(settings, FreeRDP_RemoteAssistanceRCTicket, file->RCTicket)) return FALSE; } else { - if (!freerdp_set_param_string(settings, FreeRDP_RemoteAssistanceRCTicket, - file->ConnectionString2)) + if (!freerdp_settings_set_string(settings, FreeRDP_RemoteAssistanceRCTicket, + file->ConnectionString2)) return FALSE; } if (file->PassStub) { - if (!freerdp_set_param_string(settings, FreeRDP_RemoteAssistancePassStub, file->PassStub)) + if (!freerdp_settings_set_string(settings, FreeRDP_RemoteAssistancePassStub, file->PassStub)) return FALSE; } - if (!freerdp_set_param_string(settings, FreeRDP_ServerHostname, file->MachineAddresses[0])) + if (!freerdp_settings_set_string(settings, FreeRDP_ServerHostname, file->MachineAddresses[0])) return FALSE; - if (!freerdp_set_param_string(settings, FreeRDP_AssistanceFile, file->filename)) + if (!freerdp_settings_set_string(settings, FreeRDP_AssistanceFile, file->filename)) return FALSE; - if (!freerdp_set_param_string(settings, FreeRDP_RemoteAssistancePassword, file->password)) + if (!freerdp_settings_set_string(settings, FreeRDP_RemoteAssistancePassword, file->password)) return FALSE; if (file->Username) { - if (!freerdp_set_param_string(settings, FreeRDP_Username, file->Username)) + if (!freerdp_settings_set_string(settings, FreeRDP_Username, file->Username)) return FALSE; } settings->RemoteAssistanceMode = TRUE; - if (!freerdp_set_param_uint32(settings, FreeRDP_ServerPort, file->MachinePorts[0])) + if (!freerdp_settings_set_uint32(settings, FreeRDP_ServerPort, file->MachinePorts[0])) return FALSE; freerdp_target_net_addresses_free(settings); diff --git a/libfreerdp/common/settings.c b/libfreerdp/common/settings.c index 8e571bb77..0ff6cd1b7 100644 --- a/libfreerdp/common/settings.c +++ b/libfreerdp/common/settings.c @@ -697,25 +697,25 @@ void freerdp_performance_flags_split(rdpSettings* settings) BOOL freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32 GatewayUsageMethod) { - if (!freerdp_set_param_uint32(settings, FreeRDP_GatewayUsageMethod, GatewayUsageMethod)) + if (!freerdp_settings_set_uint32(settings, FreeRDP_GatewayUsageMethod, GatewayUsageMethod)) return FALSE; if (GatewayUsageMethod == TSC_PROXY_MODE_NONE_DIRECT) { - if (!freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, FALSE) || - !freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) + if (!freerdp_settings_set_bool(settings, FreeRDP_GatewayEnabled, FALSE) || + !freerdp_settings_set_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) return FALSE; } else if (GatewayUsageMethod == TSC_PROXY_MODE_DIRECT) { - if (!freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, TRUE) || - !freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) + if (!freerdp_settings_set_bool(settings, FreeRDP_GatewayEnabled, TRUE) || + !freerdp_settings_set_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) return FALSE; } else if (GatewayUsageMethod == TSC_PROXY_MODE_DETECT) { - if (!freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, TRUE) || - !freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, TRUE)) + if (!freerdp_settings_set_bool(settings, FreeRDP_GatewayEnabled, TRUE) || + !freerdp_settings_set_bool(settings, FreeRDP_GatewayBypassLocal, TRUE)) return FALSE; } else if (GatewayUsageMethod == TSC_PROXY_MODE_DEFAULT) @@ -725,14 +725,14 @@ BOOL freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32 GatewayUsage * which means the client attempts to use gateway group policy settings * http://technet.microsoft.com/en-us/library/cc770601.aspx */ - if (!freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, FALSE) || - !freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) + if (!freerdp_settings_set_bool(settings, FreeRDP_GatewayEnabled, FALSE) || + !freerdp_settings_set_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) return FALSE; } else if (GatewayUsageMethod == TSC_PROXY_MODE_NONE_DETECT) { - if (!freerdp_set_param_bool(settings, FreeRDP_GatewayEnabled, FALSE) || - !freerdp_set_param_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) + if (!freerdp_settings_set_bool(settings, FreeRDP_GatewayEnabled, FALSE) || + !freerdp_settings_set_bool(settings, FreeRDP_GatewayBypassLocal, FALSE)) return FALSE; } @@ -753,3 +753,53 @@ void freerdp_update_gateway_usage_method(rdpSettings* settings, UINT32 GatewayEn freerdp_set_gateway_usage_method(settings, GatewayUsageMethod); } + +BOOL freerdp_get_param_bool(rdpSettings* settings, int id) +{ + return freerdp_settings_get_bool(settings, (size_t)id); +} + +int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param) +{ + return freerdp_settings_set_bool(settings, (size_t)id, param) ? 0 : -1; +} + +int freerdp_get_param_int(rdpSettings* settings, int id) +{ + return freerdp_settings_get_int32(settings, (size_t)id); +} + +int freerdp_set_param_int(rdpSettings* settings, int id, int param) +{ + return freerdp_settings_set_int32(settings, (size_t)id, param) ? 0 : -1; +} + +UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id) +{ + return freerdp_settings_get_uint32(settings, (size_t)id); +} + +int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param) +{ + return freerdp_settings_set_uint32(settings, (size_t)id, param) ? 0 : -1; +} + +UINT64 freerdp_get_param_uint64(rdpSettings* settings, int id) +{ + return freerdp_settings_get_uint64(settings, (size_t)id); +} + +int freerdp_set_param_uint64(rdpSettings* settings, int id, UINT64 param) +{ + return freerdp_settings_set_uint64(settings, (size_t)id, param) ? 0 : -1; +} + +char* freerdp_get_param_string(rdpSettings* settings, int id) +{ + return (char*)freerdp_settings_get_string(settings, (size_t)id); +} + +int freerdp_set_param_string(rdpSettings* settings, int id, const char* param) +{ + return freerdp_settings_set_string(settings, (size_t)id, param) ? 0 : -1; +} diff --git a/libfreerdp/common/settings_getters.c b/libfreerdp/common/settings_getters.c index ccb19457e..0ca44d10c 100644 --- a/libfreerdp/common/settings_getters.c +++ b/libfreerdp/common/settings_getters.c @@ -5,7 +5,7 @@ #define TAG FREERDP_TAG("common.settings") -BOOL freerdp_get_param_bool(rdpSettings* settings, size_t id) +BOOL freerdp_settings_get_bool(rdpSettings* settings, size_t id) { if (!settings) return FALSE; @@ -498,7 +498,7 @@ BOOL freerdp_get_param_bool(rdpSettings* settings, size_t id) } } -BOOL freerdp_set_param_bool(rdpSettings* settings, size_t id, BOOL val) +BOOL freerdp_settings_set_bool(rdpSettings* settings, size_t id, BOOL val) { if (!settings) return FALSE; @@ -1153,7 +1153,7 @@ BOOL freerdp_set_param_bool(rdpSettings* settings, size_t id, BOOL val) return TRUE; } -UINT16 freerdp_get_param_uint16(rdpSettings* settings, size_t id) +UINT16 freerdp_settings_get_uint16(rdpSettings* settings, size_t id) { if (!settings) return FALSE; @@ -1172,7 +1172,7 @@ UINT16 freerdp_get_param_uint16(rdpSettings* settings, size_t id) } } -BOOL freerdp_set_param_uint16(rdpSettings* settings, size_t id, UINT16 val) +BOOL freerdp_settings_set_uint16(rdpSettings* settings, size_t id, UINT16 val) { if (!settings) return FALSE; @@ -1195,7 +1195,7 @@ BOOL freerdp_set_param_uint16(rdpSettings* settings, size_t id, UINT16 val) return TRUE; } -INT16 freerdp_get_param_int16(rdpSettings* settings, size_t id) +INT16 freerdp_settings_get_int16(rdpSettings* settings, size_t id) { if (!settings) return FALSE; @@ -1208,7 +1208,7 @@ INT16 freerdp_get_param_int16(rdpSettings* settings, size_t id) } } -BOOL freerdp_set_param_int16(rdpSettings* settings, size_t id, INT16 val) +BOOL freerdp_settings_set_int16(rdpSettings* settings, size_t id, INT16 val) { if (!settings) return FALSE; @@ -1223,7 +1223,7 @@ BOOL freerdp_set_param_int16(rdpSettings* settings, size_t id, INT16 val) return TRUE; } -UINT32 freerdp_get_param_uint32(rdpSettings* settings, size_t id) +UINT32 freerdp_settings_get_uint32(rdpSettings* settings, size_t id) { if (!settings) return FALSE; @@ -1425,6 +1425,9 @@ UINT32 freerdp_get_param_uint32(rdpSettings* settings, size_t id) case FreeRDP_RemoteWndSupportLevel: return settings->RemoteWndSupportLevel; + case FreeRDP_RemoteApplicationSupportLevel: + return settings->RemoteApplicationSupportLevel; + case FreeRDP_ReceivedCapabilitiesSize: return settings->ReceivedCapabilitiesSize; @@ -1512,6 +1515,9 @@ UINT32 freerdp_get_param_uint32(rdpSettings* settings, size_t id) case FreeRDP_JpegQuality: return settings->JpegQuality; + case FreeRDP_GfxCapsFilter: + return settings->GfxCapsFilter; + case FreeRDP_BitmapCacheV3CodecId: return settings->BitmapCacheV3CodecId; @@ -1545,7 +1551,7 @@ UINT32 freerdp_get_param_uint32(rdpSettings* settings, size_t id) } } -BOOL freerdp_set_param_uint32(rdpSettings* settings, size_t id, UINT32 val) +BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 val) { if (!settings) return FALSE; @@ -1812,6 +1818,10 @@ BOOL freerdp_set_param_uint32(rdpSettings* settings, size_t id, UINT32 val) settings->RemoteWndSupportLevel = val; break; + case FreeRDP_RemoteApplicationSupportLevel: + settings->RemoteApplicationSupportLevel = val; + break; + case FreeRDP_ReceivedCapabilitiesSize: settings->ReceivedCapabilitiesSize = val; break; @@ -1928,6 +1938,10 @@ BOOL freerdp_set_param_uint32(rdpSettings* settings, size_t id, UINT32 val) settings->JpegQuality = val; break; + case FreeRDP_GfxCapsFilter: + settings->GfxCapsFilter = val; + break; + case FreeRDP_BitmapCacheV3CodecId: settings->BitmapCacheV3CodecId = val; break; @@ -1972,7 +1986,7 @@ BOOL freerdp_set_param_uint32(rdpSettings* settings, size_t id, UINT32 val) return TRUE; } -INT32 freerdp_get_param_int32(rdpSettings* settings, size_t id) +INT32 freerdp_settings_get_int32(rdpSettings* settings, size_t id) { if (!settings) return FALSE; @@ -1991,7 +2005,7 @@ INT32 freerdp_get_param_int32(rdpSettings* settings, size_t id) } } -BOOL freerdp_set_param_int32(rdpSettings* settings, size_t id, INT32 val) +BOOL freerdp_settings_set_int32(rdpSettings* settings, size_t id, INT32 val) { if (!settings) return FALSE; @@ -2014,7 +2028,7 @@ BOOL freerdp_set_param_int32(rdpSettings* settings, size_t id, INT32 val) return TRUE; } -UINT64 freerdp_get_param_uint64(rdpSettings* settings, size_t id) +UINT64 freerdp_settings_get_uint64(rdpSettings* settings, size_t id) { if (!settings) return FALSE; @@ -2030,7 +2044,7 @@ UINT64 freerdp_get_param_uint64(rdpSettings* settings, size_t id) } } -BOOL freerdp_set_param_uint64(rdpSettings* settings, size_t id, UINT64 val) +BOOL freerdp_settings_set_uint64(rdpSettings* settings, size_t id, UINT64 val) { if (!settings) return FALSE; @@ -2049,7 +2063,7 @@ BOOL freerdp_set_param_uint64(rdpSettings* settings, size_t id, UINT64 val) return TRUE; } -INT64 freerdp_get_param_int64(rdpSettings* settings, size_t id) +INT64 freerdp_settings_get_int64(rdpSettings* settings, size_t id) { if (!settings) return FALSE; @@ -2062,7 +2076,7 @@ INT64 freerdp_get_param_int64(rdpSettings* settings, size_t id) } } -BOOL freerdp_set_param_int64(rdpSettings* settings, size_t id, INT64 val) +BOOL freerdp_settings_set_int64(rdpSettings* settings, size_t id, INT64 val) { if (!settings) return FALSE; @@ -2077,7 +2091,7 @@ BOOL freerdp_set_param_int64(rdpSettings* settings, size_t id, INT64 val) return TRUE; } -const char* freerdp_get_param_string(rdpSettings* settings, size_t id) +const char* freerdp_settings_get_string(rdpSettings* settings, size_t id) { if (!settings) return FALSE; @@ -2279,7 +2293,7 @@ const char* freerdp_get_param_string(rdpSettings* settings, size_t id) } } -BOOL freerdp_set_param_string(rdpSettings* settings, size_t id, const char* val) +BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id, const char* val) { if (!settings) return FALSE; @@ -2609,7 +2623,7 @@ BOOL freerdp_set_param_string(rdpSettings* settings, size_t id, const char* val) return TRUE; } -const void* freerdp_get_param_pointer(rdpSettings* settings, size_t id) +const void* freerdp_settings_get_pointer(rdpSettings* settings, size_t id) { if (!settings) return FALSE; diff --git a/libfreerdp/core/peer.c b/libfreerdp/core/peer.c index c2561c40e..9721d1115 100644 --- a/libfreerdp/core/peer.c +++ b/libfreerdp/core/peer.c @@ -567,35 +567,43 @@ static int peer_recv_callback(rdpTransport* transport, wStream* s, void* extra) break; case CONNECTION_STATE_LICENSING: - { - LicenseCallbackResult res; - if (!client->LicenseCallback) { - WLog_ERR(TAG, "peer_recv_callback: LicenseCallback has been removed, assuming licensing is ok (please fix your app)"); - res = LICENSE_CB_COMPLETED; - } - else - res = client->LicenseCallback(client, s); + LicenseCallbackResult res; + + if (!client->LicenseCallback) + { + WLog_ERR(TAG, + "peer_recv_callback: LicenseCallback has been removed, assuming licensing is ok (please fix your app)"); + res = LICENSE_CB_COMPLETED; + } + else + res = client->LicenseCallback(client, s); + + switch (res) + { + case LICENSE_CB_INTERNAL_ERROR: + WLog_ERR(TAG, "peer_recv_callback: CONNECTION_STATE_LICENSING - callback internal error, aborting"); + return -1; + + case LICENSE_CB_ABORT: + return -1; + + case LICENSE_CB_IN_PROGRESS: + break; + + case LICENSE_CB_COMPLETED: + rdp_server_transition_to_state(rdp, CONNECTION_STATE_CAPABILITIES_EXCHANGE); + return peer_recv_callback(transport, NULL, extra); + + default: + WLog_ERR(TAG, "peer_recv_callback: CONNECTION_STATE_LICENSING - unknown license callback result %d", + (int)res); + break; + } - switch(res) { - case LICENSE_CB_INTERNAL_ERROR: - WLog_ERR(TAG, "peer_recv_callback: CONNECTION_STATE_LICENSING - callback internal error, aborting"); - return -1; - case LICENSE_CB_ABORT: - return -1; - case LICENSE_CB_IN_PROGRESS: - break; - case LICENSE_CB_COMPLETED: - rdp_server_transition_to_state(rdp, CONNECTION_STATE_CAPABILITIES_EXCHANGE); - return peer_recv_callback(transport, NULL, extra); - default: - WLog_ERR(TAG, "peer_recv_callback: CONNECTION_STATE_LICENSING - unknown license callback result %d", (int)res); break; } - break; - } - case CONNECTION_STATE_CAPABILITIES_EXCHANGE: if (!rdp->AwaitCapabilities) { @@ -680,7 +688,7 @@ static BOOL freerdp_peer_close(freerdp_peer* client) if (!rdp_send_deactivate_all(client->context->rdp)) return FALSE; - if (freerdp_get_param_bool(client->settings, FreeRDP_SupportErrorInfoPdu)) + if (freerdp_settings_get_bool(client->settings, FreeRDP_SupportErrorInfoPdu)) { rdp_send_error_info(client->context->rdp); } @@ -717,9 +725,9 @@ static BOOL freerdp_peer_has_more_to_read(freerdp_peer* peer) return peer->context->rdp->transport->haveMoreBytesToRead; } -static LicenseCallbackResult freerdp_peer_nolicense(freerdp_peer* peer, wStream *s) +static LicenseCallbackResult freerdp_peer_nolicense(freerdp_peer* peer, wStream* s) { - rdpRdp *rdp = peer->context->rdp; + rdpRdp* rdp = peer->context->rdp; if (!license_send_valid_client_error_packet(rdp)) { diff --git a/libfreerdp/core/test/TestSettings.c b/libfreerdp/core/test/TestSettings.c index 0cef4bd02..923cf11e6 100644 --- a/libfreerdp/core/test/TestSettings.c +++ b/libfreerdp/core/test/TestSettings.c @@ -33,9 +33,9 @@ int TestSettings(int argc, char* argv[]) for (x = 0; x < ARRAYSIZE(bool_list_indices); x++) { const size_t key = bool_list_indices[x]; - const BOOL val = freerdp_get_param_bool(settings, key); + const BOOL val = freerdp_settings_get_bool(settings, key); - if (!freerdp_set_param_bool(settings, key, val)) + if (!freerdp_settings_set_bool(settings, key, val)) goto fail; } @@ -45,9 +45,9 @@ int TestSettings(int argc, char* argv[]) for (x = 0; x < ARRAYSIZE(int16_list_indices); x++) { const size_t key = int16_list_indices[x]; - const INT16 val = freerdp_get_param_int16(settings, key); + const INT16 val = freerdp_settings_get_int16(settings, key); - if (!freerdp_set_param_int16(settings, key, val)) + if (!freerdp_settings_set_int16(settings, key, val)) goto fail; } @@ -57,9 +57,9 @@ int TestSettings(int argc, char* argv[]) for (x = 0; x < ARRAYSIZE(uint16_list_indices); x++) { const size_t key = uint16_list_indices[x]; - const UINT16 val = freerdp_get_param_uint16(settings, key); + const UINT16 val = freerdp_settings_get_uint16(settings, key); - if (!freerdp_set_param_uint16(settings, key, val)) + if (!freerdp_settings_set_uint16(settings, key, val)) goto fail; } @@ -69,9 +69,9 @@ int TestSettings(int argc, char* argv[]) for (x = 0; x < ARRAYSIZE(uint32_list_indices); x++) { const size_t key = uint32_list_indices[x]; - const UINT32 val = freerdp_get_param_uint32(settings, key); + const UINT32 val = freerdp_settings_get_uint32(settings, key); - if (!freerdp_set_param_uint32(settings, key, val)) + if (!freerdp_settings_set_uint32(settings, key, val)) goto fail; } @@ -81,9 +81,9 @@ int TestSettings(int argc, char* argv[]) for (x = 0; x < ARRAYSIZE(int32_list_indices); x++) { const size_t key = int32_list_indices[x]; - const INT32 val = freerdp_get_param_int32(settings, key); + const INT32 val = freerdp_settings_get_int32(settings, key); - if (!freerdp_set_param_int32(settings, key, val)) + if (!freerdp_settings_set_int32(settings, key, val)) goto fail; } @@ -93,9 +93,9 @@ int TestSettings(int argc, char* argv[]) for (x = 0; x < ARRAYSIZE(uint64_list_indices); x++) { const size_t key = uint64_list_indices[x]; - const UINT64 val = freerdp_get_param_uint64(settings, key); + const UINT64 val = freerdp_settings_get_uint64(settings, key); - if (!freerdp_set_param_uint64(settings, key, val)) + if (!freerdp_settings_set_uint64(settings, key, val)) goto fail; } @@ -105,9 +105,9 @@ int TestSettings(int argc, char* argv[]) for (x = 0; x < ARRAYSIZE(int64_list_indices); x++) { const size_t key = int64_list_indices[x]; - const INT64 val = freerdp_get_param_int64(settings, key); + const INT64 val = freerdp_settings_get_int64(settings, key); - if (!freerdp_set_param_int64(settings, key, val)) + if (!freerdp_settings_set_int64(settings, key, val)) goto fail; } @@ -117,13 +117,14 @@ int TestSettings(int argc, char* argv[]) for (x = 0; x < ARRAYSIZE(string_list_indices); x++) { const size_t key = string_list_indices[x]; - const char* val = "test-string"; + const char val[] = "test-string"; const char* res; - if (!freerdp_set_param_string(settings, key, val)) + if (!freerdp_settings_set_string(settings, key, val)) goto fail; - res = freerdp_get_param_string(settings, key); + res = freerdp_settings_get_string(settings, key); + if (strncmp(val, res, sizeof(val)) != 0) goto fail; } @@ -134,7 +135,7 @@ int TestSettings(int argc, char* argv[]) for (x = 0; x < ARRAYSIZE(pointer_list_indices); x++) { const size_t key = pointer_list_indices[x]; - const void* val = freerdp_get_param_pointer(settings, key); + const void* val = freerdp_settings_get_pointer(settings, key); } #endif diff --git a/libfreerdp/core/test/settings_property_lists.h b/libfreerdp/core/test/settings_property_lists.h index 648b6061f..b063cd1a2 100644 --- a/libfreerdp/core/test/settings_property_lists.h +++ b/libfreerdp/core/test/settings_property_lists.h @@ -241,6 +241,7 @@ static const size_t uint32_list_indices[] = FreeRDP_RemoteAppNumIconCaches, FreeRDP_RemoteAppNumIconCacheEntries, FreeRDP_RemoteWndSupportLevel, + FreeRDP_RemoteApplicationSupportLevel, FreeRDP_ReceivedCapabilitiesSize, FreeRDP_OsMajorType, FreeRDP_OsMinorType, @@ -270,6 +271,7 @@ static const size_t uint32_list_indices[] = FreeRDP_NSCodecColorLossLevel, FreeRDP_JpegCodecId, FreeRDP_JpegQuality, + FreeRDP_GfxCapsFilter, FreeRDP_BitmapCacheV3CodecId, FreeRDP_DrawNineGridCacheSize, FreeRDP_DrawNineGridCacheEntries, diff --git a/scripts/update-settings-tests b/scripts/update-settings-tests index 7be477c2c..dd22bb437 100755 --- a/scripts/update-settings-tests +++ b/scripts/update-settings-tests @@ -43,7 +43,7 @@ def write_getter(f, entry_dict, entry_type, entry_name): f.write('const ' + entry_type) else: f.write(entry_type) - f.write(' freerdp_get_param_' + entry_name.lower() + '(rdpSettings* settings, size_t id)\n') + f.write(' freerdp_settings_get_' + entry_name.lower() + '(rdpSettings* settings, size_t id)\n') f.write('{\n') f.write('\tif (!settings)\n') f.write('\t\treturn FALSE;\n\n') @@ -73,7 +73,7 @@ def write_setter(f, entry_dict, entry_type, entry_name): isPointer = 'pointer' in entry_name values = get_values(entry_dict, entry_type) - f.write('BOOL freerdp_set_param_' + entry_name.lower() + '(rdpSettings* settings, size_t id, ') + f.write('BOOL freerdp_settings_set_' + entry_name.lower() + '(rdpSettings* settings, size_t id, ') if isString or isPointer: f.write('const ') if not isPointer: diff --git a/server/shadow/shadow_server.c b/server/shadow/shadow_server.c index e3f98a0d2..619a81aaf 100644 --- a/server/shadow/shadow_server.c +++ b/server/shadow/shadow_server.c @@ -343,7 +343,7 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a } CommandLineSwitchCase(arg, "sam-file") { - freerdp_set_param_string(settings, FreeRDP_NtlmSamFile, arg->Value); + freerdp_settings_set_string(settings, FreeRDP_NtlmSamFile, arg->Value); } CommandLineSwitchDefault(arg) { From 4d4e7a69d752fb9ab0ac90ab00c39f7bc47aaa82 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Thu, 9 May 2019 13:50:39 +0200 Subject: [PATCH 4/4] Fixed remaining getter/setter return checks. --- client/common/file.c | 7 ++++--- libfreerdp/common/assistance.c | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/client/common/file.c b/client/common/file.c index fff513298..748ae258d 100644 --- a/client/common/file.c +++ b/client/common/file.c @@ -1009,8 +1009,8 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* if (~((size_t) file->RemoteApplicationFile)) { - if (freerdp_settings_set_string(settings, FreeRDP_RemoteApplicationGuid, - file->RemoteApplicationGuid) != 0) + if (!freerdp_settings_set_string(settings, FreeRDP_RemoteApplicationGuid, + file->RemoteApplicationGuid)) return FALSE; } @@ -1168,7 +1168,8 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* * devicestoredirect:s:USB\VID_04A9&PID_30C1\6&4BD985D&0&2;,DynamicDevices * */ - freerdp_settings_set_bool(settings, FreeRDP_RedirectDrives, TRUE); + if (!freerdp_settings_set_bool(settings, FreeRDP_RedirectDrives, TRUE)) + return FALSE; } if (~((size_t) file->DrivesToRedirect)) diff --git a/libfreerdp/common/assistance.c b/libfreerdp/common/assistance.c index 4d34e685f..6ac741117 100644 --- a/libfreerdp/common/assistance.c +++ b/libfreerdp/common/assistance.c @@ -1155,7 +1155,9 @@ BOOL freerdp_assistance_populate_settings_from_assistance_file(rdpAssistanceFile rdpSettings* settings) { UINT32 i; - freerdp_settings_set_bool(settings, FreeRDP_RemoteAssistanceMode, TRUE); + + if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteAssistanceMode, TRUE)) + return FALSE; if (!file->RASessionId || !file->MachineAddresses) return FALSE;