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
 
WINPR_ATTR_NODISCARD FREERDP_API proxyConfig * server_config_load_ini (wIniFile *ini)
 server_config_load_ini Create a proxyConfig from a already loaded INI file.
 
WINPR_ATTR_NODISCARD 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.
 
WINPR_ATTR_NODISCARD 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 1124 of file pf_config.c.

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

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

1503{
1504 WINPR_ASSERT(config);
1505 WINPR_ASSERT(config->ini);
1506 WINPR_ASSERT(section);
1507 WINPR_ASSERT(key);
1508
1509 return IniFile_GetKeyValueString(config->ini, section, key);
1510}

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

1072{
1073 union
1074 {
1075 char** ppc;
1076 const char** cppc;
1077 } cnv;
1078
1079 WINPR_ASSERT(config);
1080
1081 cnv.ppc = config->Modules;
1082 return cnv.cppc;
1083}

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

1066{
1067 WINPR_ASSERT(config);
1068 return config->ModulesCount;
1069}

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

1471{
1472 struct config_plugin_data* custom = nullptr;
1473 proxyPlugin plugin = WINPR_C_ARRAY_INIT;
1474
1475 plugin.name = config_plugin_name;
1476 plugin.description = config_plugin_desc;
1477 plugin.PluginUnload = config_plugin_unload;
1478
1479 plugin.KeyboardEvent = config_plugin_keyboard_event;
1480 plugin.UnicodeEvent = config_plugin_unicode_event;
1481 plugin.MouseEvent = config_plugin_mouse_event;
1482 plugin.MouseExEvent = config_plugin_mouse_ex_event;
1483 plugin.ClientChannelData = config_plugin_client_channel_data;
1484 plugin.ServerChannelData = config_plugin_server_channel_data;
1485 plugin.ChannelCreate = config_plugin_channel_create;
1486 plugin.DynamicChannelCreate = config_plugin_dynamic_channel_create;
1487 plugin.userdata = userdata;
1488
1489 custom = calloc(1, sizeof(struct config_plugin_data));
1490 if (!custom)
1491 return FALSE;
1492
1493 custom->mgr = plugins_manager;
1494 custom->config = userdata;
1495
1496 plugin.custom = custom;
1497 plugin.userdata = userdata;
1498
1499 return plugins_manager->RegisterPlugin(plugins_manager, &plugin);
1500}

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

1057{
1058 WINPR_ASSERT(config);
1059 if (index >= config->RequiredPluginsCount)
1060 return nullptr;
1061
1062 return config->RequiredPlugins[index];
1063}

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

1051{
1052 WINPR_ASSERT(config);
1053 return config->RequiredPluginsCount;
1054}

◆ 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_rdp, bool_str_true) <
817 0)
818 goto fail;
819
820 if (IniFile_SetKeyValueString(ini, section_security, key_security_client_tls, bool_str_true) <
821 0)
822 goto fail;
823 if (IniFile_SetKeyValueString(ini, section_security, key_security_client_nla, bool_str_true) <
824 0)
825 goto fail;
826 if (IniFile_SetKeyValueString(ini, section_security, key_security_client_rdp, bool_str_true) <
827 0)
828 goto fail;
829 if (IniFile_SetKeyValueString(ini, section_security, key_security_client_fallback,
830 bool_str_true) < 0)
831 goto fail;
832
833 /* Module configuration */
834 if (IniFile_SetKeyValueString(ini, section_plugins, key_plugins_modules,
835 "module1,module2,...") < 0)
836 goto fail;
837 if (IniFile_SetKeyValueString(ini, section_plugins, key_plugins_required,
838 "module1,module2,...") < 0)
839 goto fail;
840
841 /* Certificate configuration */
842 if (IniFile_SetKeyValueString(ini, section_certificates, key_cert_file,
843 "<absolute path to some certificate file> OR") < 0)
844 goto fail;
845 if (IniFile_SetKeyValueString(ini, section_certificates, key_cert_content,
846 "<base64 encoded PEM>") < 0)
847 goto fail;
848
849 if (IniFile_SetKeyValueString(ini, section_certificates, key_private_key_file,
850 "<absolute path to some private key file> OR") < 0)
851 goto fail;
852 if (IniFile_SetKeyValueString(ini, section_certificates, key_private_key_content,
853 "<base64 encoded PEM>") < 0)
854 goto fail;
855
856 if ((strcmp("stdout", file) == 0) || (strcmp("stderr", file) == 0))
857 {
858 char* buffer = IniFile_WriteBuffer(ini);
859 if (!buffer)
860 goto fail;
861 FILE* fp = stderr;
862 if (strcmp("stdout", file) == 0)
863 fp = stdout;
864 (void)fprintf(fp, "%s", buffer);
865 zfree(buffer);
866 }
867 else
868 {
869 /* store configuration */
870 if (IniFile_WriteFile(ini, file) < 0)
871 goto fail;
872 }
873
874 rc = TRUE;
875
876fail:
877 IniFile_Free(ini);
878 return rc;
879}

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

1022{
1023 if (config == nullptr)
1024 return;
1025
1026 zfree(config->Host);
1027 zfree(config->SamFile);
1028 zfree(config->TargetHost);
1029 zfree(config->TargetUser);
1030 zfree(config->TargetDomain);
1031 zfree(config->TargetPassword);
1032 zfree(config->TargetSmartcardCert);
1033 zfree(config->TargetSmartcardKey);
1034
1035 CommandLineParserFree(config->Passthrough);
1036 CommandLineParserFree(config->Intercept);
1037 CommandLineParserFree(config->Modules);
1038 CommandLineParserFree(config->RequiredPlugins);
1039
1040 zfree(config->CertificateFile);
1041 zfree(config->CertificateContent);
1042 znfree(config->CertificatePEM, config->CertificatePEMLength);
1043 zfree(config->PrivateKeyFile);
1044 zfree(config->PrivateKeyContent);
1045 znfree(config->PrivateKeyPEM, config->PrivateKeyPEMLength);
1046 IniFile_Free(config->ini);
1047 free(config);
1048}

Referenced by pf_config_clone(), and server_config_load_ini().

Here is the caller graph for this function:

◆ pf_server_config_load_buffer()

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

882{
883 proxyConfig* config = nullptr;
884 wIniFile* ini = nullptr;
885
886 ini = IniFile_New();
887
888 if (!ini)
889 {
890 WLog_ERR(TAG, "IniFile_New() failed!");
891 return nullptr;
892 }
893
894 if (IniFile_ReadBuffer(ini, buffer) < 0)
895 {
896 WLog_ERR(TAG, "failed to parse ini: '%s'", buffer);
897 goto out;
898 }
899
900 config = server_config_load_ini(ini);
901out:
902 IniFile_Free(ini);
903 return config;
904}
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()

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

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

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

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

◆ server_config_load_ini()

WINPR_ATTR_NODISCARD 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: