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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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: