Giter VIP home page Giter VIP logo

everything-curl's Introduction

Introduction

Everything curl is an extensive guide for all things curl. The project, the command-line tool, the library, how everything started and how it came to be the useful tool it is today. It explains how we work on developing it further, what it takes to use it, how you can contribute with code or bug reports and why millions of existing users use it.

This book is meant to be interesting and useful to both casual readers and somewhat more experienced developers. It offers something for everyone to pick and choose from.

Do not read this book from front to back. Read the chapters or content you are curious about and flip back and forth as you see fit.

This book is an open source project in itself: open, completely free to download and read. Free for anyone to comment on, and available for everyone to contribute to and help out with. Send your bug reports, ideas, pull requests or critiques to us and I or someone else will work on improving the book accordingly.

This book will never be finished. I intend to keep working on it. While I may at some point consider it fairly complete, covering most aspects of the project (even if only that seems like an insurmountable goal), the curl project will continue to move so there will always be things to update in the book as well.

This book project started at the end of September 2015.

Site

https://everything.curl.dev is the home of this book. It features the book online in a web version.

This book is also provided as a PDF and an ePUB.

The book website is hosted by Fastly. The book contents is rendered by mdBook since March 18th, 2024.

Content

All book content is hosted on GitHub in the https://github.com/curl/everything-curl repository.

Author

With the hope of becoming just a co-author of this material, I am Daniel Stenberg. I founded the curl project and I am a developer at heart—for fun and profit. I live and work in Stockholm, Sweden.

All there is to know about Daniel can be found on daniel.haxx.se.

Contribute

If you find mistakes, omissions, errors or blatant lies in this document, please send us a refreshed version of the affected paragraph and we will amend and update. We give credit to and recognize everyone who helps out.

Preferably, you could submit errors or pull requests on the book's GitHub page.

Contributors

Lots of people have reported bugs, improved sections or otherwise helped make this book the success it is. These friends include the following:

AaronChen0 on github, alawvt on github, Amin Khoshnood, amnkh on github, Anders Roxell, Angad Gill, Aris (Karim) Merchant, auktis on github, Ben Bodenmiller Ben Peachey, bookofportals on github, Bruno Baguette, Carlton Gibson, Chris DeLuca, Citizen Esosa, Dan Fandrich, Daniel Brown, Daniel Sabsay, David Piano, DrDoom74 at GitHub, Emil Hessman, enachos71 on github, ethomag on github, Fabian Keil, faterer on github, Frank Dana, Frank Hassanabad, Gautham B A, Geir Hauge, Harry Wright, Helena Udd, Hubert Lin, i-ky on github, infinnovation-dev on GitHub, Jay Ottinger, Jay Satiro, Jeroen Ooms, Johan Wigert, John Simpson, JohnCoconut on github, Jonas Forsberg, Josh Vanderhook, JoyIfBam5, KJM on github, knorr3 on github, lowttl on github, Luca Niccoli, Manuel on github, Marius Žilėnas, Mark Koester, Martin van den Nieuwelaar, mehandes on github, Michael Kaufmann, Ms2ger, Mohammadreza Hendiani, Nick Travers, Nicolas Brassard, Oscar on github, Oskar Köök, Patrik Lundin, RekGRpth on github, Ryan McQuen, Saravanan Musuwathi Kesavan, Senthil Kumaran, Shusen Liu, Sonia Hamilton, Spiros Georgaras, Stephen, Steve Holme, Stian Hvatum, strupo on github, Viktor Szakats, Vitaliy T, Wayne Lai, Wieland Hoffmann, 谭九鼎

License

This document is licensed under the Creative Commons Attribution 4.0 license.

everything-curl's People

Contributors

alawvt avatar amnkh avatar auktis avatar bagder avatar balki avatar bbodenmiller avatar brianebert avatar captain-caveman2k avatar ceh avatar chrmns avatar dandv avatar dfandrich avatar djbrown avatar enachos71 avatar fabiankeil avatar i-ky avatar inquisitivecrystal avatar jay avatar jwigert avatar krunch3r76 avatar levure avatar linhub15 avatar man2dev avatar norsegaud avatar potherca avatar raisinten avatar rsteele6 avatar sluicing avatar swebarre avatar zevaverbach avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

everything-curl's Issues

"convering" - typo?

https://ec.haxx.se/building-source.html

Original:

On Linux and Unix-like systems

[...]

