Gophernicus

Gopher is an application-layer protocol that provides the ability to extract and view and access various files on remote Web servers. Gopher was conceived in 1991 as one of the Internet’s first data/file access protocols to run on top of a TCP/IP network. It was developed at University of Minnesota and is named after the school's mascot.

There are many gopher server are available but many of them are not under development. Gophernicus is a one of the most modern, full-featured and secure gopher daemon.

!!Installation

$ doas pkg_add gophernicus

You need to create /etc/inetd.conf

And add the following line:

gopher stream tcp nowait nobody /usr/local/libexec/in.gophernicus in.gophernicus -h <hostname>

Change to you actual hostname.

Enable and start inetd

$ doas rcctl enable inetd
$ doas rcctl start inetd

And you are all set.

Put some files under /var/gopher

Then Fire up your gopher client pointing to your host.

for example:

lynx gopher://localhost

!!Configureation arguments

!!!hostname

This is by default attempted to be auto-detected by the configure script, using the command hostname. It is expected to be the publicly-accessible address of the server. However, this might be completely wrong, especially on your personal machine at home or on some cheap VPS. If you know you have a fixed numerical IP, you can also directly use that. For testing, just keep the default value of localhost which will result in selectors working only when you're connecting locally.

!!!gopherroot

The location in which your gopher server will serve from. By default is /var/gopher. Also can be changed later using the -r parameter in configuration files.

!!Post Install Configuration

Here are all the options which can be use for post install configuration. you can user them only by typing

$gophernicus -h example.com.  
-h hostname   Change server hostname (FQDN)      [$HOSTNAME]
-p port       Change server port                 [70]
-T port       Change TLS/SSL port                [0 = disabled]
-r root       Change gopher root                 [/var/gopher]
-t type       Change default gopher filetype     [0]
-g mapfile    Change gophermap file              [gophermap]
-a tagfile    Change gophertag file              [gophertag]
-c cgidir     Change CGI script directory        [/cgi-bin/]
-u userdir    Change users personal gopherspace  [public_gopher]
-l logfile    Log to Apache-compatible combined format logfile
-w width      Change default page width          [67]
-o charset    Change default output charset      [UTF-8]
-s seconds    Session timeout in seconds         [1800]
-i hits       Maximum hits until throttling      [4096]
-k kbytes     Maximum transfer until throttling  [4194304]
-f filterdir  Specify directory for output filters
-e ext=type   Map file extension to gopher filetype
-R old=new    Rewrite the beginning of a selector
-D text|file  Set or load server description for caps.txt
-L text|file  Set or load server location for caps.txt
-A admin      Set admin email for caps.txt
-U paths      Specify a colon-separated list of extra unveil(2) paths
              (OpenBSD only).
-nv           Disable virtual hosting
-nl           Disable parent directory links
-nh           Disable menu header (title)
-nf           Disable menu footer
-nd           Disable dates and filesizes in menus
-nc           Disable file content detection
-no           Disable charset conversion for output
-nq           Disable HTTP-style query strings (?query)
-ns           Disable logging to syslog
-na           Disable autogenerated caps.txt
-nt           Disable /server-status
-nm           Disable shared memory use (for debugging)
-nr           Disable root user checking (for debugging)
-np           Disable HAproxy proxy protocol
-nx           Disable execution of gophermaps and scripts
-nu           Disable personal gopherspaces
-d            Debug output in syslog and /server-status
-v            Display version number and build date
-b            Display the BSD license
-?            Display this help