exceedingly simple gopher daemon
Go to file
randomuser 2b88d770e2 add a paragraph about python3/2 support 2021-08-02 22:20:44 -05:00
init add tentative service file for esgd 2021-07-23 14:39:39 -05:00
sandbox add simple cgi script to sandbox 2021-07-29 20:42:11 -05:00
.gitignore remove some stuff from the gitignore 2021-07-23 14:29:05 -05:00
LICENSE licensed under the agpl 3.0 2021-07-29 23:43:42 -05:00
README add a paragraph about python3/2 support 2021-08-02 22:20:44 -05:00
esgd.py Logger.write() also calls print() 2021-07-29 23:49:31 -05:00

README

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