From b56bef23ddf815db70d408f94cfa18b32b131ac1 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Fri, 16 Dec 2022 14:21:23 +0100 Subject: [PATCH] [proxy] clean up config parser * Use constant strings to identify sections, keys, bool, ... --- server/proxy/pf_config.c | 311 +++++++++++++++++++++++++-------------- 1 file changed, 202 insertions(+), 109 deletions(-) diff --git a/server/proxy/pf_config.c b/server/proxy/pf_config.c index 82a18b5d2..d75d2948e 100644 --- a/server/proxy/pf_config.c +++ b/server/proxy/pf_config.c @@ -49,14 +49,76 @@ #define TAG PROXY_TAG("config") #define CONFIG_PRINT_SECTION(section) WLog_INFO(TAG, "\t%s:", section) +#define CONFIG_PRINT_SECTION_KEY(section, key) WLog_INFO(TAG, "\t%s/%s:", section, key) #define CONFIG_PRINT_STR(config, key) WLog_INFO(TAG, "\t\t%s: %s", #key, config->key) #define CONFIG_PRINT_STR_CONTENT(config, key) \ WLog_INFO(TAG, "\t\t%s: %s", #key, config->key ? "set" : NULL) -#define CONFIG_PRINT_BOOL(config, key) \ - WLog_INFO(TAG, "\t\t%s: %s", #key, config->key ? "TRUE" : "FALSE") +#define CONFIG_PRINT_BOOL(config, key) WLog_INFO(TAG, "\t\t%s: %s", #key, boolstr(config->key)) #define CONFIG_PRINT_UINT16(config, key) WLog_INFO(TAG, "\t\t%s: %" PRIu16 "", #key, config->key) #define CONFIG_PRINT_UINT32(config, key) WLog_INFO(TAG, "\t\t%s: %" PRIu32 "", #key, config->key) +static const char* bool_str_true = "true"; +static const char* bool_str_false = "false"; +static const char* boolstr(BOOL rc) +{ + return rc ? bool_str_true : bool_str_false; +} + +static const char* section_server = "Server"; +static const char* key_host = "Host"; +static const char* key_port = "Port"; + +static const char* section_target = "Target"; +static const char* key_target_fixed = "FixedTarget"; +static const char* key_target_user = "User"; +static const char* key_target_pwd = "Password"; +static const char* key_target_domain = "Domain"; + +static const char* section_clipboard = "Clipboard"; +static const char* key_clip_text_only = "TextOnly"; +static const char* key_clip_text_max_len = "MaxTextLength"; + +static const char* section_gfx_settings = "GFXSettings"; +static const char* key_gfx_decode = "DecodeGFX"; + +static const char* section_plugins = "Plugins"; +static const char* key_plugins_modules = "Modules"; +static const char* key_plugins_required = "Required"; + +static const char* section_channels = "Channels"; +static const char* key_channels_gfx = "GFX"; +static const char* key_channels_disp = "DisplayControl"; +static const char* key_channels_clip = "Clipboard"; +static const char* key_channels_mic = "AudioInput"; +static const char* key_channels_sound = "AudioOutput"; +static const char* key_channels_rdpdr = "DeviceRedirection"; +static const char* key_channels_video = "VideoRedirection"; +static const char* key_channels_camera = "CameraRedirection"; +static const char* key_channels_rails = "RemoteApp"; +static const char* key_channels_blacklist = "PassthroughIsBlacklist"; +static const char* key_channels_pass = "Passthrough"; +static const char* key_channels_intercept = "Intercept"; + +static const char* section_input = "Input"; +static const char* key_input_kbd = "Keyboard"; +static const char* key_input_mouse = "Mouse"; +static const char* key_input_multitouch = "Multitouch"; + +static const char* section_security = "Security"; +static const char* key_security_server_nla = "ServerNlaSecurity"; +static const char* key_security_server_tls = "ServerTlsSecurity"; +static const char* key_security_server_rdp = "ServerRdpSecurity"; +static const char* key_security_client_nla = "ClientNlaSecurity"; +static const char* key_security_client_tls = "ClientTlsSecurity"; +static const char* key_security_client_rdp = "ClientRdpSecurity"; +static const char* key_security_client_fallback = "ClientAllowFallbackToTls"; + +static const char* section_certificates = "Certificates"; +static const char* key_private_key_file = "PrivateKeyFile"; +static const char* key_private_key_content = "PrivateKeyContent"; +static const char* key_cert_file = "CertificateFile"; +static const char* key_cert_content = "CertificateContent"; + static char** pf_config_parse_comma_separated_list(const char* list, size_t* count) { if (!list || !count) @@ -131,13 +193,13 @@ static BOOL pf_config_get_bool(wIniFile* ini, const char* section, const char* k if (!str_value) { WLog_WARN(TAG, "[%s]: key '%s.%s' not found, value defaults to %s.", __FUNCTION__, section, - key, fallback ? "true" : "false"); + key, fallback ? bool_str_true : bool_str_false); return fallback; } - if (_stricmp(str_value, "TRUE") == 0) + if (_stricmp(str_value, bool_str_true) == 0) return TRUE; - if (_stricmp(str_value, "FALSE") == 0) + if (_stricmp(str_value, bool_str_false) == 0) return FALSE; num_value = IniFile_GetKeyValueInt(ini, section, key); @@ -170,7 +232,7 @@ static BOOL pf_config_load_server(wIniFile* ini, proxyConfig* config) const char* host; WINPR_ASSERT(config); - host = pf_config_get_str(ini, "Server", "Host", FALSE); + host = pf_config_get_str(ini, section_server, key_host, FALSE); if (!host) return TRUE; @@ -180,7 +242,7 @@ static BOOL pf_config_load_server(wIniFile* ini, proxyConfig* config) if (!config->Host) return FALSE; - if (!pf_config_get_uint16(ini, "Server", "Port", &config->Port, TRUE)) + if (!pf_config_get_uint16(ini, section_server, key_port, &config->Port, TRUE)) return FALSE; return TRUE; @@ -191,14 +253,15 @@ static BOOL pf_config_load_target(wIniFile* ini, proxyConfig* config) const char* target_value; WINPR_ASSERT(config); - config->FixedTarget = pf_config_get_bool(ini, "Target", "FixedTarget", FALSE); + config->FixedTarget = pf_config_get_bool(ini, section_target, key_target_fixed, FALSE); - if (!pf_config_get_uint16(ini, "Target", "Port", &config->TargetPort, config->FixedTarget)) + if (!pf_config_get_uint16(ini, section_target, key_port, &config->TargetPort, + config->FixedTarget)) return FALSE; if (config->FixedTarget) { - target_value = pf_config_get_str(ini, "Target", "Host", TRUE); + target_value = pf_config_get_str(ini, section_target, key_host, TRUE); if (!target_value) return FALSE; @@ -207,7 +270,7 @@ static BOOL pf_config_load_target(wIniFile* ini, proxyConfig* config) return FALSE; } - target_value = pf_config_get_str(ini, "Target", "User", FALSE); + target_value = pf_config_get_str(ini, section_target, key_target_user, FALSE); if (target_value) { config->TargetUser = _strdup(target_value); @@ -215,7 +278,7 @@ static BOOL pf_config_load_target(wIniFile* ini, proxyConfig* config) return FALSE; } - target_value = pf_config_get_str(ini, "Target", "Password", FALSE); + target_value = pf_config_get_str(ini, section_target, key_target_pwd, FALSE); if (target_value) { config->TargetPassword = _strdup(target_value); @@ -223,7 +286,7 @@ static BOOL pf_config_load_target(wIniFile* ini, proxyConfig* config) return FALSE; } - target_value = pf_config_get_str(ini, "Target", "Domain", FALSE); + target_value = pf_config_get_str(ini, section_target, key_target_domain, FALSE); if (target_value) { config->TargetDomain = _strdup(target_value); @@ -237,21 +300,24 @@ static BOOL pf_config_load_target(wIniFile* ini, proxyConfig* config) static BOOL pf_config_load_channels(wIniFile* ini, proxyConfig* config) { WINPR_ASSERT(config); - config->GFX = pf_config_get_bool(ini, "Channels", "GFX", TRUE); - config->DisplayControl = pf_config_get_bool(ini, "Channels", "DisplayControl", TRUE); - config->Clipboard = pf_config_get_bool(ini, "Channels", "Clipboard", FALSE); - config->AudioOutput = pf_config_get_bool(ini, "Channels", "AudioOutput", TRUE); - config->AudioInput = pf_config_get_bool(ini, "Channels", "AudioInput", TRUE); - config->DeviceRedirection = pf_config_get_bool(ini, "Channels", "DeviceRedirection", TRUE); - config->VideoRedirection = pf_config_get_bool(ini, "Channels", "VideoRedirection", TRUE); - config->CameraRedirection = pf_config_get_bool(ini, "Channels", "CameraRedirection", TRUE); - config->RemoteApp = pf_config_get_bool(ini, "Channels", "RemoteApp", FALSE); + config->GFX = pf_config_get_bool(ini, section_channels, key_channels_gfx, TRUE); + config->DisplayControl = pf_config_get_bool(ini, section_channels, key_channels_disp, TRUE); + config->Clipboard = pf_config_get_bool(ini, section_channels, key_channels_clip, FALSE); + config->AudioOutput = pf_config_get_bool(ini, section_channels, key_channels_mic, TRUE); + config->AudioInput = pf_config_get_bool(ini, section_channels, key_channels_sound, TRUE); + config->DeviceRedirection = pf_config_get_bool(ini, section_channels, key_channels_rdpdr, TRUE); + config->VideoRedirection = pf_config_get_bool(ini, section_channels, key_channels_video, TRUE); + config->CameraRedirection = + pf_config_get_bool(ini, section_channels, key_channels_camera, TRUE); + config->RemoteApp = pf_config_get_bool(ini, section_channels, key_channels_rails, FALSE); config->PassthroughIsBlacklist = - pf_config_get_bool(ini, "Channels", "PassthroughIsBlacklist", FALSE); + pf_config_get_bool(ini, section_channels, key_channels_blacklist, FALSE); config->Passthrough = pf_config_parse_comma_separated_list( - pf_config_get_str(ini, "Channels", "Passthrough", FALSE), &config->PassthroughCount); + pf_config_get_str(ini, section_channels, key_channels_pass, FALSE), + &config->PassthroughCount); config->Intercept = pf_config_parse_comma_separated_list( - pf_config_get_str(ini, "Channels", "Intercept", FALSE), &config->InterceptCount); + pf_config_get_str(ini, section_channels, key_channels_intercept, FALSE), + &config->InterceptCount); return TRUE; } @@ -259,33 +325,40 @@ static BOOL pf_config_load_channels(wIniFile* ini, proxyConfig* config) static BOOL pf_config_load_input(wIniFile* ini, proxyConfig* config) { WINPR_ASSERT(config); - config->Keyboard = pf_config_get_bool(ini, "Input", "Keyboard", TRUE); - config->Mouse = pf_config_get_bool(ini, "Input", "Mouse", TRUE); - config->Multitouch = pf_config_get_bool(ini, "Input", "Multitouch", TRUE); + config->Keyboard = pf_config_get_bool(ini, section_input, key_input_kbd, TRUE); + config->Mouse = pf_config_get_bool(ini, section_input, key_input_mouse, TRUE); + config->Multitouch = pf_config_get_bool(ini, section_input, key_input_multitouch, TRUE); return TRUE; } static BOOL pf_config_load_security(wIniFile* ini, proxyConfig* config) { WINPR_ASSERT(config); - config->ServerTlsSecurity = pf_config_get_bool(ini, "Security", "ServerTlsSecurity", TRUE); - config->ServerNlaSecurity = pf_config_get_bool(ini, "Security", "ServerNlaSecurity", FALSE); - config->ServerRdpSecurity = pf_config_get_bool(ini, "Security", "ServerRdpSecurity", TRUE); + config->ServerTlsSecurity = + pf_config_get_bool(ini, section_security, key_security_server_tls, TRUE); + config->ServerNlaSecurity = + pf_config_get_bool(ini, section_security, key_security_server_nla, FALSE); + config->ServerRdpSecurity = + pf_config_get_bool(ini, section_security, key_security_server_rdp, TRUE); - config->ClientTlsSecurity = pf_config_get_bool(ini, "Security", "ClientTlsSecurity", TRUE); - config->ClientNlaSecurity = pf_config_get_bool(ini, "Security", "ClientNlaSecurity", TRUE); - config->ClientRdpSecurity = pf_config_get_bool(ini, "Security", "ClientRdpSecurity", TRUE); + config->ClientTlsSecurity = + pf_config_get_bool(ini, section_security, key_security_client_tls, TRUE); + config->ClientNlaSecurity = + pf_config_get_bool(ini, section_security, key_security_client_nla, TRUE); + config->ClientRdpSecurity = + pf_config_get_bool(ini, section_security, key_security_client_rdp, TRUE); config->ClientAllowFallbackToTls = - pf_config_get_bool(ini, "Security", "ClientAllowFallbackToTls", TRUE); + pf_config_get_bool(ini, section_security, key_security_client_fallback, TRUE); return TRUE; } static BOOL pf_config_load_clipboard(wIniFile* ini, proxyConfig* config) { WINPR_ASSERT(config); - config->TextOnly = pf_config_get_bool(ini, "Clipboard", "TextOnly", FALSE); + config->TextOnly = pf_config_get_bool(ini, section_clipboard, key_clip_text_only, FALSE); - if (!pf_config_get_uint32(ini, "Clipboard", "MaxTextLength", &config->MaxTextLength, FALSE)) + if (!pf_config_get_uint32(ini, section_clipboard, key_clip_text_max_len, &config->MaxTextLength, + FALSE)) return FALSE; return TRUE; @@ -296,8 +369,8 @@ static BOOL pf_config_load_modules(wIniFile* ini, proxyConfig* config) const char* modules_to_load; const char* required_modules; - modules_to_load = pf_config_get_str(ini, "Plugins", "Modules", FALSE); - required_modules = pf_config_get_str(ini, "Plugins", "Required", FALSE); + modules_to_load = pf_config_get_str(ini, section_plugins, key_plugins_modules, FALSE); + required_modules = pf_config_get_str(ini, section_plugins, key_plugins_required, FALSE); WINPR_ASSERT(config); config->Modules = pf_config_parse_comma_separated_list(modules_to_load, &config->ModulesCount); @@ -310,7 +383,7 @@ static BOOL pf_config_load_modules(wIniFile* ini, proxyConfig* config) static BOOL pf_config_load_gfx_settings(wIniFile* ini, proxyConfig* config) { WINPR_ASSERT(config); - config->DecodeGFX = pf_config_get_bool(ini, "GFXSettings", "DecodeGFX", FALSE); + config->DecodeGFX = pf_config_get_bool(ini, section_gfx_settings, key_gfx_decode, FALSE); return TRUE; } @@ -322,55 +395,62 @@ static BOOL pf_config_load_certificates(wIniFile* ini, proxyConfig* config) WINPR_ASSERT(ini); WINPR_ASSERT(config); - tmp1 = pf_config_get_str(ini, "Certificates", "CertificateFile", FALSE); + tmp1 = pf_config_get_str(ini, section_certificates, key_cert_file, FALSE); if (tmp1) { if (!winpr_PathFileExists(tmp1)) { - WLog_ERR(TAG, "Certificates/CertificateFile file %s does not exist", tmp1); + WLog_ERR(TAG, "%s/%s file %s does not exist", section_certificates, key_cert_file, + tmp1); return FALSE; } config->CertificateFile = _strdup(tmp1); } - tmp2 = pf_config_get_str(ini, "Certificates", "CertificateContent", FALSE); + tmp2 = pf_config_get_str(ini, section_certificates, key_cert_content, FALSE); if (tmp2) { if (strlen(tmp2) < 1) { - WLog_ERR(TAG, "Certificates/CertificateContent has invalid empty value"); + WLog_ERR(TAG, "%s/%s has invalid empty value", section_certificates, key_cert_content); return FALSE; } config->CertificateContent = _strdup(tmp2); } if (tmp1 && tmp2) { - WLog_ERR(TAG, "Certificates/CertificateFile and Certificates/CertificateContent are " - "mutually exclusive options"); + WLog_ERR(TAG, + "%s/%s and %s/%s are " + "mutually exclusive options", + section_certificates, key_cert_file, section_certificates, key_cert_content); return FALSE; } else if (!tmp1 && !tmp2) { - WLog_ERR(TAG, "Certificates/CertificateFile or Certificates/CertificateContent are " - "required settings"); + WLog_ERR(TAG, + "%s/%s or %s/%s are " + "required settings", + section_certificates, key_cert_file, section_certificates, key_cert_content); return FALSE; } - tmp1 = pf_config_get_str(ini, "Certificates", "PrivateKeyFile", FALSE); + tmp1 = pf_config_get_str(ini, section_certificates, key_private_key_file, FALSE); if (tmp1) { if (!winpr_PathFileExists(tmp1)) { - WLog_ERR(TAG, "Certificates/PrivateKeyFile file %s does not exist", tmp1); + WLog_ERR(TAG, "%s/%s file %s does not exist", section_certificates, + key_private_key_file, tmp1); return FALSE; } config->PrivateKeyFile = _strdup(tmp1); } - tmp2 = pf_config_get_str(ini, "Certificates", "PrivateKeyContent", FALSE); + tmp2 = pf_config_get_str(ini, section_certificates, key_private_key_content, FALSE); if (tmp2) { if (strlen(tmp2) < 1) { - WLog_ERR(TAG, "Certificates/PrivateKeyContent has invalid empty value"); + WLog_ERR(TAG, "%s/%s has invalid empty value", section_certificates, + key_private_key_content); return FALSE; } config->PrivateKeyContent = _strdup(tmp2); @@ -378,14 +458,20 @@ static BOOL pf_config_load_certificates(wIniFile* ini, proxyConfig* config) if (tmp1 && tmp2) { - WLog_ERR(TAG, "Certificates/PrivateKeyFile and Certificates/PrivateKeyContent are " - "mutually exclusive options"); + WLog_ERR(TAG, + "%s/%s and %s/%s are " + "mutually exclusive options", + section_certificates, key_private_key_file, section_certificates, + key_private_key_content); return FALSE; } else if (!tmp1 && !tmp2) { - WLog_ERR(TAG, "Certificates/PrivateKeyFile or Certificates/PrivateKeyContent are " - "are required settings"); + WLog_ERR(TAG, + "%s/%s or %s/%s are " + "are required settings", + section_certificates, key_private_key_file, section_certificates, + key_private_key_content); return FALSE; } @@ -442,99 +528,108 @@ BOOL pf_server_config_dump(const char* file) return FALSE; /* Proxy server configuration */ - if (IniFile_SetKeyValueString(ini, "Server", "Host", "0.0.0.0") < 0) + if (IniFile_SetKeyValueString(ini, section_server, key_host, "0.0.0.0") < 0) goto fail; - if (IniFile_SetKeyValueInt(ini, "Server", "Port", 3389) < 0) + if (IniFile_SetKeyValueInt(ini, section_server, key_port, 3389) < 0) goto fail; /* Target configuration */ - if (IniFile_SetKeyValueString(ini, "Target", "Host", "somehost.example.com") < 0) + if (IniFile_SetKeyValueString(ini, section_target, key_host, "somehost.example.com") < 0) goto fail; - if (IniFile_SetKeyValueInt(ini, "Target", "Port", 3389) < 0) + if (IniFile_SetKeyValueInt(ini, section_target, key_port, 3389) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Target", "FixedTarget", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_target, key_target_fixed, bool_str_true) < 0) goto fail; /* Channel configuration */ - if (IniFile_SetKeyValueString(ini, "Channels", "GFX", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_gfx, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "DisplayControl", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_disp, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "Clipboard", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_clip, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "AudioInput", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_mic, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "AudioOutput", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_sound, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "DeviceRedirection", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_rdpdr, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "VideoRedirection", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_video, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "CameraRedirection", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_camera, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "RemoteApp", "false") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_rails, bool_str_false) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "PassthroughIsBlacklist", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_blacklist, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "Passthrough", "") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_pass, "") < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Channels", "Intercept", "") < 0) + if (IniFile_SetKeyValueString(ini, section_channels, key_channels_intercept, "") < 0) goto fail; /* Input configuration */ - if (IniFile_SetKeyValueString(ini, "Input", "Keyboard", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_input, key_input_kbd, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Input", "Mouse", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_input, key_input_mouse, bool_str_true) < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Input", "Multitouch", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_input, key_input_multitouch, bool_str_true) < 0) goto fail; /* Security settings */ - if (IniFile_SetKeyValueString(ini, "Security", "ServerTlsSecurity", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_security, key_security_server_tls, bool_str_true) < + 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Security", "ServerNlaSecurity", "false") < 0) + if (IniFile_SetKeyValueString(ini, section_security, key_security_server_nla, bool_str_false) < + 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Security", "ServerRdpSecurity", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_security, key_security_server_rdp, bool_str_true) < + 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Security", "ClientTlsSecurity", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_security, key_security_client_tls, bool_str_true) < + 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Security", "ClientNlaSecurity", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_security, key_security_client_nla, bool_str_true) < + 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Security", "ClientRdpSecurity", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_security, key_security_client_rdp, bool_str_true) < + 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Security", "ClientAllowFallbackToTls", "true") < 0) + if (IniFile_SetKeyValueString(ini, section_security, key_security_client_fallback, + bool_str_true) < 0) goto fail; /* Module configuration */ - if (IniFile_SetKeyValueString(ini, "Plugins", "Modules", "module1,module2,...") < 0) + if (IniFile_SetKeyValueString(ini, section_plugins, key_plugins_modules, + "module1,module2,...") < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Plugins", "Required", "module1,module2,...") < 0) + if (IniFile_SetKeyValueString(ini, section_plugins, key_plugins_required, + "module1,module2,...") < 0) goto fail; /* Clipboard configuration */ - if (IniFile_SetKeyValueString(ini, "Clipboard", "TextOnly", "false") < 0) + if (IniFile_SetKeyValueString(ini, section_clipboard, key_clip_text_only, bool_str_false) < 0) goto fail; - if (IniFile_SetKeyValueInt(ini, "Clipboard", "MaxTextLength", 0) < 0) + if (IniFile_SetKeyValueInt(ini, section_clipboard, key_clip_text_max_len, 0) < 0) goto fail; /* GFX configuration */ - if (IniFile_SetKeyValueString(ini, "GFXSettings", "DecodeGFX", "false") < 0) + if (IniFile_SetKeyValueString(ini, section_gfx_settings, key_gfx_decode, bool_str_false) < 0) goto fail; /* Certificate configuration */ - if (IniFile_SetKeyValueString(ini, "Certificates", "CertificateFile", + if (IniFile_SetKeyValueString(ini, section_certificates, key_cert_file, " OR") < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Certificates", "CertificateContent", + if (IniFile_SetKeyValueString(ini, section_certificates, key_cert_content, "") < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Certificates", "PrivateKeyFile", + if (IniFile_SetKeyValueString(ini, section_certificates, key_private_key_file, " OR") < 0) goto fail; - if (IniFile_SetKeyValueString(ini, "Certificates", "PrivateKeyContent", + if (IniFile_SetKeyValueString(ini, section_certificates, key_private_key_file, "") < 0) goto fail; @@ -613,13 +708,13 @@ void pf_server_config_print(const proxyConfig* config) WINPR_ASSERT(config); WLog_INFO(TAG, "Proxy configuration:"); - CONFIG_PRINT_SECTION("Server"); + CONFIG_PRINT_SECTION(section_server); CONFIG_PRINT_STR(config, Host); CONFIG_PRINT_UINT16(config, Port); if (config->FixedTarget) { - CONFIG_PRINT_SECTION("Target"); + CONFIG_PRINT_SECTION(section_target); CONFIG_PRINT_STR(config, TargetHost); CONFIG_PRINT_UINT16(config, TargetPort); @@ -629,22 +724,21 @@ void pf_server_config_print(const proxyConfig* config) CONFIG_PRINT_STR(config, TargetDomain); } - CONFIG_PRINT_SECTION("Input"); + CONFIG_PRINT_SECTION(section_input); CONFIG_PRINT_BOOL(config, Keyboard); CONFIG_PRINT_BOOL(config, Mouse); CONFIG_PRINT_BOOL(config, Multitouch); - CONFIG_PRINT_SECTION("Server Security"); + CONFIG_PRINT_SECTION(section_security); + CONFIG_PRINT_BOOL(config, ServerNlaSecurity); CONFIG_PRINT_BOOL(config, ServerTlsSecurity); CONFIG_PRINT_BOOL(config, ServerRdpSecurity); - - CONFIG_PRINT_SECTION("Client Security"); CONFIG_PRINT_BOOL(config, ClientNlaSecurity); CONFIG_PRINT_BOOL(config, ClientTlsSecurity); CONFIG_PRINT_BOOL(config, ClientRdpSecurity); CONFIG_PRINT_BOOL(config, ClientAllowFallbackToTls); - CONFIG_PRINT_SECTION("Channels"); + CONFIG_PRINT_SECTION(section_channels); CONFIG_PRINT_BOOL(config, GFX); CONFIG_PRINT_BOOL(config, DisplayControl); CONFIG_PRINT_BOOL(config, Clipboard); @@ -668,25 +762,25 @@ void pf_server_config_print(const proxyConfig* config) pf_server_config_print_list(config->Intercept, config->InterceptCount); } - CONFIG_PRINT_SECTION("Clipboard"); + CONFIG_PRINT_SECTION(section_clipboard); CONFIG_PRINT_BOOL(config, TextOnly); if (config->MaxTextLength > 0) CONFIG_PRINT_UINT32(config, MaxTextLength); - CONFIG_PRINT_SECTION("GFXSettings"); + CONFIG_PRINT_SECTION(section_gfx_settings); CONFIG_PRINT_BOOL(config, DecodeGFX); /* modules */ - CONFIG_PRINT_SECTION("Plugins/Modules"); + CONFIG_PRINT_SECTION_KEY(section_plugins, key_plugins_modules); for (x = 0; x < config->ModulesCount; x++) CONFIG_PRINT_STR(config, Modules[x]); /* Required plugins */ - CONFIG_PRINT_SECTION("Plugins/Required"); + CONFIG_PRINT_SECTION_KEY(section_plugins, key_plugins_required); for (x = 0; x < config->RequiredPluginsCount; x++) CONFIG_PRINT_STR(config, RequiredPlugins[x]); - CONFIG_PRINT_SECTION("Certificates"); + CONFIG_PRINT_SECTION(section_certificates); CONFIG_PRINT_STR(config, CertificateFile); CONFIG_PRINT_STR_CONTENT(config, CertificateContent); CONFIG_PRINT_STR(config, PrivateKeyFile); @@ -863,7 +957,7 @@ static BOOL config_plugin_keyboard_event(proxyPlugin* plugin, proxyData* pdata, WINPR_ASSERT(cfg); rc = cfg->Keyboard; - WLog_DBG(TAG, "%s: %s", __FUNCTION__, rc ? "TRUE" : "FALSE"); + WLog_DBG(TAG, "%s: %s", __FUNCTION__, boolstr(rc)); return rc; } @@ -887,7 +981,7 @@ static BOOL config_plugin_unicode_event(proxyPlugin* plugin, proxyData* pdata, v WINPR_ASSERT(cfg); rc = cfg->Keyboard; - WLog_DBG(TAG, "%s: %s", __FUNCTION__, rc ? "TRUE" : "FALSE"); + WLog_DBG(TAG, "%s: %s", __FUNCTION__, boolstr(rc)); return rc; } @@ -1027,7 +1121,7 @@ static BOOL config_plugin_dynamic_channel_create(proxyPlugin* plugin, proxyData* } WLog_DBG(TAG, "%s: %s [0x%04" PRIx16 "]: %s", __FUNCTION__, channel->channel_name, - channel->channel_id, accept ? "TRUE" : "FALSE"); + channel->channel_id, boolstr(accept)); return accept; } @@ -1080,8 +1174,7 @@ static BOOL config_plugin_channel_create(proxyPlugin* plugin, proxyData* pdata, accept = cfg->RemoteApp; } - WLog_DBG(TAG, "%s: %s [static]: %s", __FUNCTION__, channel->channel_name, - accept ? "TRUE" : "FALSE"); + WLog_DBG(TAG, "%s: %s [static]: %s", __FUNCTION__, channel->channel_name, boolstr(accept)); return accept; }