Git init
[external/curl.git] / docs / FEATURES
1                                   _   _ ____  _
2                               ___| | | |  _ \| |
3                              / __| | | | |_) | |
4                             | (__| |_| |  _ <| |___
5                              \___|\___/|_| \_\_____|
6
7 FEATURES
8
9 curl tool
10  - config file support
11  - multiple URLs in a single command line
12  - range "globbing" support: [0-13], {one,two,three}
13  - multiple file upload on a single command line
14  - custom maximum transfer rate
15  - redirectable stderr
16
17 libcurl supports
18  - full URL syntax with no length limit
19  - custom maximum download time
20  - custom least download speed acceptable
21  - custom output result after completion
22  - guesses protocol from host name unless specified
23  - uses .netrc
24  - progress bar/time specs while downloading
25  - "standard" proxy environment variables support
26  - compiles on win32 (reported builds on 40+ operating systems)
27  - selectable network interface for outgoing traffic
28  - IPv6 support on unix and Windows
29  - persistant connections
30  - socks5 support
31  - supports user name + password in proxy environment variables
32  - operations through proxy "tunnel" (using CONNECT)
33  - supports large files (>2GB and >4GB) both upload/download
34  - replacable memory functions (malloc, free, realloc, etc)
35  - asynchronous name resolving (*6)
36  - both a push and a pull style interface
37
38 HTTP
39  - HTTP/1.1 compliant (optionally uses 1.0)
40  - GET
41  - PUT
42  - HEAD
43  - POST
44  - Pipelining
45  - multipart formpost (RFC1867-style)
46  - authentication: Basic, Digest, NTLM(*9), GSS-Negotiate/Negotiate(*3) and
47    SPNEGO (*4) to server and proxy
48  - resume (both GET and PUT)
49  - follow redirects
50  - maximum amount of redirects to follow
51  - custom HTTP request
52  - cookie get/send fully parsed
53  - reads/writes the netscape cookie file format
54  - custom headers (replace/remove internally generated headers)
55  - custom user-agent string
56  - custom referer string
57  - range
58  - proxy authentication
59  - time conditions
60  - via http-proxy
61  - retrieve file modification date
62  - Content-Encoding support for deflate and gzip
63  - "Transfer-Encoding: chunked" support for "uploads"
64
65 HTTPS (*1)
66  - (all the HTTP features)
67  - using client certificates
68  - verify server certificate
69  - via http-proxy
70  - select desired encryption
71  - force usage of a specific SSL version (SSLv2(*7), SSLv3 or TLSv1)
72
73 FTP
74  - download
75  - authentication
76  - kerberos4 (*5), kerberos5 (*3)
77  - active/passive using PORT, EPRT, PASV or EPSV
78  - single file size information (compare to HTTP HEAD)
79  - 'type=' URL support
80  - dir listing
81  - dir listing names-only
82  - upload
83  - upload append
84  - upload via http-proxy as HTTP PUT
85  - download resume
86  - upload resume
87  - custom ftp commands (before and/or after the transfer)
88  - simple "range" support
89  - via http-proxy
90  - all operations can be tunneled through a http-proxy
91  - customizable to retrieve file modification date
92  - no dir depth limit
93
94 FTPS (*1)
95  - implicit ftps:// support that use SSL on both connections
96  - explicit "AUTH TSL" and "AUTH SSL" usage to "upgrade" plain ftp://
97    connection to use SSL for both or one of the connections
98
99 SCP (*8)
100  - both password and public key auth
101
102 SFTP (*8)
103  - both password and public key auth
104  - with custom commands sent before/after the transfer
105
106 TFTP
107  - download / upload
108
109 TELNET
110  - connection negotiation
111  - custom telnet options
112  - stdin/stdout I/O
113
114 LDAP (*2)
115  - full LDAP URL support
116
117 DICT
118  - extended DICT URL support
119
120 FILE
121  - URL support
122  - "uploads"
123  - resume
124
125 FOOTNOTES
126 =========
127
128   *1 = requires OpenSSL, GnuTLS, NSS, yassl or PolarSSL
129   *2 = requires OpenLDAP
130   *3 = requires a GSSAPI-compliant library, such as Heimdal or similar.
131   *4 = requires FBopenssl
132   *5 = requires a krb4 library, such as the MIT one or similar.
133   *6 = requires c-ares
134   *7 = requires OpenSSL or NSS, as GnuTLS only supports SSLv3 and TLSv1
135   *8 = requires libssh2
136   *9 = requires OpenSSL, GnuTLS, NSS or yassl