FreeRDP
Loading...
Searching...
No Matches
Proxy Configuration

Data Structures

struct  proxyConfig
 

Functions

WINPR_ATTR_NODISCARD FREERDP_API BOOL pf_server_config_dump (const char *file)
 pf_server_config_dump Dumps a default INI configuration file
 
FREERDP_API void pf_server_config_free (proxyConfig *config)
 pf_server_config_free Releases all resources associated with proxyConfig
 
FREERDP_API proxyConfig * server_config_load_ini (wIniFile *ini)
 server_config_load_ini Create a proxyConfig from a already loaded INI file.
 
FREERDP_API proxyConfig * pf_server_config_load_file (const char *path)
 pf_server_config_load_file Create a proxyConfig from a INI file found at path.
 
FREERDP_API proxyConfig * pf_server_config_load_buffer (const char *buffer)
 pf_server_config_load_buffer Create a proxyConfig from a memory string buffer in INI file format
 
FREERDP_API void pf_server_config_print (const proxyConfig *config)
 pf_server_config_print Print the configuration to stdout
 
WINPR_ATTR_NODISCARD FREERDP_API size_t pf_config_required_plugins_count (const proxyConfig *config)
 pf_config_required_plugins_count
 
WINPR_ATTR_NODISCARD FREERDP_API const char * pf_config_required_plugin (const proxyConfig *config, size_t index)
 pf_config_required_plugin
 
WINPR_ATTR_NODISCARD FREERDP_API size_t pf_config_modules_count (const proxyConfig *config)
 pf_config_modules_count
 
WINPR_ATTR_NODISCARD FREERDP_API const char ** pf_config_modules (const proxyConfig *config)
 pf_config_modules
 
WINPR_ATTR_NODISCARD FREERDP_API BOOL pf_config_clone (proxyConfig **dst, const proxyConfig *config)
 pf_config_clone Create a copy of the configuration
 
WINPR_ATTR_NODISCARD FREERDP_API BOOL pf_config_plugin (proxyPluginsManager *plugins_manager, void *userdata)
 pf_config_plugin Register a proxy plugin handling event filtering defined in the configuration.
 
WINPR_ATTR_NODISCARD FREERDP_API const char * pf_config_get (const proxyConfig *config, const char *section, const char *key)
 pf_config_get get a value for a section/key
 

Detailed Description

FreeRDP: A Remote Desktop Protocol Implementation FreeRDP Proxy Server

Copyright 2021-2023 Armin Novak armin.nosp@m..nov.nosp@m.ak@th.nosp@m.inca.nosp@m.st.co.nosp@m.m Copyright 2021-2023 Thincast Technologies GmbH

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ pf_config_clone()

WINPR_ATTR_NODISCARD FREERDP_API BOOL pf_config_clone ( proxyConfig **  dst,
const proxyConfig *  config 
)

pf_config_clone Create a copy of the configuration

Parameters
dstA pointer that receives the newly allocated copy
configThe source configuration to copy
Returns
TRUE for success, FALSE otherwise

Definition at line 1135 of file pf_config.c.

