From abc93f924c13b8c10d4c80d50116abfa5ecd8fb9 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Thu, 21 Mar 2019 13:08:59 +0100 Subject: [PATCH] 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 +- libfreerdp/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 d6eef5c..93a3878 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 14ad05c..fa8b817 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 5cd481b..a2d6aba 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 0000000..ccb1945 --- /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 ebfc15f..0cef4bd 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 0000000..648b606 --- /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 0000000..7be477c --- /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') -- 2.7.4