The configure based build is arguably the more mature and more convering
build system and should probably be considered the default one.

"convering" -- looks like this word is wrong. If so, please correct.

translation

Hello, Mr. Daniel.
I am a developer from China. Can I fork this repository and translate it into Chinese? In China, many developers have poor English skills. I think this will help more developers use cURL effectively. Of course, the author's signature is still you. I'm just doing a translation job myself. Thank you. Look forward to your reply.

"It is a an" should be "It is an"

https://ec.haxx.se/protocols-curl.html

Original:

SMB 
The Server Message Block (SMB) protocol is also known as CIFS. It is
a an application-layer network protocol mainly used for providing shared
access to files, printers, and serial ports and miscellaneous
communications between nodes on a network. SMB servers and clients use
TCP port 445.

In second sentence:

"It is a an" should be "It is an".

Unable to copy text from the PDF version

I'm reading the most recent PDF version of the book in the Preview app on macOS (10.13.6). When I highlight any length of text — to look-up via Dictionary, or copy and paste — it is not detected. It is instead treated as an empty string. I've confirmed that this behavior is not present in other PDF documents.

Incomplete explanation on page 94

On page 94 the book says the following,

…or even have curl read the string from stdin if you use '-' as filename:
curl -w @- http://example.com/

I tried executing the command and I am still stuck with the input. There is some sort of continuity which is missing that says how to get the command to resume after giving standard input.

in the way / the idea is similar

The section "Using curl/Proxies/Captive portals" begins with the following note:

(these are not proxies but in the way)

But "in the way" means "blocking the path, literally or figuratively", and I'm pretty sure that wasn't the intention.

"... in a way" would be better, but I think the following note would be clearer and almost as short:

(these are not proxies but the idea is similar)

Wrong command to disable FTP active connect

Using curl
FTP
Two connections

You can also explicitly ask curl to not use EPRT (which is a slightly newer command than PORT) with the --no-epsv command-line option.
2017-07-06 11 28 34

Probably meant the command: --no-eprt

remove extra "name"

https://ec.haxx.se/libcurl-names.html

Original:

Name server options
[...]

This is limited to c-ares build purely because these are powers that are
not available when the standard system calls for name name resolving are
used.

"for name name resolving" should be "for name resolving".

ocaml binding http link is outdated

Ocaml curl binding https://sourceforge.net/projects/ocurl/ hasn't been updated since 2012.

Here is updated info from Ocaml package manager opam.

opam show ocurl

<><> ocurl: information on all versions <><><><><><><><><><><><><><><><><><><><>
name         ocurl
all-versions 0.5.4  0.5.5  0.5.6  0.6.0  0.6.1  0.7.0  0.7.1  0.7.2  0.7.5  0.7.6  0.7.7  0.7.8  0.7.9  0.7.10  0.8.0  0.8.1  0.8.2

<><> Version-specific details <><><><><><><><><><><><><><><><><><><><><><><><><>
version       0.8.2
repository    default
url.src:      "http://ygrek.org.ua/p/release/ocurl/ocurl-0.8.2.tar.gz"
url.checksum: "md5=194b65b5abb1e32be17f4d5c8c9a8627"
homepage:     "http://ygrek.org.ua/p/ocurl/"
bug-reports:  "https://github.com/ygrek/ocurl/issues"
dev-repo:     "git://github.com/ygrek/ocurl.git"
authors:      "Lars Nilsson" "ygrek"
maintainer:   "[email protected]"
license:      "MIT"
tags:         "org:ygrek" "clib:curl"
flags:        light-uninstall
depends:      "ocaml" {>= "4.02.0"} "ocamlfind" {build} "base-unix" "conf-libcurl"
depopts:      "lwt"
synopsis      Bindings to libcurl
description   Client-side URL transfer library, supporting HTTP and a multitude of
              other network protocols (FTP/SMTP/RTSP/etc).

remove extra "can"

https://ec.haxx.se/libcurl-drive-multi-socket.html

Original:

How to start everything
[...]

To kick it all off, you tell libcurl it timed out (because all easy
handles start out with a short timeout) which will make libcurl call the
callbacks to set things up and from then on you can can just let your
event system drive:

"you can can just" should be "you can just".

"so" should be "do"

https://ec.haxx.se/http-browserlike.html

Original:

Web logins and sessions

[...]

Many login pages even send you a session cookie already when presenting
the login, and since you often need to extract the hidden fields from
the <form> tag anyway, you could so something like this first:

