hurl

Gemini/Gopher/HTTP/HTTPS file grabber
git clone git://bvnf.space/hurl.git
Log | Files | Refs | README | LICENSE

README (1321B)


      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
hurl
----

Relatively simple HTTP, HTTPS, Gopher and Gemini client/file grabber.


Why?
----

Sometimes (or most of the time?) you just want to fetch a file via the HTTP,
HTTPS, Gopher or Gemini protocol.

The focus of this tool is only this.


Dependencies
------------

- C compiler (C99).
- libc + some BSD functions like err() and strlcat().
- LibreSSL(-portable)
- libtls (part of LibreSSL).


Optional dependencies
---------------------

- POSIX make(1) (for Makefile).
- mandoc for documentation: https://mdocml.bsd.lv/


Features
--------

- Uses OpenBSD pledge(2) and unveil(2). Allow no filesystem access (writes to
  stdout).
- Impose time-out and maximum size limits.
- Use well-defined exitcodes for reliable scripting (curl sucks at this).
- Send as little information as possible (no User-Agent etc by default).


Anti-features
-------------

- No HTTP byte range support.
- No HTTP User-Agent.
- No HTTP If-Modified-Since/If-* support.
- No HTTP auth support.
- No HTTP/2+ support.
- No HTTP keep-alive.
- No HTTP chunked-encoding support.
- No HTTP redirect support.
- No (GZIP) compression support.
- No cookie-jar or cookie parsing support.

- No Gopher text handling (".\r\n").

- No Gemini certificate verification.
- No Gemini client certificate support.
- No Gemini redirect support.

- ... etc...