You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gophi/docs/USAGE.md

4.0 KiB

Gophi Arguments

gophi [args]
      -root               Server root directory
      -bind-addr          IP address to bind to
      -port               Port to listen on
      -fwd-port           Outward-facing port
      -hostname           Server hostname (FQDN)

      -sys-log            System log output location ['stdout', 'null', $filename]
      -acc-log            Access log output location ['stdout', 'null', $filename]

      -cache-monitor-freq File cache freshness monitor frequency
      -cache-size         File cache size
      -cache-file-max     Max cached file size (megabytes)

      -restrict-paths     Restrict paths as new-line separated list of regex statements
                          (see documenation below)
      -remap-requests     Remap requests as new-line separated list of remap statements
                          (see documenation below)

      -cgi-dir            CGI scripts directory (empty to disable)
      -max-cgi-time       Max CGI script execution time
      -safe-path          CGI environment safe PATH variable

      -user-dir           User subdir for personal server space

      -read-deadline      Connection read deadline (timeout)
      -write-deadline     Connection write deadline (timeout)

      -conn-read-buf      Connection read buffer size (bytes)
      -conn-write-buf     Connection write buffer size (bytes)
      -conn-read-max      Connection read max (bytes)

      -file-read-buf      File read buffer size (bytes)

      -version            Print version string

# Gopher Specific Arguments
      -page-width         Gopher page width

      -footer-text        Footer text (empty to disable)

      -subgopher-size-max Subgophermap size max (megabytes)

      -admin              Generated policy file admin email
      -description        Generated policy file server description
      -geolocation        Generated policy file server geolocation

Path Restrictions Regex

Path restrictions are parsed as a new-line separated list of regex statements:

/some/regex/statement.*

Internally the regex statements are parsed as (show as Python code):

/match_statement

regex = "(?m)" + "/match_statement".removeprefix("/") + "$"

Entries are parsed, compiled, and so matched-against in order. They are matched against relative paths so please bear this in mind if you have user directories enabled.

Request Remapping Regex

Request remapping is parsed as a new-line separated list of remap statements of form:

/regex/matched/against -> /regex/template

Internally, the request remapping statements are parsed as (shown as Python code):

/match_statement -> /template_statement

# Where the match statement is compiled using
regex = "(?m)" + "/match_statement".removeprefix("/") + "$"

# And the template is stored as
template = "/template_statement".removeprefix("/")

e.g. scripts within cgi-bin to the root directory:

/(?P<uri>[^/]+) -> /cgi-bin/$uri

Entries are parsed, compiled, and so matched-against in order. They are matched against relative paths so please bear this in mind if you have user directories enabled.

SCGI Request Mapping Regex

Request mapping is parsed as a new-line separated list of remap statements of form:

/regex/matched/against -> /var/run/gopher_scgi.sock

Internally, the request remapping statements are parsed as (shown as Python code):

/match_statement -> /template_statement.sock

# Where the match statement is compiled using
regex = "(?m)" + "/match_statement".removeprefix("/") + "$"

# And the template is stored as
template = "/template_statement.sock"

e.g. everything under scgi to the SCGI socket:

/scgi/(?P<uri>[^/]+) -> /var/run/gopher_scgi.sock

User server spaces

When user server spaces are enabled, they are accessed via the following gopher URL:

gopher://server.host:70/1/~user

Where the username supplied will then look for a user folder under:

/home/$user/$user_folder

For example:

User directory = public_gopher

gopher://server.host:70/1/~grufwub

Will fetch from the filesystem:

/home/grufwub/public_gopher