esgd is a simple gopher daemon. it supports a simpler subset
of the CGI/1.1 specification for CGI, and it automatically
brings gophermaps missing certain features up to compliance.
the modules used in esgd are part of the standard python
distribution.
options:
-u, --user: user to change to on startup
-g, --group: group to change to on startup
-s, --host: host name
-gs, --gopherhost: host name to use for links
when parsing gophermaps
-p, --port: port
-d, --dir: directory to host from
-ndx, --direxc PATH: selectors containing
PATH are not executing
-nx, --nocgi: disable cgi execution
hints:
if you're running esgd with the python executable on the
command line, e.g. `python esgd.py --host 0.0.0.0
--gopherhost test`, ENSURE THAT THE EXECUTABLE IS INTERPRETING
PYTHON3 CODE. On my system, you have to use the executable
`python3`; `python` is python2 on my system.
by default python's socketserver when hosting on "localhost"
will bind to the loopback interface. this is fine for testing,
but in production you'll want to use --host '0.0.0.0' to force
socketserver to bind to your public-facing interface.
also, due to some dumb code in socketserver, IPv6 is not
supported at this time. once this server gets in a stable
condition a rewrite using system level sockets will be in
order.
note that when using the --host parameter you might want to
use --gopherhost to set a publicly facing domain name. this
name is substituted in in gophermaps that are incomplete.
(somewhat) applicable standards:
- RFC3875: The Common Gateway Interface (CGI) Version 1.1
NOTE: support for CGI/1.1 is limited and not up to spec.
this will change in the future.
- RFC1436: The Internet Gopher Protocol (a distributed
document search and retrieval protocol)
NOTE: almost to full compliance
files:
esgd.py - main executable
README - this file
sandbox - test gophermaps for setting up the server
init - init scripts/configuration files
Copyright 2021 randomuser