1136{
1137 proxyConfig* tmp = calloc(1, sizeof(proxyConfig));
1138
1139 WINPR_ASSERT(dst);
1140 WINPR_ASSERT(config);
1141
1142 if (!tmp)
1143 return FALSE;
1144
1145 *tmp = *config;
1146
1147 if (!pf_config_copy_string(&tmp->Host, config->Host))
1148 goto fail;
1149 if (!pf_config_copy_string(&tmp->SamFile, config->SamFile))
1150 goto fail;
1151 if (!pf_config_copy_string(&tmp->TargetHost, config->TargetHost))
1152 goto fail;
1153 if (!pf_config_copy_string(&tmp->TargetUser, config->TargetUser))
1154 goto fail;
1155 if (!pf_config_copy_string(&tmp->TargetDomain, config->TargetDomain))
1156 goto fail;
1157 if (!pf_config_copy_string(&tmp->TargetPassword, config->TargetPassword))
1158 goto fail;
1159 if (!pf_config_copy_string_n(&tmp->TargetSmartcardCert, config->TargetSmartcardCert,
1160 config->TargetSmartcardCertLength))
1161 goto fail;
1162 if (!pf_config_copy_string_n(&tmp->TargetSmartcardKey, config->TargetSmartcardKey,
1163 config->TargetSmartcardKeyLength))
1164 goto fail;
1165 if (!pf_config_copy_string_list(&tmp->Passthrough, &tmp->PassthroughCount, config->Passthrough,
1166 config->PassthroughCount))
1167 goto fail;
1168 if (!pf_config_copy_string_list(&tmp->Intercept, &tmp->InterceptCount, config->Intercept,
1169 config->InterceptCount))
1170 goto fail;
1171 if (!pf_config_copy_string_list(&tmp->Modules, &tmp->ModulesCount, config->Modules,
1172 config->ModulesCount))
1173 goto fail;
1174 if (!pf_config_copy_string_list(&tmp->RequiredPlugins, &tmp->RequiredPluginsCount,
1175 config->RequiredPlugins, config->RequiredPluginsCount))
1176 goto fail;
1177 if (!pf_config_copy_string(&tmp->CertificateFile, config->CertificateFile))
1178 goto fail;
1179 if (!pf_config_copy_string(&tmp->CertificateContent, config->CertificateContent))
1180 goto fail;
1181 if (!pf_config_copy_string_n(&tmp->CertificatePEM, config->CertificatePEM,
1182 config->CertificatePEMLength))
1183 goto fail;
1184 if (!pf_config_copy_string(&tmp->PrivateKeyFile, config->PrivateKeyFile))
1185 goto fail;
1186 if (!pf_config_copy_string(&tmp->PrivateKeyContent, config->PrivateKeyContent))
1187 goto fail;
1188 if (!pf_config_copy_string_n(&tmp->PrivateKeyPEM, config->PrivateKeyPEM,
1189 config->PrivateKeyPEMLength))
1190 goto fail;
1191
1192 tmp->ini = IniFile_Clone(config->ini);
1193 if (!tmp->ini)
1194 goto fail;
1195
1196 *dst = tmp;
1197 return TRUE;
1198
1199fail:
1200 WINPR_PRAGMA_DIAG_PUSH
1201 WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC
1203 WINPR_PRAGMA_DIAG_POP
1204 return FALSE;
1205}
void pf_server_config_free(proxyConfig *config)
pf_server_config_free Releases all resources associated with proxyConfig
Definition pf_config.c:1032

References pf_server_config_free().

Here is the call graph for this function:

◆ pf_config_get()

WINPR_ATTR_NODISCARD FREERDP_API const char * pf_config_get ( const proxyConfig *  config,
const char *  section,
const char *  key 
)

pf_config_get get a value for a section/key

Parameters
configA pointer to the proxyConfig. Must NOT be nullptr.
sectionThe name of the section the key is in, must not be nullptr
keyThe name of the key to look for. Must not be nullptr
Returns
A pointer to the value for section/key or nullptr if not found

Definition at line 1515 of file pf_config.c.

1516{
1517 WINPR_ASSERT(config);
1518 WINPR_ASSERT(config->ini);
1519 WINPR_ASSERT(section);
1520 WINPR_ASSERT(key);
1521
1522 return IniFile_GetKeyValueString(config->ini, section, key);
1523}

◆ pf_config_modules()

WINPR_ATTR_NODISCARD FREERDP_API const char ** pf_config_modules ( const proxyConfig *  config)

pf_config_modules

Parameters
configA pointer to the proxyConfig. Must NOT be nullptr.
Returns
An array of strings of size pf_config_modules_count with the module names.

Definition at line 1082 of file pf_config.c.

1083{
1084 union
1085 {
1086 char** ppc;
1087 const char** cppc;
1088 } cnv;
1089
1090 WINPR_ASSERT(config);
1091
1092 cnv.ppc = config->Modules;
1093 return cnv.cppc;
1094}

◆ pf_config_modules_count()

WINPR_ATTR_NODISCARD FREERDP_API size_t pf_config_modules_count ( const proxyConfig *  config)

pf_config_modules_count

