refproxy.html 8.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_session_proxy</title><link rel="stylesheet" type="text/css" href="manual.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsess.html" title="ne_session_create"><link rel="next" href="refsessflags.html" title="ne_set_session_flag"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_session_proxy</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsess.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsessflags.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refproxy"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_session_proxy, ne_session_socks_proxy, ne_session_system_proxy, ne_set_addrlist — configure proxy servers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;ne_session.h&gt;</pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_system_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">flags</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_socks_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>enum ne_sock_sversion <var class="pdparam">version</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">username</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_addrlist</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const ne_inet_addr **<var class="pdparam">addrlist</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">count</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="id2943"></a><h2>Description</h2><p>One (and no more than one) of the functions
  2. <code class="function">ne_session_proxy</code>,
  3. <code class="function">ne_session_system_proxy</code>,
  4. <code class="function">ne_session_socks_proxy</code>,
  5. <code class="function">ne_set_addrlist</code> can be used to configure
  6. a proxy server for a given session object. If more than one
  7. function is invoked for any given session object, only the
  8. last call has effect. If one of the functions is to be used,
  9. it must be used before the creation of any request object for
  10. the session.</p><div class="refsect2"><a name="id2950"></a><h3>HTTP proxy specification</h3><p>The <code class="function">ne_session_proxy</code> function
  11. configures use of an HTTP proxy server for the session, the
  12. location of which is given by the
  13. <code class="parameter">hostname</code> and
  14. <code class="parameter">port</code> parameters. If the proxy
  15. requires authentication, <a class="xref" href="refauth.html#ne_set_proxy_auth">ne_set_proxy_auth</a>
  16. should be used.</p></div><div class="refsect2"><a name="id2957"></a><h3>System proxy configuration</h3><p>The <code class="function">ne_session_system_proxy</code>
  17. function configures the session to use any proxy servers
  18. specified by the system configuration. Support for this
  19. function is platform-specific; if unsupported, the function
  20. has no effect.</p></div><div class="refsect2"><a name="id2961"></a><h3>SOCKS proxy configuration</h3><p>The <code class="function">ne_session_socks_proxy</code>
  21. function configures the session to use a SOCKS proxy. The
  22. <code class="parameter">version</code> indicates which version of
  23. the SOCKS protocol should be used. The
  24. <code class="parameter">hostname</code> and
  25. <code class="parameter">port</code> parameters specify the SOCKS
  26. proxy location. Note that a server with only an IPv6
  27. address cannot be used with SOCKS v4 or v4A. The
  28. interpretation of the other arguments depends on the version
  29. specified:</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_SOCK_SOCKSV4</code> (version 4)</span></p></td><td>The <code class="parameter">username</code> parameter
  30. must be non-<code class="literal">NULL</code>; the <code class="parameter">password</code>
  31. parameter is ignored.</td></tr><tr><td><p><span class="term"><code class="constant">NE_SOCK_SOCKSV4A</code> (version 4A)</span></p></td><td>The <code class="parameter">username</code> parameter
  32. must be non-<code class="literal">NULL</code>; the <code class="parameter">password</code>
  33. parameter is ignored.</td></tr><tr><td><p><span class="term"><code class="constant">NE_SOCK_SOCKSV5</code> (version 5)</span></p></td><td>The <code class="parameter">username</code> parameter
  34. may be <code class="literal">NULL</code>; if it is non-<code class="literal">NULL</code>,
  35. the <code class="parameter">password</code> parameter must also
  36. be non-<code class="literal">NULL</code>; otherwise, it is ignored..</td></tr></tbody></table></div></div><div class="refsect2"><a name="id2995"></a><h3>Origin server address override</h3><p>The <code class="function">ne_set_addrlist</code> function
  37. forces use of an address and port the a specified list when
  38. establishing a TCP connection, ignoring the "real" hostname
  39. and port identifying the origin server for the session (as
  40. passed to <code class="function">ne_session_create</code>). The
  41. origin server's "real" hostname and port will still be used
  42. in the <code class="literal">Host</code> header in HTTP requests.
  43. When a connection is required, the library will iterate
  44. through the <code class="parameter">addrlist</code> list, attempting
  45. to connect to the address <code class="parameter">addrlist[0]</code>
  46. through to <code class="parameter">addrlist[count-1]</code> in turn,
  47. until a connection can be established.</p></div></div><div class="refsect1"><a name="id3004"></a><h2>Return Values</h2><p>None of the functions described here has a return
  48. value.</p></div><div class="refsect1"><a name="id3007"></a><h2>Examples</h2><p>Create and destroy a session:</p><pre class="programlisting">ne_session *sess;
  49. sess = ne_session_create("http", "host.example.com", 80);
  50. ne_session_proxy(sess, "proxy.example.com", 3128);
  51. /* ... use sess ... */
  52. ne_session_destroy(sess);
  53. </pre></div><div class="refsect1"><a name="id3011"></a><h2>See Also</h2><p><a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>, <a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsess.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsessflags.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_session_create </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_session_flag</td></tr></table></div></body></html>