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 1133 of file pf_config.c.

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

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 1513 of file pf_config.c.

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

◆ 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 1080 of file pf_config.c.

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

◆ 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 1074 of file pf_config.c.

1075{
1076 WINPR_ASSERT(config);
1077 return config->ModulesCount;
1078}

◆ 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 1481 of file pf_config.c.

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

◆ 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 1065 of file pf_config.c.

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

◆ 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 1059 of file pf_config.c.

1060{
1061 WINPR_ASSERT(config);
1062 return config->RequiredPluginsCount;
1063}

◆ 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 729 of file pf_config.c.

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

◆ 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 1030 of file pf_config.c.

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

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 890 of file pf_config.c.

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

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 915 of file pf_config.c.

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

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 945 of file pf_config.c.

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

◆ 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 679 of file pf_config.c.

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

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: