aboutsummaryrefslogtreecommitdiff
path: root/docs/FEATURES
blob: 880addd790136195b459e3d5a7ee1d7e8454fcd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

FEATURES

curl tool
 - config file support
 - multiple URLs in a single command line
 - range "globbing" support: [0-13], {one,two,three}
 - multiple file upload on a single command line
 - custom maximum transfer rate
 - redirectable stderr
 - metalink support (*13)

libcurl supports
 - full URL syntax with no length limit
 - custom maximum download time
 - custom least download speed acceptable
 - custom output result after completion
 - guesses protocol from host name unless specified
 - uses .netrc
 - progress bar/time specs while downloading
 - "standard" proxy environment variables support
 - compiles on win32 (reported builds on 40+ operating systems)
 - selectable network interface for outgoing traffic
 - IPv6 support on unix and Windows
 - persistent connections
 - socks5 support
 - supports user name + password in proxy environment variables
 - operations through proxy "tunnel" (using CONNECT)
 - supports large files (>2GB and >4GB) both upload/download
 - replaceable memory functions (malloc, free, realloc, etc)
 - asynchronous name resolving (*6)
 - both a push and a pull style interface
 - international domain names (*11)

HTTP
 - HTTP/1.1 compliant (optionally uses 1.0)
 - GET
 - PUT
 - HEAD
 - POST
 - Pipelining
 - multipart formpost (RFC1867-style)
 - authentication: Basic, Digest, NTLM (*9), GSS-Negotiate/Negotiate (*3) and
   SPNEGO (*4) to server and proxy
 - resume (both GET and PUT)
 - follow redirects
 - maximum amount of redirects to follow
 - custom HTTP request
 - cookie get/send fully parsed
 - reads/writes the netscape cookie file format
 - custom headers (replace/remove internally generated headers)
 - custom user-agent string
 - custom referer string
 - range
 - proxy authentication
 - time conditions
 - via http-proxy
 - retrieve file modification date
 - Content-Encoding support for deflate and gzip
 - "Transfer-Encoding: chunked" support for "uploads"
 - data compression (*12)

HTTPS (*1)
 - (all the HTTP features)
 - using client certificates
 - verify server certificate
 - via http-proxy
 - select desired encryption
 - force usage of a specific SSL version (SSLv2 (*7), SSLv3 (*10) or TLSv1)

FTP
 - download
 - authentication
 - kerberos4 (*5), kerberos5 (*3)
 - active/passive using PORT, EPRT, PASV or EPSV
 - single file size information (compare to HTTP HEAD)
 - 'type=' URL support
 - dir listing
 - dir listing names-only
 - upload
 - upload append
 - upload via http-proxy as HTTP PUT
 - download resume
 - upload resume
 - custom ftp commands (before and/or after the transfer)
 - simple "range" support
 - via http-proxy
 - all operations can be tunneled through a http-proxy
 - customizable to retrieve file modification date
 - no dir depth limit

FTPS (*1)
 - implicit ftps:// support that use SSL on both connections
 - explicit "AUTH TLS" and "AUTH SSL" usage to "upgrade" plain ftp://
   connection to use SSL for both or one of the connections

SCP (*8)
 - both password and public key auth

SFTP (*8)
 - both password and public key auth
 - with custom commands sent before/after the transfer

TFTP
 - download / upload

TELNET
 - connection negotiation
 - custom telnet options
 - stdin/stdout I/O

LDAP (*2)
 - full LDAP URL support

DICT
 - extended DICT URL support

FILE
 - URL support
 - "uploads"
 - resume

SMTP
 - authentication: Plain, Login, CRAM-MD5, Digest-MD5 and NTLM (*9)
 - send e-mails
 - mail from support
 - mail size support
 - mail auth support for trusted server-to-server relaying
 - multiple recipients
 - via http-proxy

SMTPS (*1)
 - implicit smtps:// support
 - explicit "STARTTLS" usage to "upgrade" plain smtp:// connections to use SSL
 - via http-proxy

POP3
 - authentication: Clear Text, APOP and SASL
 - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5 and
   NTLM (*9)
 - list e-mails
 - retrieve e-mails
 - enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via
   custom requests
 - via http-proxy

POP3S (*1)
 - implicit pop3s:// support
 - explicit "STLS" usage to "upgrade" plain pop3:// connections to use SSL
 - via http-proxy

IMAP
 - authentication: Clear Text and SASL
 - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5 and
   NTLM (*9)
 - list the content of a mailbox
 - select mailbox with support for verifing the UIDVALIDITY
 - fetch e-mails with support for specifing the UID and SECTION
 - upload e-mails via the append command
 - enhanced command support for: EXAMINE and STORE via custom requests
 - via http-proxy

IMAPS (*1)
 - implicit imaps:// support
 - explicit "STARTTLS" usage to "upgrade" plain imap:// connections to use SSL
 - via http-proxy

FOOTNOTES
=========

  *1 = requires OpenSSL, GnuTLS, NSS, yassl, axTLS, PolarSSL, schannel (native
       Windows), Secure Transport (native iOS/OS X)  or qssl (native IBM i)
  *2 = requires OpenLDAP
  *3 = requires a GSSAPI-compliant library, such as Heimdal or similar.
  *4 = requires FBopenssl
  *5 = requires a krb4 library, such as the MIT one or similar.
  *6 = requires c-ares
  *7 = requires OpenSSL, NSS, qssl, schannel, or Secure Transport; GnuTLS, for
       example, only supports SSLv3 and TLSv1
  *8 = requires libssh2
  *9 = requires OpenSSL, GnuTLS, NSS, yassl, Secure Transport, or SSPI (native
       Windows)
  *10 = requires any of the SSL libraries in (*1) above other than axTLS, which
        does not support SSLv3
  *11 = requires libidn or Windows
  *12 = requires libz
  *13 = requires libmetalink, and either an Apple or Microsoft operating
        system, or OpenSSL, or GnuTLS, or NSS