GOPHERSPACE.DE - P H O X Y
gophering on bitreich.org
Dear reader, in this document we will see differents command line
software which can be used to connect to a gopher server.


Printf + netcat
===============

It's possible to write request "by hand" using printf to format the
request string and then netcat to send it to the remote server.

A request of the file "/tutorials/cmdline.txt" will looks like this :

    printf "/tutorials/cmdline.txt\r\n" | nc somedomain.com 70

You will get the server answer directly into your output. Be careful
if you ask binary files, it will be displayed on your screen, this is
not something a regular user want. If you want to download a binary
file, you can redirect the output to a file using ">" or pipe it to
another software (or using tee for both at the same time).

The following example will download a music file, save it on the
filesystem and play it with mpv while downloading.

    printf "/some_music.ogg\r\n" | nc somedomain.com 70 \
        | tee saved_music.ogg | mpv -

You may have seen that the data type is not part of the request
string, this is because it is only useful for the client to decide how
to handle the content. In the current case, the client is YOU, so if
you ask a menu and you want to download a file which has been tagged
with type "I" then you should use the right process to deal with an
image file.


Curl
====

It is possible to use curl to connect to a gopher server, most of its
options are supported, like timeout or traffic shaping. You need to
pass a full url with "gopher://" at the start to curl to tell it you
want to request a gopher server.

By default, curl will output the server result to stdout. Explanations
can be found in the previous section about this.