"you could so something" should be "you could do something".

199 -> 1199

http-ranges
Get 200 bytes from index 0 and 200 bytes from index 1000:
curl -r 0-199,1000-199 http://example.com/
->
curl -r 0-199,1000-1199 http://example.com/

extra "they" should be removed

https://ec.haxx.se/usingcurl-copyas.html

Original:

Not perfect

These methods all give you a command line to reproduce their HTTP
transfers. You will also learn they they are still often not the perfect
solution to your problems.

In the second sentence:

"You will also learn they they are" should be "You will also learn they are".

Misprint in curl_easy_setopt()

HTTP with libcurl
HTTP request
Request method

       curl_easy_setupt(curl, CURLOPT_CUSTOMREQUEST, "DELETE");
       curl_easy_setupt(curl, CURLOPT_URL, "https://example.com/file.txt");

2017-05-12 11 30 21

I think this example should be written like that:
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/file.txt");

TCP keepalive time unclear

Page 114 again, section "Keep alive", it says curl defaults to 60 seconds for the "TCP pings". Page 116 section "Keep connections alive" says "the default value is usually set to 7200, which is two full hours". So is it 60 or 7200 seconds?

Minor typo

Page 100, under section "compression", paragraph starting "With this option enabled (and if the server support [sic] it)" should probably read "and if the server supports it".

Keep up the good work; excellent documentation, especially considering what passes elsewhere for documentation these days.

curl

curl not work on win7 ultimate?

wait 25 min and nothing happend

image

Grammar in "When is a single transfer done?"

Last paragraph of page 216, starting "When you do multiple ... in the same curl_multi_perform invoke [sic] and then you might need", could be improved, presumably to something like "in the same curl_multi_perform invocation and then you might need".

Really good documentation; these all just minor mistakes.

Typo/grammar for "Drive" transfers

Page 212 in the section "Drive" transfers, "2. The 'multi' interface is for when you want to do more than one transfer at the same time, or you just want an [sic] non-blocking transfer mechanism.". Would be better as "or you just want a non-blocking transfer".

HTTP/3

The first initial HTTP/3 experimental code has been merged and can do transfers. Time to add some blurb to the book about it...

"Javascript" vs. "JavaScript"

I'm not sure if an issue is the way to do this, but… We're currently using the former version, but the latter is more standard. Of course, every project has it's own style, so I wanted to ask. In the meantime I've made a branch of my fork with the change: bookofportals/everything-curl@3ffb0b8. @bagder: which one should we use?

Another minor typo

Page 114 in section "Keep alive", paragraph starting "At the same time, lots of network equipments [sic] such as", should probably be "lots of network equipment such as".

License confusion

README.md says "This document is licensed under the [Creative Commons Attribution 4.0 license]" but the LICENSE file says public domain. Which is correct?

Index

Gitbooks doesn't seem to provide any index feature so finding the chapter again where for example a certain curl option is discussed, is really hard.

I need to write a script to generate an index in markdown to include as the final "chapter".

Cannot get this book

Formats:

  • PDF
  • Mobi
  • ePub

are broken because of gitbook:

 This doesn't happen often, but it looks like something is broken. Hitting the back button and trying again might be your best bet. If that doesn't work you can head back to the homepage.

There might be more information on our status page which is reporting All Systems Operational. 

In web version only the first 4 pages are available.

Other pages are broken:

> curl https://ec.haxx.se/curl-comm.html
curl: (92) HTTP/2 stream 1 was not closed cleanly: PROTOCOL_ERROR (err 1)

regd. TLS version option and its use

https://ec.haxx.se/usingcurl-tls.html

Original:

--tlsv1.0    TLS >= version 1.0
--tlsv1.1    TLS >= version 1.1
--tlsv1.2    TLS >= version 1.2
--tlsv1.3    TLS >= version 1.3

If I am not wrong, it should be:

--tlsv1.0       Use TLSv1.0
--tlsv1.1       Use TLSv1.1
--tlsv1.2       Use TLSv1.2
--tlsv1.3       Use TLSv1.3

Reference:

$ curl -h | grep -e '--tlsv1'
 -1, --tlsv1         Use TLSv1.0 or greater
     --tlsv1.0       Use TLSv1.0
     --tlsv1.1       Use TLSv1.1
     --tlsv1.2       Use TLSv1.2
     --tlsv1.3       Use TLSv1.3

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.