3.0 KiB
layout | title |
---|---|
page | Gopher Server |
The Gopher Content Server
The Gopher content server provides access to publicly exposed message conferences and areas over Gopher (gopher://) as well as any other content you wish to serve in your Gopher Hole!
Configuration
Gopher configuration is found in contentServers.gopher
in config.hjson
.
Item | Required | Description |
---|---|---|
enabled |
👍 | Set to true to enable Gopher |
staticRoot |
👍 | Sets the path serving as the static root path for all Gopher content. Defaults to enigma-bbs/gopher .See also Gophermap's below |
port |
👎 | Override the default port of 8070 |
publicHostname |
👍 | Set the public hostname/domain that Gopher will serve to the outside world. Example: myfancybbs.com |
publicPort |
👍 | Set the public port that Gopher will serve to the outside world. |
messageConferences |
👎 | An map of conference tags to area tags that are publicly exposed via Gopher. See example below. |
Notes on publicHostname
and publicPort
:
The Gopher protocol serves content that contains host/domain and port even when referencing it's own documents. Due to this, these members must be set to your publicly addressable Gopher server!
Gophermap's
Gophermap's are how to build menus for your Gopher Hole. Each map is a simple text file named gophermap
(all lowercase, no extension) with DOS style CRLF endings.
Within any directory nested within your staticRoot
may live a gophermap
. A template may be found in the enigma-bbsmisc
directory.
ENiGMA will pre-process gophermap
files replacing in following variables:
{publicHostname}
: The public hostname from your config.{publicPort}
: The public port from your config.
ℹ️ See Wikipedia for more information on the gophermap
format.
ℹ️ See RFC 1436 for the original Gopher spec.
💡 Tools such as gfu may help you with gophermap
's
Example Gophermap
An example gophermap
living in enigma-bbs/gopher
:
iWelcome to a Gopher server! {publicHostname} {publicPort}
1Public Message Area /msgarea {publicHostname} {publicPort}
.
Example
Let's suppose you are serving Gopher for your BBS at myfancybbs.com
. Your ENiGMA½ system is listening on the default Gopher port
of 8070 but you're behind a firewall and want port 70 exposed to the public. Lastly, you want to expose some fsxNet areas:
contentServers: {
gopher: {
enabled: true
publicHostname: myfancybbs.com
publicPort: 70
// Expose some public message conferences/areas
messageConferences: {
fsxnet: { // fsxNet's conf tag
// Areas of fsxNet we want to expose:
"fsx_gen", "fsx_bbs"
}
}
}
}