Parameters
configA pointer to the proxyConfig. Must NOT be nullptr.
Returns
The number of proxy modules configured.

Definition at line 1076 of file pf_config.c.

1077{
1078 WINPR_ASSERT(config);
1079 return config->ModulesCount;
1080}

◆ pf_config_plugin()

WINPR_ATTR_NODISCARD FREERDP_API BOOL pf_config_plugin ( proxyPluginsManager *  plugins_manager,
void *  userdata 
)

pf_config_plugin Register a proxy plugin handling event filtering defined in the configuration.

Parameters
plugins_managerThe plugin manager
userdataA proxyConfig* to use as reference
Returns
TRUE for success, FALSE for failure

Definition at line 1483 of file pf_config.c.

1484{
1485 struct config_plugin_data* custom = nullptr;
1486 proxyPlugin plugin = WINPR_C_ARRAY_INIT;
1487
1488 plugin.name = config_plugin_name;
1489 plugin.description = config_plugin_desc;
1490 plugin.PluginUnload = config_plugin_unload;
1491
1492 plugin.KeyboardEvent = config_plugin_keyboard_event;
1493 plugin.UnicodeEvent = config_plugin_unicode_event;
1494 plugin.MouseEvent = config_plugin_mouse_event;
1495 plugin.MouseExEvent = config_plugin_mouse_ex_event;
1496 plugin.ClientChannelData = config_plugin_client_channel_data;
1497 plugin.ServerChannelData = config_plugin_server_channel_data;
1498 plugin.ChannelCreate = config_plugin_channel_create;
1499 plugin.DynamicChannelCreate = config_plugin_dynamic_channel_create;
1500 plugin.userdata = userdata;
1501
1502 custom = calloc(1, sizeof(struct config_plugin_data));
1503 if (!custom)
1504 return FALSE;
1505
1506 custom->mgr = plugins_manager;
1507 custom->config = userdata;
1508
1509 plugin.custom = custom;
1510 plugin.userdata = userdata;
1511
1512 return plugins_manager->RegisterPlugin(plugins_manager, &plugin);
1513}

◆ pf_config_required_plugin()

WINPR_ATTR_NODISCARD FREERDP_API const char * pf_config_required_plugin ( const proxyConfig *  config,
size_t  index 
)

pf_config_required_plugin

Parameters
configA pointer to the proxyConfig. Must NOT be nullptr.
indexThe index of the plugin to return
Returns
The name of the plugin or nullptr.

Definition at line 1067 of file pf_config.c.

1068{
1069 WINPR_ASSERT(config);
1070 if (index >= config->RequiredPluginsCount)
1071 return nullptr;
1072
1073 return config->RequiredPlugins[index];
1074}

◆ pf_config_required_plugins_count()

WINPR_ATTR_NODISCARD FREERDP_API size_t pf_config_required_plugins_count ( const proxyConfig *  config)

pf_config_required_plugins_count

Parameters
configA pointer to the proxyConfig. Must NOT be nullptr.
Returns
The number of required plugins configured.

Definition at line 1061 of file pf_config.c.

1062{
1063 WINPR_ASSERT(config);
1064 return config->RequiredPluginsCount;
1065}

◆ pf_server_config_dump()

WINPR_ATTR_NODISCARD FREERDP_API BOOL pf_server_config_dump ( const char *  file)

pf_server_config_dump Dumps a default INI configuration file

Parameters
fileThe file to write to. Existing files are truncated.
Returns
TRUE for success, FALSE if the file could not be written.

Definition at line 731 of file pf_config.c.

