gopherhole
v1.1.0
Published
Gopher server for static files.
Downloads
17
Readme
gopherhole 🐹🕳
Gopher server for static files. Supports plaintext Gopher as well as Gopher over TLS on the same port. Does not transform files in any way.
CLI
gopherhole
--plain-root ./public
--secure-root ./public
--port 70
--index gophermap
--ca ca.pem
--key key.pem
--cert cert.pem
API
const { GopherHole } = require('gopherhole')
const { readFileSync } = require('fs')
const server = new GopherHole({
// Directory served to Gopher over TCP clients.
plaintextRoot: '/path/to/unencrypted/content',
// Directory served to Gopher over TLS clients.
// Template variable $domain contains the TLS SNI server name.
// This can be used to serve multiple domains from one server.
secureRoot: '/path/to/encrypted/content/$domain',
// Filename to serve when client requests a directory.
index: 'gophermap',
// See: tls.createSecureContext()
// https://nodejs.org/api/tls.html#tls_tls_createsecurecontext_options
// Tip: Use `SNICallback` for dynamic loading of certificates
// based on the TLS SNI server name.
key: readFileSync('./key.pem'),
cert: readFileSync('./cert.pem'),
ca: [readFileSync('./ca.pem')]
})
server.listen({ port: 70 }, () => {
const { port } = server.address()
console.log(`Listening on gopher://localhost:${port}`)
})