mirror of
https://git.sr.ht/~sircmpwn/gmnisrv
synced 2024-11-03 06:07:17 -05:00
95 lines
3.3 KiB
Markdown
95 lines
3.3 KiB
Markdown
gmnisrv.ini(5)
|
|
|
|
# NAME
|
|
|
|
*gmnisrv.ini* - configuration file for *gmnisrv*(1)
|
|
|
|
# SYNTAX
|
|
|
|
*gmnisrv.ini* is an INI file. Each line is either a key/value pair, or a section
|
|
heading. Key/value pairs are specified as key=value, and sections as [section].
|
|
|
|
# CONFIGURATION KEYS
|
|
|
|
The meaning of the key depends on the section. Anonymous keys (prior to the
|
|
first [section] directive) are used to specify parameters for the daemon itself.
|
|
Sections whose name is prefixed with ":", e.g. [:tls], are sub-categories of
|
|
the daemon configuration. Otherwise, section names refer to the hostnames of
|
|
domains serviced by the *gmnisrv* daemon.
|
|
|
|
## ANONYMOUS KEYS
|
|
|
|
*listen*
|
|
A space-separated list of addresses that the daemon shall bind to. Each
|
|
address shall take the format *address*:*port*. If :*port* is omitted,
|
|
1965 (the default Gemini port) is presumed. To specify an IPv6 address,
|
|
enclose it in *[]*, e.g. *[::]*.
|
|
|
|
|
|
## TLS KEYS
|
|
|
|
The following keys are accepted under the *[:tls]* section:
|
|
|
|
*store*
|
|
Path to the certificate store on disk. This should be a persistent
|
|
directory writable by the daemon. The daemon manages its own
|
|
certificates - no user intervention is required, except in the case of
|
|
moving the daemon to another host, in which case the certificate store
|
|
must be copied to the new host.
|
|
|
|
*organization*
|
|
An optional key used during certificate generation. Fill this in with
|
|
the name of the organization responsible for the host and it will be
|
|
filled in as the X.509 /O name.
|
|
|
|
## ROUTING KEYS
|
|
|
|
To configure *gmnisrv* to service requests, routing keys must be defined. The
|
|
name of the configuration section is used to determine what kinds of requests it
|
|
configures.
|
|
|
|
The format of the section name is the _hostname_ to be serviced, followed by a
|
|
token which defines the routing strategy, and a string whose format is specific
|
|
to each routing strategy. The token and match string may be omitted
|
|
(i.e. [_hostname_] alone), which implies path routing against "/".
|
|
|
|
|] *:*
|
|
:< Route by path prefix. The URL path is compared to "_string_/".
|
|
| *=*
|
|
: Exact match. The URL path must exactly match the string.
|
|
| *~*
|
|
: Regular expression routing. The string is a JavaScript-compatible regular
|
|
expression which is tested against the URL path.
|
|
|
|
Some example section names and examples of matching paths:
|
|
|
|
|[ *[example.org:/foo]*
|
|
:< /foo, /foo/bar, /foo/bar/baz
|
|
| *[example.org=/foo.txt]*
|
|
: /foo.txt
|
|
| *[example.org~/[a-z]+\\.(png|jpg|webp)*
|
|
: /foo.png, /bar.webp
|
|
|
|
Routes should be ordered from least to most specific. The matching algorithm
|
|
attempts to match the URL against each route in reverse order, and chooses the
|
|
first route which matches.
|
|
|
|
Within each routing section, the following keys are used to configure how
|
|
*gmnisrv* will respond to matching requests:
|
|
|
|
*root*
|
|
Configures the path on disk from which files shall be served for this
|
|
host. If using path prefix matching, the prefix is trimmed, so if
|
|
example.org/foo/bar.txt is requested and matches *[example.org:/foo]*,
|
|
"bar.txt" will be appended to the root to form the file path.
|
|
|
|
*index*
|
|
Configures the name of the index file which shall be served in the event
|
|
that a request for this host does not include the filename part.
|
|
Defaults to "index.gmi".
|
|
|
|
*autoindex*
|
|
"on" to enable the auto-index feature, which presents clients with a
|
|
list of files in the requested directory when an index file cannot be
|
|
found. Off by default.
|