732{
733 BOOL rc = FALSE;
734 wIniFile* ini = IniFile_New();
735 if (!ini)
736 return FALSE;
737
738 /* Proxy server configuration */
739 if (IniFile_SetKeyValueString(ini, section_server, key_host, "0.0.0.0") < 0)
740 goto fail;
741 if (IniFile_SetKeyValueInt(ini, section_server, key_port, 3389) < 0)
742 goto fail;
743 if (IniFile_SetKeyValueString(ini, section_server, key_sam_file,
744 "optional/path/some/file.sam") < 0)
745 goto fail;
746
747 /* Target configuration */
748 if (IniFile_SetKeyValueString(ini, section_target, key_host, "somehost.example.com") < 0)
749 goto fail;
750 if (IniFile_SetKeyValueInt(ini, section_target, key_port, 3389) < 0)
751 goto fail;
752 if (IniFile_SetKeyValueString(ini, section_target, key_target_fixed, bool_str_true) < 0)
753 goto fail;
754 if (IniFile_SetKeyValueInt(ini, section_target, key_target_tls_seclevel, 1) < 0)
755 goto fail;
756 if (IniFile_SetKeyValueString(ini, section_target, key_target_user, "optionaltargetuser") < 0)
757 goto fail;
758 if (IniFile_SetKeyValueString(ini, section_target, key_target_domain, "optionaltargetdomain") <
759 0)
760 goto fail;
761 if (IniFile_SetKeyValueString(ini, section_target, key_target_pwd, "optionaltargetpassword") <
762 0)
763 goto fail;
764 if (IniFile_SetKeyValueString(ini, section_target, key_target_scard_auth, bool_str_false) < 0)
765 goto fail;
766 if (IniFile_SetKeyValueString(ini, section_target, key_target_scard_cert,
767 "optional/path/some/file.pem.crt") < 0)
768 goto fail;
769 if (IniFile_SetKeyValueString(ini, section_target, key_target_scard_pem_cert,
770 "<base64 encoded PEM>") < 0)
771 goto fail;
772 if (IniFile_SetKeyValueString(ini, section_target, key_target_scard_key,
773 "optional/path/some/file.pem.key") < 0)
774 goto fail;
775
776 if (IniFile_SetKeyValueString(ini, section_target, key_target_scard_pem_key,
777 "<base64 encoded PEM>") < 0)
778 goto fail;
779 /* Codec configuration */
780 if (IniFile_SetKeyValueString(ini, section_codecs, key_codecs_rfx, bool_str_true) < 0)
781 goto fail;
782 if (IniFile_SetKeyValueString(ini, section_codecs, key_codecs_nsc, bool_str_true) < 0)
783 goto fail;
784
785 /* Channel configuration */
786 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_gfx, bool_str_true) < 0)
787 goto fail;
788 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_disp, bool_str_true) < 0)
789 goto fail;
790 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_clip, bool_str_true) < 0)
791 goto fail;
792 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_mic, bool_str_true) < 0)
793 goto fail;
794 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_sound, bool_str_true) < 0)
795 goto fail;
796 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_rdpdr, bool_str_true) < 0)
797 goto fail;
798 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_video, bool_str_true) < 0)
799 goto fail;
800 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_camera, bool_str_true) < 0)
801 goto fail;
802 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_rails, bool_str_false) < 0)
803 goto fail;
804
805 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_blacklist, bool_str_true) < 0)
806 goto fail;
807 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_pass, "") < 0)
808 goto fail;
809 if (IniFile_SetKeyValueString(ini, section_channels, key_channels_intercept, "") < 0)
810 goto fail;
811
812 /* Input configuration */
813 if (IniFile_SetKeyValueString(ini, section_input, key_input_kbd, bool_str_true) < 0)
814 goto fail;
815 if (IniFile_SetKeyValueString(ini, section_input, key_input_mouse, bool_str_true) < 0)
816 goto fail;
817 if (IniFile_SetKeyValueString(ini, section_input, key_input_multitouch, bool_str_true) < 0)
818 goto fail;
819
820 /* Security settings */
821 if (IniFile_SetKeyValueString(ini, section_security, key_security_server_tls, bool_str_true) <
822 0)
823 goto fail;
824 if (IniFile_SetKeyValueString(ini, section_security, key_security_server_nla, bool_str_false) <
825 0)
826 goto fail;
827 if (IniFile_SetKeyValueString(ini, section_security, key_security_server_rdp, bool_str_true) <
828 0)
829 goto fail;
830
831 if (IniFile_SetKeyValueString(ini, section_security, key_security_client_tls, bool_str_true) <
832 0)
833 goto fail;
834 if (IniFile_SetKeyValueString(ini, section_security, key_security_client_nla, bool_str_true) <
835 0)
836 goto fail;
837 if (IniFile_SetKeyValueString(ini, section_security, key_security_client_rdp, bool_str_true) <
838 0)
839 goto fail;
840 if (IniFile_SetKeyValueString(ini, section_security, key_security_client_fallback,
841 bool_str_true) < 0)
842 goto fail;
843
844 /* Module configuration */
845 if (IniFile_SetKeyValueString(ini, section_plugins, key_plugins_modules,
846 "module1,module2,...") < 0)
847 goto fail;
848 if (IniFile_SetKeyValueString(ini, section_plugins, key_plugins_required,
849 "module1,module2,...") < 0)
850 goto fail;
851
852 /* Certificate configuration */
853 if (IniFile_SetKeyValueString(ini, section_certificates, key_cert_file,
854 "<absolute path to some certificate file> OR") < 0)
855 goto fail;
856 if (IniFile_SetKeyValueString(ini, section_certificates, key_cert_content,
857 "<base64 encoded PEM>") < 0)
858 goto fail;
859
860 if (IniFile_SetKeyValueString(ini, section_certificates, key_private_key_file,
861 "<absolute path to some private key file> OR") < 0)
862 goto fail;
863 if (IniFile_SetKeyValueString(ini, section_certificates, key_private_key_content,
864 "<base64 encoded PEM>") < 0)
865 goto fail;
866
867 if ((strcmp("stdout", file) == 0) || (strcmp("stderr", file) == 0))
868 {
869 char* buffer = IniFile_WriteBuffer(ini);
870 if (!buffer)
871 goto fail;
872 FILE* fp = stderr;
873 if (strcmp("stdout", file) == 0)
874 fp = stdout;
875 (void)fprintf(fp, "%s", buffer);
876 zfree(buffer);
877 }
878 else
879 {
880 /* store configuration */
881 if (IniFile_WriteFile(ini, file) < 0)
882 goto fail;
883 }
884
885 rc = TRUE;
886
887fail:
888 IniFile_Free(ini);
889 return rc;
890}

