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