diff options
Diffstat (limited to 'mod_gsoap/gsoap_win/wininet/gsoapWinInet.h')
-rw-r--r-- | mod_gsoap/gsoap_win/wininet/gsoapWinInet.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/mod_gsoap/gsoap_win/wininet/gsoapWinInet.h b/mod_gsoap/gsoap_win/wininet/gsoapWinInet.h new file mode 100644 index 0000000..fff289a --- /dev/null +++ b/mod_gsoap/gsoap_win/wininet/gsoapWinInet.h @@ -0,0 +1,142 @@ +/* + * File: gsoapWinInet2.h + * + * Authors: 26 May 2003: Jack Kustanowitz (jackk@atomica.com) + * Original version + * + * 29 September 2003: Brodie Thiesfield (bt@jellycan.com) + * Rewritten as C plugin for gsoap. Bugs fixed and features added. + * + * 14 January 2004: Brodie Thiesfield (bt@jellycan.com) + * Bug fix. + * + * Purpose: Allow gsoap clients (not servers) to direct all communications + * through the WinInet API. This automatically provides all of the + * proxy and authentication features supported by the control panel + * 'Internet Options' dialog to the client. As these options are + * shared by IE, this means that "if IE works, gsoap works." + * + * Features: + * + gsoap plugin - extremely easy to use + * + complete support for: + * - HTTP/1.0 and HTTP/1.1 + * - HTTPS (no extra libraries are required) + * - HTTP authentication + * - Proxy servers (simple, automatic discovery, etc) + * - Proxy authentication (basic, NTLM, etc) + * + authentication prompts and HTTPS warnings (e.g. invalid HTTPS CA) + * can be resolved by the user via standard system dialog boxes. + * + message size is limited only by available memory + * + connect, receive and send timeouts are used + * + supports all SOAP_IO types (see limitations) + * + written completely in C, can be used in C, C++, and MFC projects + * without modification (anywhere that gsoap is used) + * + can be used in both MBCS and UNICODE projects + * + compiles cleanly at warning level 4 (if gsoap uses SOAP_SOCKET + * for the definition of sockets instead of int, it will also + * compile without win64 warnings). + * + all debug trace goes to the gsoap TEST.log file + * + supports multiple threads (all plugin data is stored in the + * soap structure - no static variables) + * + * Limitations: + * - DIME attachments are not supported + * - may internally buffer the entire outgoing message before sending + * (if the serialized message is larger then SOAP_BUFLEN, or if + * SOAP_IO_CHUNK mode is being used then the entire message will + * be buffered) + * + * Usage: Add the gsoapWinInet2.h and gsoapWinInet2.cpp files to your project + * (if you have a C project, rename gsoapWinInet2.cpp to .c and use + * it as is). Ensure that you turn off precompiled headers for the + * .cpp file. + * + * In your source, just after calling soap_init(), register this + * plugin with soap_register_plugin( soap, wininet_plugin ). + * + * e.g. + * struct soap soap; + * soap_init( &soap ); + * soap_register_plugin( &soap, wininet_plugin ); + * soap.connect_timeout = 5; // this will be used by wininet too + * ... + * soap_done(&soap); + * + * Notes: For extra control, you may also register this plugin using the + * soap_register_plugin_arg() function, and supply as the argument + * flags which you wished to be passed to HttpOpenRequest. + * + * e.g. + * struct soap soap; + * soap_init( &soap ); + * soap_register_plugin_arg( &soap, wininet_plugin, + * (void*) INTERNET_FLAG_IGNORE_CERT_CN_INVALID ); + * + * See the MSDN documentation on HttpOpenRequest for details of + * available flags. The <wininet.h> header file is required for the + * definitions of the flags. Some flags which may be useful are: + * + * INTERNET_FLAG_KEEP_CONNECTION + * Uses keep-alive semantics, if available, for the connection. + * This flag is required for Microsoft Network (MSN), NT LAN + * Manager (NTLM), and other types of authentication. + * ++ Note that this flag is used automatically when soap.omode + * has the SOAP_IO_KEEPALIVE flag set. ++ + * + * INTERNET_FLAG_IGNORE_CERT_CN_INVALID + * Disables Microsoft Win32 Internet function checking of SSL/PCT- + * based certificates that are returned from the server against + * the host name given in the request. + * + * INTERNET_FLAG_IGNORE_CERT_DATE_INVALID + * Disables Win32 Internet function checking of SSL/PCT-based + * certificates for proper validity dates. + * + * This plugin uses the following callback functions and is not + * compatible with any other plugin that uses these functions. + * + * soap->fopen + * soap->fposthdr + * soap->fsend + * soap->frecv + * soap->fclose + * + * If there are errors in sending the HTTP request which would + * cause a dialog box to be displayed in IE (for instance, invalid + * certificates on an HTTPS connection), then a dialog will also + * be displayed by this library. At the moment is is not possible + * to disable the UI. If you wish to remove the UI then you will + * need to hack the source to remove the dialog box and resolve the + * errors programmatically, or supply the appropriate flags in + * soap_register_plugin_arg() to disable the unwanted warnings. + * + * Because messages are buffered internally to gsoapWinInet2 plugin + * it is recommended that the SOAP_IO_STORE flag is not used otherwise + * the message may be buffered twice on every send. Use the default + * flag SOAP_IO_BUFFER, or SOAP_IO_FLUSH. + * + * Redistribution: + * Feel free to use, improve, and share. I would appreciate + * notification of any bugs found/fixed, or improvements made. This + * code has not been extensively tested, so use at your own risk. + */ +#ifndef INCLUDED_gsoapWinInet2_h +#define INCLUDED_gsoapWinInet2_h + +#include <stdsoap2.h> + +#ifdef __cplusplus +extern "C" { +#endif + +extern int +wininet_plugin( + struct soap * a_pSoap, + struct soap_plugin * a_pPluginData, + void * a_pUnused ); + +#ifdef __cplusplus +} +#endif + +#endif // INCLUDED_gsoapWinInet2_h |