◆ pf_server_config_free()

FREERDP_API void pf_server_config_free ( proxyConfig *  config)

pf_server_config_free Releases all resources associated with proxyConfig

Parameters
configA pointer to the proxyConfig to clean up. Might be nullptr.

Definition at line 1032 of file pf_config.c.

1033{
1034 if (config == nullptr)
1035 return;
1036
1037 zfree(config->Host);
1038 zfree(config->SamFile);
1039 zfree(config->TargetHost);
1040 zfree(config->TargetUser);
1041 zfree(config->TargetDomain);
1042 zfree(config->TargetPassword);
1043 znfree(config->TargetSmartcardCert, config->TargetSmartcardCertLength);
1044 znfree(config->TargetSmartcardKey, config->TargetSmartcardKeyLength);
1045
1046 CommandLineParserFree(config->Passthrough);
1047 CommandLineParserFree(config->Intercept);
1048 CommandLineParserFree(config->Modules);
1049 CommandLineParserFree(config->RequiredPlugins);
1050
1051 zfree(config->CertificateFile);
1052 zfree(config->CertificateContent);
1053 znfree(config->CertificatePEM, config->CertificatePEMLength);
1054 zfree(config->PrivateKeyFile);
1055 zfree(config->PrivateKeyContent);
1056 znfree(config->PrivateKeyPEM, config->PrivateKeyPEMLength);
1057 IniFile_Free(config->ini);
1058 free(config);
1059}

Referenced by pf_config_clone(), and server_config_load_ini().

Here is the caller graph for this function:

◆ pf_server_config_load_buffer()

FREERDP_API proxyConfig * pf_server_config_load_buffer ( const char *  buffer)

pf_server_config_load_buffer Create a proxyConfig from a memory string buffer in INI file format

Parameters
bufferA pointer to the '\0' terminated INI string.
Returns
A proxyConfig or nullptr in case of failure.

Definition at line 892 of file pf_config.c.

893{
894 proxyConfig* config = nullptr;
895 wIniFile* ini = nullptr;
896
897 ini = IniFile_New();
898
899 if (!ini)
900 {
901 WLog_ERR(TAG, "IniFile_New() failed!");
902 return nullptr;
903 }
904
905 if (IniFile_ReadBuffer(ini, buffer) < 0)
906 {
907 WLog_ERR(TAG, "failed to parse ini: '%s'", buffer);
908 goto out;
909 }
910
911 config = server_config_load_ini(ini);
912out:
913 IniFile_Free(ini);
914 return config;
915}
proxyConfig * server_config_load_ini(wIniFile *ini)
server_config_load_ini Create a proxyConfig from a already loaded INI file.
Definition pf_config.c:681

References server_config_load_ini().

Here is the call graph for this function:

◆ pf_server_config_load_file()

FREERDP_API proxyConfig * pf_server_config_load_file ( const char *  path)

pf_server_config_load_file Create a proxyConfig from a INI file found at path.

Parameters
pathThe path of the INI file
Returns
A proxyConfig or nullptr in case of failure.

Definition at line 917 of file pf_config.c.

918{
919 proxyConfig* config = nullptr;
920 wIniFile* ini = IniFile_New();
921
922 if (!ini)
923 {
924 WLog_ERR(TAG, "IniFile_New() failed!");
925 return nullptr;
926 }
927
928 if (IniFile_ReadFile(ini, path) < 0)
929 {
930 WLog_ERR(TAG, "failed to parse ini file: '%s'", path);
931 goto out;
932 }
933
934 config = server_config_load_ini(ini);
935out:
936 IniFile_Free(ini);
937 return config;
938}

References server_config_load_ini().

Here is the call graph for this function:

◆ pf_server_config_print()

FREERDP_API void pf_server_config_print ( const proxyConfig *  config)

pf_server_config_print Print the configuration to stdout

Parameters
configA pointer to the configuration to print. Must NOT be nullptr.

Definition at line 947 of file pf_config.c.

948{
949 WINPR_ASSERT(config);
950 WLog_INFO(TAG, "Proxy configuration:");
951
952 CONFIG_PRINT_SECTION(section_server);
953 CONFIG_PRINT_STR(config, Host);
954 CONFIG_PRINT_STR(config, SamFile);
955 CONFIG_PRINT_UINT16(config, Port);
956
957 if (config->FixedTarget)
958 {
959 CONFIG_PRINT_SECTION(section_target);
960 CONFIG_PRINT_STR(config, TargetHost);
961 CONFIG_PRINT_UINT16(config, TargetPort);
962 CONFIG_PRINT_UINT32(config, TargetTlsSecLevel);
963
964 CONFIG_PRINT_STR(config, TargetUser);
965 CONFIG_PRINT_STR(config, TargetDomain);
966 CONFIG_PRINT_SECRET_STR(config, TargetPassword);
967
968 CONFIG_PRINT_BOOL(config, TargetSmartcardAuth);
969 CONFIG_PRINT_SECRET_STR(config, TargetSmartcardCert);
970 CONFIG_PRINT_SECRET_STR(config, TargetSmartcardKey);
971 }
972
973 CONFIG_PRINT_SECTION(section_input);
974 CONFIG_PRINT_BOOL(config, Keyboard);
975 CONFIG_PRINT_BOOL(config, Mouse);
976 CONFIG_PRINT_BOOL(config, Multitouch);
977
978 CONFIG_PRINT_SECTION(section_security);
979 CONFIG_PRINT_BOOL(config, ServerNlaSecurity);
980 CONFIG_PRINT_BOOL(config, ServerTlsSecurity);
981 CONFIG_PRINT_BOOL(config, ServerRdpSecurity);
982 CONFIG_PRINT_BOOL(config, ClientNlaSecurity);
983 CONFIG_PRINT_BOOL(config, ClientTlsSecurity);
984 CONFIG_PRINT_BOOL(config, ClientRdpSecurity);
985 CONFIG_PRINT_BOOL(config, ClientAllowFallbackToTls);
986
987 CONFIG_PRINT_SECTION(section_codecs);
988 CONFIG_PRINT_BOOL(config, RFX);
989 CONFIG_PRINT_BOOL(config, NSC);
990
991 CONFIG_PRINT_SECTION(section_channels);
992 CONFIG_PRINT_BOOL(config, GFX);
993 CONFIG_PRINT_BOOL(config, DisplayControl);
994 CONFIG_PRINT_BOOL(config, Clipboard);
995 CONFIG_PRINT_BOOL(config, AudioOutput);
996 CONFIG_PRINT_BOOL(config, AudioInput);
997 CONFIG_PRINT_BOOL(config, DeviceRedirection);
998 CONFIG_PRINT_BOOL(config, VideoRedirection);
999 CONFIG_PRINT_BOOL(config, CameraRedirection);
1000 CONFIG_PRINT_BOOL(config, RemoteApp);
1001 CONFIG_PRINT_BOOL(config, PassthroughIsBlacklist);
1002
1003 if (config->PassthroughCount)
1004 {
1005 WLog_INFO(TAG, "\tStatic Channels Proxy:");
1006 pf_server_config_print_list(config->Passthrough, config->PassthroughCount);
1007 }
1008
1009 if (config->InterceptCount)
1010 {
1011 WLog_INFO(TAG, "\tStatic Channels Proxy-Intercept:");
1012 pf_server_config_print_list(config->Intercept, config->InterceptCount);
1013 }
1014
1015 /* modules */
1016 CONFIG_PRINT_SECTION_KEY(section_plugins, key_plugins_modules);
1017 for (size_t x = 0; x < config->ModulesCount; x++)
1018 CONFIG_PRINT_STR(config, Modules[x]);
1019
1020 /* Required plugins */
1021 CONFIG_PRINT_SECTION_KEY(section_plugins, key_plugins_required);
1022 for (size_t x = 0; x < config->RequiredPluginsCount; x++)
1023 CONFIG_PRINT_STR(config, RequiredPlugins[x]);
1024
1025 CONFIG_PRINT_SECTION(section_certificates);
1026 CONFIG_PRINT_STR(config, CertificateFile);
1027 CONFIG_PRINT_SECRET_STR(config, CertificateContent);
1028 CONFIG_PRINT_STR(config, PrivateKeyFile);
1029 CONFIG_PRINT_SECRET_STR(config, PrivateKeyContent);
1030}

◆ server_config_load_ini()

FREERDP_API proxyConfig * server_config_load_ini ( wIniFile *  ini)

server_config_load_ini Create a proxyConfig from a already loaded INI file.

Parameters
iniA pointer to the parsed INI file. Must NOT be nullptr.
Returns
A proxyConfig or nullptr in case of failure.

Definition at line 681 of file pf_config.c.

682{
683 proxyConfig* config = nullptr;
684
685 WINPR_ASSERT(ini);
686
687 config = calloc(1, sizeof(proxyConfig));
688 if (config)
689 {
690 /* Set default values != 0 */
691 config->TargetTlsSecLevel = 1;
692
693 /* Load from ini */
694 if (!pf_config_load_server(ini, config))
695 goto out;
696
697 if (!pf_config_load_target(ini, config))
698 goto out;
699
700 if (!pf_config_load_codecs(ini, config))
701 goto out;
702
703 if (!pf_config_load_channels(ini, config))
704 goto out;
705
706 if (!pf_config_load_input(ini, config))
707 goto out;
708
709 if (!pf_config_load_security(ini, config))
710 goto out;
711
712 if (!pf_config_load_modules(ini, config))
713 goto out;
714
715 if (!pf_config_load_certificates(ini, config))
716 goto out;
717 config->ini = IniFile_Clone(ini);
718 if (!config->ini)
719 goto out;
720 }
721 return config;
722out:
723 WINPR_PRAGMA_DIAG_PUSH
724 WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC
725 pf_server_config_free(config);
726 WINPR_PRAGMA_DIAG_POP
727
728 return nullptr;
729}

References pf_server_config_free().

Referenced by pf_server_config_load_buffer(), and pf_server_config_load_file().

Here is the call graph for this function:
Here is the caller graph for this function: