Imported Upstream version 7.50.2
[platform/upstream/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  - metalink support (*13)
17
18 libcurl
19  - full URL syntax with no length limit
20  - custom maximum download time
21  - custom least download speed acceptable
22  - custom output result after completion
23  - guesses protocol from host name unless specified
24  - uses .netrc
25  - progress bar with time statistics while downloading
26  - "standard" proxy environment variables support
27  - compiles on win32 (reported builds on 40+ operating systems)
28  - selectable network interface for outgoing traffic
29  - IPv6 support on unix and Windows
30  - persistent connections
31  - socks 4 + 5 support, with or without local name resolving
32  - supports user name and password in proxy environment variables
33  - operations through proxy "tunnel" (using CONNECT)
34  - support for large files (>2GB and >4GB) during upload and download
35  - replaceable memory functions (malloc, free, realloc, etc)
36  - asynchronous name resolving (*6)
37  - both a push and a pull style interface
38  - international domain names (*11)
39
40 HTTP
41  - HTTP/1.1 compliant (optionally uses 1.0)
42  - GET
43  - PUT
44  - HEAD
45  - POST
46  - Pipelining
47  - multipart formpost (RFC1867-style)
48  - authentication: Basic, Digest, NTLM (*9) and Negotiate (SPNEGO) (*3)
49    to server and proxy
50  - resume (both GET and PUT)
51  - follow redirects
52  - maximum amount of redirects to follow
53  - custom HTTP request
54  - cookie get/send fully parsed
55  - reads/writes the netscape cookie file format
56  - custom headers (replace/remove internally generated headers)
57  - custom user-agent string
58  - custom referrer string
59  - range
60  - proxy authentication
61  - time conditions
62  - via http-proxy
63  - retrieve file modification date
64  - Content-Encoding support for deflate and gzip
65  - "Transfer-Encoding: chunked" support in uploads
66  - data compression (*12)
67  - HTTP/2 (*5)
68
69 HTTPS (*1)
70  - (all the HTTP features)
71  - using client certificates
72  - verify server certificate
73  - via http-proxy
74  - select desired encryption
75  - force usage of a specific SSL version (SSLv2 (*7), SSLv3 (*10) or TLSv1)
76
77 FTP
78  - download
79  - authentication
80  - Kerberos 5 (*14)
81  - active/passive using PORT, EPRT, PASV or EPSV
82  - single file size information (compare to HTTP HEAD)
83  - 'type=' URL support
84  - dir listing
85  - dir listing names-only
86  - upload
87  - upload append
88  - upload via http-proxy as HTTP PUT
89  - download resume
90  - upload resume
91  - custom ftp commands (before and/or after the transfer)
92  - simple "range" support
93  - via http-proxy
94  - all operations can be tunneled through a http-proxy
95  - customizable to retrieve file modification date
96  - no dir depth limit
97
98 FTPS (*1)
99  - implicit ftps:// support that use SSL on both connections
100  - explicit "AUTH TLS" and "AUTH SSL" usage to "upgrade" plain ftp://
101    connection to use SSL for both or one of the connections
102
103 SCP (*8)
104  - both password and public key auth
105
106 SFTP (*8)
107  - both password and public key auth
108  - with custom commands sent before/after the transfer
109
110 TFTP
111  - download
112  - upload
113
114 TELNET
115  - connection negotiation
116  - custom telnet options
117  - stdin/stdout I/O
118
119 LDAP (*2)
120  - full LDAP URL support
121
122 DICT
123  - extended DICT URL support
124
125 FILE
126  - URL support
127  - upload
128  - resume
129
130 SMB
131  - SMBv1 over TCP and SSL
132  - download
133  - upload
134  - authentication with NTLMv1
135
136 SMTP
137  - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9), Kerberos 5
138    (*4) and External.
139  - send e-mails
140  - mail from support
141  - mail size support
142  - mail auth support for trusted server-to-server relaying
143  - multiple recipients
144  - via http-proxy
145
146 SMTPS (*1)
147  - implicit smtps:// support
148  - explicit "STARTTLS" usage to "upgrade" plain smtp:// connections to use SSL
149  - via http-proxy
150
151 POP3
152  - authentication: Clear Text, APOP and SASL
153  - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9),
154    Kerberos 5 (*4) and External.
155  - list e-mails
156  - retrieve e-mails
157  - enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via
158    custom requests
159  - via http-proxy
160
161 POP3S (*1)
162  - implicit pop3s:// support
163  - explicit "STLS" usage to "upgrade" plain pop3:// connections to use SSL
164  - via http-proxy
165
166 IMAP
167  - authentication: Clear Text and SASL
168  - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9),
169    Kerberos 5 (*4) and External.
170  - list the folders of a mailbox
171  - select a mailbox with support for verifying the UIDVALIDITY
172  - fetch e-mails with support for specifying the UID and SECTION
173  - upload e-mails via the append command
174  - enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS,
175    STORE, COPY and UID via custom requests
176  - via http-proxy
177
178 IMAPS (*1)
179  - implicit imaps:// support
180  - explicit "STARTTLS" usage to "upgrade" plain imap:// connections to use SSL
181  - via http-proxy
182
183 FOOTNOTES
184 =========
185
186   *1 = requires OpenSSL, GnuTLS, NSS, yassl, axTLS, PolarSSL, WinSSL (native
187        Windows), Secure Transport (native iOS/OS X) or GSKit (native IBM i)
188   *2 = requires OpenLDAP
189   *3 = requires a GSS-API implementation (such as Heimdal or MIT Kerberos) or
190        SSPI (native Windows)
191   *4 = requires a GSS-API implementation, however, only Windows SSPI is
192        currently supported
193   *5 = requires nghttp2 and possibly a recent TLS library
194   *6 = requires c-ares
195   *7 = requires OpenSSL, NSS, GSKit, WinSSL or Secure Transport; GnuTLS, for
196        example, only supports SSLv3 and TLSv1
197   *8 = requires libssh2
198   *9 = requires OpenSSL, GnuTLS, mbedTLS, NSS, yassl, Secure Transport or SSPI
199        (native Windows)
200   *10 = requires any of the SSL libraries in (*1) above other than axTLS, which
201         does not support SSLv3
202   *11 = requires libidn or Windows
203   *12 = requires libz
204   *13 = requires libmetalink, and either an Apple or Microsoft operating
205         system, or OpenSSL, or GnuTLS, or NSS
206   *14 = requires a GSS-API implementation (such as Heimdal or MIT Kerberos)