2000-05-23 01:35:35 +08:00
|
|
|
_ _ ____ _
|
|
|
|
___| | | | _ \| |
|
|
|
|
/ __| | | | |_) | |
|
|
|
|
| (__| |_| | _ <| |___
|
|
|
|
\___|\___/|_| \_\_____|
|
|
|
|
|
|
|
|
TODO
|
|
|
|
|
2000-05-26 15:48:38 +08:00
|
|
|
For the future
|
|
|
|
|
2000-05-23 01:35:35 +08:00
|
|
|
Ok, this is what I wanna do with Curl. Please tell me what you think, and
|
|
|
|
please don't hesitate to contribute and send me patches that improve this
|
|
|
|
product! (Yes, you may add things not mentioned here, these are just a
|
|
|
|
few teasers...)
|
|
|
|
|
2000-10-11 18:59:16 +08:00
|
|
|
* Improve the command line option parser to accept '-m300' as well as the '-m
|
|
|
|
300' convention. It should be able to work if '-m300' is considered to be
|
|
|
|
space separated to the next option.
|
|
|
|
|
2000-10-25 15:42:23 +08:00
|
|
|
* Make the curl tool support URLs that start with @ that would then mean that
|
|
|
|
the following is a plain list with URLs to download. Thus @filename.txt
|
|
|
|
reads a list of URLs from a local file. A fancy option would then be to
|
|
|
|
support @http://whatever.com that would first load a list and then get the
|
|
|
|
URLs mentioned in the list. I figure -O or something would have to be
|
|
|
|
implied by such an action.
|
|
|
|
|
2000-11-22 22:18:30 +08:00
|
|
|
* Make curl with multiple URLs, even outside of {}-letters. I could also
|
|
|
|
imagine an optional fork()ed system that downloads each URL in its own
|
|
|
|
thread. It should of course have a maximum amount of simultaneous fork()s.
|
|
|
|
|
2000-10-25 15:42:23 +08:00
|
|
|
* Improve the regular progress meter with --continue is used. It should be
|
|
|
|
noticable when there's a resume going on.
|
|
|
|
|
|
|
|
* Add a command line option that allows the output file to get the same time
|
|
|
|
stamp as the remote file. This requires some fiddling on FTP but comes
|
|
|
|
almost free for HTTP.
|
|
|
|
|
2000-10-11 18:59:16 +08:00
|
|
|
* Make the SSL layer option capable of using the Mozilla Security Services as
|
|
|
|
an alternative to OpenSSL:
|
|
|
|
http://www.mozilla.org/projects/security/pki/nss/
|
|
|
|
|
2000-08-22 05:56:41 +08:00
|
|
|
* Make sure the low-level interface works. highlevel.c should basically be
|
|
|
|
possible to write using that interface. Document the low-level interface
|
2000-05-23 01:35:35 +08:00
|
|
|
|
2000-08-22 05:56:41 +08:00
|
|
|
* Add asynchronous name resolving, as this enables full timeout support for
|
|
|
|
fork() systems.
|
|
|
|
|
|
|
|
* Move non-URL related functions that are used by both the lib and the curl
|
|
|
|
application to a separate "portability lib".
|
|
|
|
|
2000-10-25 15:42:23 +08:00
|
|
|
* Add support for other languages than C. C++ (rumours have been heard about
|
|
|
|
something being worked on in this area) and perl (we have seen the first
|
|
|
|
versions of this!) comes to mind. Python anyone?
|
2000-08-22 05:56:41 +08:00
|
|
|
|
2000-09-21 16:53:59 +08:00
|
|
|
* Improve the -K config file parser (the parameter following the flag should
|
|
|
|
be possible to get specified *exactly* as it is done on a shell command
|
|
|
|
line).
|
2000-08-22 05:56:41 +08:00
|
|
|
|
2000-11-12 23:14:35 +08:00
|
|
|
Alternatively, and preferably, we rewrite the entire config file to become
|
|
|
|
a true config file that uses its own format instead of the currently
|
|
|
|
crippled and stupid format:
|
|
|
|
|
|
|
|
[option] = [value]
|
|
|
|
|
|
|
|
Where [option] would be the same as the --long-option and [value] would
|
|
|
|
either be 'on/off/true/false' for booleans or a plain value for [option]s
|
|
|
|
that accept variable input (such as -d, -o, -H, -d, -F etc).
|
|
|
|
|
|
|
|
[value] could be written as plain text, and then the initial and trailing
|
|
|
|
white spaces would be stripped off, or it can be specified within quotes
|
|
|
|
and then all white spaces within the quotes will count.
|
|
|
|
|
|
|
|
[value] could then be made to accept some format to specify an environment
|
|
|
|
variable. I could even think of supporting
|
|
|
|
|
|
|
|
[option] += [value]
|
|
|
|
|
|
|
|
for appending stuff to an option.
|
|
|
|
|
|
|
|
As has been suggested, ${name} could be used to read environment variables
|
|
|
|
and possibly other options. That could then be used instead of += operators
|
|
|
|
like:
|
|
|
|
|
|
|
|
bar = "foo ${bar}"
|
|
|
|
|
2000-08-22 05:56:41 +08:00
|
|
|
* rtsp:// support -- "Real Time Streaming Protocol" (RFC 2326)
|
2000-05-23 01:35:35 +08:00
|
|
|
|
|
|
|
* "Content-Encoding: compress/gzip/zlib"
|
|
|
|
|
|
|
|
HTTP 1.1 clearly defines how to get and decode compressed documents. There
|
|
|
|
is the zlib that is pretty good at decompressing stuff. This work was
|
|
|
|
started in October 1999 but halted again since it proved more work than we
|
|
|
|
thought. It is still a good idea to implement though.
|
|
|
|
|
2000-09-21 16:53:59 +08:00
|
|
|
* Authentication: NTLM. It would be cool to support that MS crap called NTLM
|
|
|
|
authentication. MS proxies and servers sometime require that. Since that
|
|
|
|
protocol is a proprietary one, it involves reverse engineering and network
|
|
|
|
sniffing. This should however be a library-based functionality. There are a
|
|
|
|
few different efforts "out there" to make open source HTTP clients support
|
|
|
|
this and it should be possible to take advantage of other people's hard
|
|
|
|
work.
|
2000-05-23 01:35:35 +08:00
|
|
|
|
|
|
|
* RFC2617 compliance, "Digest Access Authentication"
|
|
|
|
A valid test page seem to exist at:
|
|
|
|
http://hopf.math.nwu.edu/testpage/digest/
|
|
|
|
And some friendly person's server source code is available at
|
|
|
|
http://hopf.math.nwu.edu/digestauth/index.html
|
|
|
|
|
|
|
|
Then there's the Apache mod_digest source code too of course. It seems as
|
|
|
|
if Netscape doesn't support this, and not many servers do. Although this is
|
|
|
|
a lot better authentication method than the more common "Basic". Basic
|
|
|
|
sends the password in cleartext over the network, this "Digest" method uses
|
|
|
|
a challange-response protocol which increases security quite a lot.
|
|
|
|
|
|
|
|
* Multiple Proxies?
|
|
|
|
Is there anyone that actually uses serial-proxies? I mean, send CONNECT to
|
|
|
|
the first proxy to connect to the second proxy to which you send CONNECT to
|
|
|
|
connect to the remote host (or even more iterations). Is there anyone
|
|
|
|
wanting curl to support it? (Not that it would be hard, just confusing...)
|
|
|
|
|
|
|
|
* Other proxies
|
|
|
|
Ftp-kind proxy, Socks5, whatever kind of proxies are there?
|
|
|
|
|
2000-05-31 00:31:46 +08:00
|
|
|
* IPv6 Awareness and support
|
2000-09-18 14:25:50 +08:00
|
|
|
Where ever it would fit. configure search for v6-versions of a few
|
2000-05-23 01:35:35 +08:00
|
|
|
functions and then use them instead is of course the first thing to do...
|
|
|
|
RFC 2428 "FTP Extensions for IPv6 and NATs" will be interesting. PORT
|
|
|
|
should be replaced with EPRT for IPv6, and EPSV instead of PASV.
|
|
|
|
|
|
|
|
* SSL for more protocols, like SSL-FTP...
|
|
|
|
(http://search.ietf.org/internet-drafts/draft-murray-auth-ftp-ssl-05.txt)
|
|
|
|
|
|
|
|
* HTTP POST resume using Range:
|
|
|
|
|