aboutsummaryrefslogtreecommitdiff
path: root/straper/db/public/pygopherd
diff options
context:
space:
mode:
Diffstat (limited to 'straper/db/public/pygopherd')
-rw-r--r--straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf514
-rw-r--r--straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf.bak.2026-03-16-150223514
-rw-r--r--straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf.bak.2026-03-16-151219514
3 files changed, 1542 insertions, 0 deletions
diff --git a/straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf b/straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf
new file mode 100644
index 0000000..085ac70
--- /dev/null
+++ b/straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf
@@ -0,0 +1,514 @@
+######################################################################
+# OVERALL SETTINGS FOR PYGOPHERD
+######################################################################
+
+[pygopherd]
+
+##################################################
+# Operating System / Overall Behavior
+##################################################
+
+# Set this to true if you want the server to "detach" itself; that is,
+# to go into the background after it starts.
+
+detach = no
+
+# If you want gopherd to write a PID file, set this to the location
+# where you want it. Otherwise, comment out this line.
+
+pidfile = /var/run/pygopherd/pygopherd.pid
+
+##################################################
+# Network
+##################################################
+
+# The server name to present to the world. If you do not specify it
+# here, Pygopherd will attempt to figure it out automatically.
+# This is used only to present to clients. It does not control
+# where the server listens.
+#
+servername = gopher.labunix.xyz
+
+# The interface on which to listen. It should be an IP address or
+# a domain name. If specified, pygopherd will attempt to listen to
+# the specified port on only this interface -- useful if you are doing
+# virtual hosting. If not specified, pygopherd will listen on all
+# interfaces the OS provides. If in doubt, do not specify this.
+#
+# interface = gopher.example.com
+
+# What port to listen on. If not running as root, this must be
+# greater than 1024.
+
+port = 70
+
+# Type of server to run. Valid options are ForkingTCPServer
+# and ThreadingTCPServer. ForkingTCPServer is highly recommended
+# for now.
+
+servertype = ForkingTCPServer
+
+# What port to *say* we're listening on. Most people should NOT
+# specify this. You might want to if you are using firewalling or
+# port forwarding and the port number is different to the world than
+# it is locally.
+
+# advertisedport = 70
+
+# Do we timeout on client conections? HIGHLY RECOMMENDED!
+# Value is given in seconds. If given, any read or write that makes
+# no progress in this number of seconds will time out.
+
+timeout = 60
+
+##################################################
+# Data Handling
+##################################################
+
+# You can add a header to every directory by creating a
+# .abstract file in that directory and filling it with the
+# information you like. This will then be rendered as a header
+# for the directory. This option controls this feature. Note:
+# for this to work, you must define a mapping to ABSTRACT in eaexts
+# below.
+
+abstract_headers = on
+
+# Individual files and folders can also have abstracts. You can
+# choose to have pygopherd render these abstracts in the directory
+# listing itself -- they'll appear beneath the menu name for the file.
+# You can set this option to any of three values:
+#
+# always -- always render these abstracts.
+# unsupported -- render them only for protocols that do not natively
+# support abstracts. Gopher+ is the only protocol that natively
+# supports them currently.
+# never -- never render these abstracts.
+
+abstract_entries = always
+
+##################################################
+# Error handling
+##################################################
+
+# If there is an error, you can decide whether or not to log a full
+# backtrace. A full backtrace will usually be needed to find the
+# problem.
+
+tracebacks = yes
+
+##################################################
+# Security
+##################################################
+
+## Whether or not to use chroot.
+# This option is only valid if you are running pygopherd as root!
+
+usechroot = yes
+
+## Username and groupname to setreuid/setregid to. Valid only if
+## starting pygopherd as root. Comment out if you don't want this
+## functionality. NOTE: DO NOT RUN AS ROOT UNLESS YOU USE THESE! BAD BAD BAD!
+
+#setuid = gopher
+#setgid = gopher
+
+##################################################
+# TLS
+##################################################
+
+# Enable TLS by sniffing the first byte of the client request for the start of
+# a TLS handshake. This allows both TLS and plaintext requests to be served
+# over the same port.
+
+enable_tls = no
+
+# File paths to the server certificate and keyfile in PEM format. These are
+# required if TLS is enabled. When using chroot, the certificates will be
+# loaded while root privileges are still active.
+#
+# tls_certfile =
+# tls_keyfile =
+
+##################################################
+# Filesystem and MIME
+##################################################
+
+# Where the documents are stored.
+
+root = /srv/gopher
+
+# Location of a file to use to figure out MIME types. You can
+# specify multiple files here -- just separate them with a colon.
+# ALL of them that are found will be read.
+
+mimetypes = ./conf/mime.types:/etc/pygopherd/mime.types:/etc/mime.types
+
+# Encodings. You can use the default with the following syntax. The
+# mimetypex.encodings_map is {'.Z': 'compress', '.gz': 'gzip'}.
+#
+# For ease of use in the config file, we specify this as a list of
+# tuples. You can convert any hash to a list of tuples by using .items()
+
+# encoding = mimetypes.encodings_map.items()
+
+# You can override the default entirely (ie, to remove those) like this:
+
+# encoding = {'.bz2' : 'bzip2', '.gz' : 'gzip'}.items()
+# Or the same thing:
+# encoding = [('.bz2', 'bzip2'), ('.gz', 'gzip')]
+
+# Or, you can extend the default like so:
+
+encoding = list(mimetypes.encodings_map.items()) + \
+ list({'.bz2' : 'bzip2',
+ '.tal': 'tal.TALFileHandler'
+ }.items())
+
+######################################################################
+# Logging
+######################################################################
+
+[logger]
+
+# Log method to use. One of:
+# syslog -- use Unix syslog facility
+# file -- log to standard output (future capability for logging to other
+# files)
+# none -- no logging
+
+logmethod = syslog
+
+# If you enable syslog, you will need to define these as well:
+
+# priority -- one of the following (listed in order of high to low):
+# LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE,
+# LOG_INFO, LOG_DEBUG
+
+priority = LOG_INFO
+
+# Facility -- one of the following:
+# LOG_KERN, LOG_USER, LOG_MAIL, LOG_DAEMON, LOG_AUTH, LOG_LPR, LOG_NEWS,
+# LOG_UUCP, LOG_CRON, LOG_LOCAL0 - LOG_LOCAL7
+
+facility = LOG_LOCAL3
+
+
+
+######################################################################
+# GOPHER OBJECTS
+######################################################################
+
+# Settings for gopher objects
+
+[GopherEntry]
+
+# Use this MIME type if no other type is found.
+defaultmimetype = text/plain
+
+# Mapping from MIME types to gopher0 single-character types.
+# This is a list of lists. The first entry in each list is a
+# regexp to match and the second is the result.
+#
+# Please have a .* at the end to map all unknown types to a certain
+# character. For best results, that character should be nicely
+# corresponding to the defaultmimetype.
+
+mapping = [['text/html', 'h'],
+ ['text/.+', '0'],
+ ['application/mac-binhex40', '4'],
+ ['audio/.+', 's'],
+ ['image/gif', 'g'],
+ ['image/.+', 'I'],
+ ['application/gopher-menu', '1'],
+ ['application/gopher\\+-menu', '1'],
+ ['multipart/mixed', 'M'],
+ ['application/.+', '9'],
+ ['.*', '0']
+ ]
+
+# This is used by the system to generate Extended Attribute (EA), aka
+# Gopher+ blocks for a file. Basically, with the setup shown below,
+# you can create "filename.txt.abstract" to define the abstract
+# property for filename.txt. If you do that, you will probably want
+# to add these properties to ignorepatt below. The list is a mapping
+# from an extension to a block name.
+#
+# Sample for UMN compatibility:
+#
+eaexts = {'.abstract' : 'ABSTRACT',
+ '.keywords' : 'KEYWORDS',
+ '.ask' : 'ASK',
+ '.3d' : '3D'}
+#
+# If you want to disable this capability, use this:
+#
+
+# eaexts = {}
+
+
+######################################################################
+# HANDLERS
+######################################################################
+
+##################################################
+# Handler multiplexer
+##################################################
+
+[handlers.HandlerMultiplexer]
+
+# A list of the handlers to consider. The handlers
+# are tried in the order listed.
+#
+#
+### Suggested settings:
+# Note: the UMNDirHandler will handle all directories, even if they
+# do not have UMN-specific files, so you do not need to list the
+# dirhandler in this case.
+#
+# Warning: scriptexec and pyg can execute arbitrary code stored in
+# your path. Don't enable unless you know what you're doing!
+#
+# For UMN emulation: (full UMN featureset excluding scriptexec, no others)
+#
+# handlers = [url.HTMLURLHandler, UMN.UMNDirHandler,
+# html.HTMLFileTitleHandler,
+# mbox.MBoxMessageHandler, mbox.MBoxFolderHandler,
+# file.CompressedFileHandler, file.FileHandler]
+#
+# For Bucktooth emulation: (full Buck featureset excluding scriptexec)
+#
+#handlers = [gophermap.BuckGophermapHandler, url.HTMLURLHandler,
+# file.FileHandler, dir.DirHandler]
+#
+# For full Pygopherd featureset excluding scripts, compression, and PYG.
+# Supports both UMN and Bucktooth featuresets. This is the default
+# configuration for Pygopherd because it is secure yet versatile.
+#
+
+handlers = [url.HTMLURLHandler, gophermap.BuckGophermapHandler,
+ mbox.MaildirFolderHandler, mbox.MaildirMessageHandler,
+ UMN.UMNDirHandler, html.HTMLFileTitleHandler,
+ mbox.MBoxMessageHandler, mbox.MBoxFolderHandler,
+ file.FileHandler]
+
+# For full Pygopherd featureset including scripts and PYG. Same as
+# above but adds scripts, decompression, and PYG execution.
+
+#handlers = [url.HTMLURLHandler, gophermap.BuckGophermapHandler,
+# mbox.MaildirFolderHandler, mbox.MaildirMessageHandler,
+# UMN.UMNDirHandler,
+# tal.TALFileHandler,
+# html.HTMLFileTitleHandler,
+# mbox.MBoxMessageHandler, mbox.MBoxFolderHandler,
+# pyg.PYGHandler, scriptexec.ExecHandler,
+# file.CompressedFileHandler, file.FileHandler,
+# url.URLTypeRewriter]
+
+##################################################
+# Decompressing file handler
+##################################################
+
+[handlers.file.CompressedFileHandler]
+
+# Decompressors is a map from an encoding (as specified in the
+# pygopherd section above) to a decompression program.
+# The decompression program must
+# accept the input in its stdin and write the decompressed output
+# to stdout.
+#
+# If you do not want to decompress things automatically for your
+# clients, you might wish to NOT use this handler.
+#
+# Note: this feature is probably NOT compatible with chroot unless
+# you take extra precautions.
+
+# We enable no decompressors by default... you'll need to do that.
+
+decompressors = {}
+
+#decompressors = {'bzip2': 'bzcat',
+# 'gzip' : 'zcat',
+# 'compress' : 'zcat'}
+
+# Regexp to match against filenames pending decompression.
+# The default will let ALL files be decompressed.
+
+decompresspatt = .*
+
+# You can be more restrictive:
+
+# decompresspatt = \.txt\.(bz2|gz|Z)$
+
+
+##################################################
+# Directory handler
+##################################################
+
+[handlers.dir.DirHandler]
+# A regular expression of files to ignore. These files
+# will not be presented in lists of files to clients,
+# but if clients know the exact path to the files, they can
+# still be requested.
+#
+# This pattern is matched against the requested selector.
+# Selectors are guaranteed to begin with a slash by this point.
+# and never end with a slash unless they consist solely of a slash.
+#
+# By default, we ignore files starting with a period, gophermap
+# files, and files ending with a tilde.
+#
+# The default emulates UMN's default plus buck. Please note:
+# UMNDirHandler implicitly will keep all files starting with a dot out of
+# directory listings. If you exclude these files explicitly in ignorepatt,
+# then not only will they not show up, but the handler will also not scan
+# them for links and the like.
+#
+# A buck-only server might like:
+#
+# ignorepatt = ~$|/\.|/gophermap$
+
+ignorepatt = /.cap$|/lost\+found$|/lib$|/bin$|/etc$|/dev$|~$|/\.cache|/\.forward$|/\.message$|/\.hushlogin$|/\.kermrc$|/\.notar$|/\.where$|/veronica.ctl$|/robots.txt$|/nohup.out$|/gophermap$|\.abstract$|\.keyboards$|\.ask|\.3d$|~$
+
+# Expiration time, in seconds, for the cache.
+# Set to 0 to disable caching entirely.
+
+cachetime = 180
+
+# Name of the cahe file. Must be set to something even if the cachetime
+# is zero. In that case, this filename will not be used but for the conf
+# file to parse, it must still be set.
+
+cachefile = .cache.pygopherd.dir
+
+##################################################
+# UMN Directory Handler
+##################################################
+
+[handlers.UMN.UMNDirHandler]
+
+# Extension stripping behavior. When a file from a directory
+# is presented in a menu, and no name is given, what to do?
+# For instance, given a file Welcome.txt and pygopherd.tar.gz:
+#
+# If extstrip is none, present Welcome.txt and pygopherd.tar.gz in the
+# menu.
+#
+# If extstrip is nonencoded, modify only those files that do not
+# have encodings. (If CompressedFileHandler is used, modify only
+# those files that to not have *HANDLED* encodings.)
+# If gzip is NOT a handled encoding, you'd get names Welcome and
+# pygopherd.tar.gz. If gzip IS a handled encoding, you'd get
+# Welcome and pygopherd.
+#
+# If extstrip is full, modify all modifyable names. Welcome.txt ->
+# Welcome and pygopherd.tar.gz -> pygopherd.
+
+# extstrip = none
+extstrip = nonencoded
+# extstrip = full
+
+[handlers.ZIP.ZIPHandler]
+##################################################
+# ZIP file handler
+##################################################
+
+# Even if it's listed in the available handlers, it's disabled here by
+# default.
+
+enabled = false
+
+pattern = \.zip$
+
+######################################################################
+# PROTOCOLS
+######################################################################
+
+##################################################
+# Protocol Multiplexer
+##################################################
+
+[protocols.ProtocolMultiplexer]
+
+# A list of the protocols to consider for each request.
+# The protocols are tried in the order listed.
+
+protocols = [wap.WAPProtocol, gemini.GeminiProtocol,
+ http.HTTPProtocol, http.HTTPSProtocol,
+ spartan.SpartanProtocol,
+ gopherp.GopherPlusProtocol, gopherp.SecureGopherPlusProtocol,
+ rfc1436.GopherProtocol, rfc1436.SecureGopherProtocol]
+
+##################################################
+# Gopher+ Protocol
+##################################################
+
+[protocols.gopherp.GopherPlusProtocol]
+# The name and e-mail of the administrator
+admin = Unconfigured Pygopherd Admin <pygopherd@nowhere.nowhere>
+
+##################################################
+# HTTP Protocol
+##################################################
+
+[protocols.http.HTTPProtocol]
+iconmapping = {'h' : 'text.gif',
+ '0' : 'text.gif',
+ '4' : 'binhex.gif',
+ 's' : 'sound1.gif',
+ 'g' : 'image3.gif',
+ 'I' : 'image3.gif',
+ 'M' : 'text.gif',
+ '9' : 'binary.gif',
+ '1' : 'folder.gif',
+ '7' : 'folder.gif',
+ 'i' : 'blank.gif'}
+
+# You can use this option to put something at the top of each HTML
+# page generated.
+#
+# The following tokens will be interpolated:
+#
+# GOPHERURL -- the Gopher URL for this page.
+#
+
+pagetopper = Welcome to Gopherspace! You are browsing Gopher through
+ a Web interface right now. You can use most browsers or Gopher
+ clients to browse Gopher natively. If your browser supports it,
+ <A HREF="GOPHERURL">try clicking here</A> to see this page
+ in Gopher directly. To find Gopher browsers,
+ <A HREF="https://en.wikipedia.org/wiki/Gopher_(protocol)#Client_software">click
+ here</A>.<HR>
+
+##################################################
+# WAP Protocol
+##################################################
+
+[protocols.wap.WAPProtocol]
+
+# waptop is the URL to access with WAP devices. The default, /wap, means
+# that accessing http://sitename.com/wap will bring up your site in WAP
+# mode.
+#
+# PyGopherd can autodetect WAP from some phones, so this is not always
+# necessary.
+
+waptop = /wap
+
+##################################################
+# Gemini Protocol
+##################################################
+
+[protocols.gemini.GeminiProtocol]
+# Note that the gemini protocol *requires* the TLS section to also be enabled.
+
+footer = => https://www.github.com/michael-lazar/pygopherd Generated by PyGopherd
+
+##################################################
+# Spartan Protocol
+##################################################
+
+[protocols.gemini.SpartanProtocol]
+
+footer = => https://www.github.com/michael-lazar/pygopherd Generated by PyGopherd
+
diff --git a/straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf.bak.2026-03-16-150223 b/straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf.bak.2026-03-16-150223
new file mode 100644
index 0000000..7b0022c
--- /dev/null
+++ b/straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf.bak.2026-03-16-150223
@@ -0,0 +1,514 @@
+######################################################################
+# OVERALL SETTINGS FOR PYGOPHERD
+######################################################################
+
+[pygopherd]
+
+##################################################
+# Operating System / Overall Behavior
+##################################################
+
+# Set this to true if you want the server to "detach" itself; that is,
+# to go into the background after it starts.
+
+detach = no
+
+# If you want gopherd to write a PID file, set this to the location
+# where you want it. Otherwise, comment out this line.
+
+pidfile = /var/run/pygopherd/pygopherd.pid
+
+##################################################
+# Network
+##################################################
+
+# The server name to present to the world. If you do not specify it
+# here, Pygopherd will attempt to figure it out automatically.
+# This is used only to present to clients. It does not control
+# where the server listens.
+#
+# servername = gopher.example.com
+
+# The interface on which to listen. It should be an IP address or
+# a domain name. If specified, pygopherd will attempt to listen to
+# the specified port on only this interface -- useful if you are doing
+# virtual hosting. If not specified, pygopherd will listen on all
+# interfaces the OS provides. If in doubt, do not specify this.
+#
+# interface = gopher.example.com
+
+# What port to listen on. If not running as root, this must be
+# greater than 1024.
+
+port = 70
+
+# Type of server to run. Valid options are ForkingTCPServer
+# and ThreadingTCPServer. ForkingTCPServer is highly recommended
+# for now.
+
+servertype = ForkingTCPServer
+
+# What port to *say* we're listening on. Most people should NOT
+# specify this. You might want to if you are using firewalling or
+# port forwarding and the port number is different to the world than
+# it is locally.
+
+# advertisedport = 70
+
+# Do we timeout on client conections? HIGHLY RECOMMENDED!
+# Value is given in seconds. If given, any read or write that makes
+# no progress in this number of seconds will time out.
+
+timeout = 60
+
+##################################################
+# Data Handling
+##################################################
+
+# You can add a header to every directory by creating a
+# .abstract file in that directory and filling it with the
+# information you like. This will then be rendered as a header
+# for the directory. This option controls this feature. Note:
+# for this to work, you must define a mapping to ABSTRACT in eaexts
+# below.
+
+abstract_headers = on
+
+# Individual files and folders can also have abstracts. You can
+# choose to have pygopherd render these abstracts in the directory
+# listing itself -- they'll appear beneath the menu name for the file.
+# You can set this option to any of three values:
+#
+# always -- always render these abstracts.
+# unsupported -- render them only for protocols that do not natively
+# support abstracts. Gopher+ is the only protocol that natively
+# supports them currently.
+# never -- never render these abstracts.
+
+abstract_entries = always
+
+##################################################
+# Error handling
+##################################################
+
+# If there is an error, you can decide whether or not to log a full
+# backtrace. A full backtrace will usually be needed to find the
+# problem.
+
+tracebacks = yes
+
+##################################################
+# Security
+##################################################
+
+## Whether or not to use chroot.
+# This option is only valid if you are running pygopherd as root!
+
+usechroot = yes
+
+## Username and groupname to setreuid/setregid to. Valid only if
+## starting pygopherd as root. Comment out if you don't want this
+## functionality. NOTE: DO NOT RUN AS ROOT UNLESS YOU USE THESE! BAD BAD BAD!
+
+#setuid = gopher
+#setgid = gopher
+
+##################################################
+# TLS
+##################################################
+
+# Enable TLS by sniffing the first byte of the client request for the start of
+# a TLS handshake. This allows both TLS and plaintext requests to be served
+# over the same port.
+
+enable_tls = no
+
+# File paths to the server certificate and keyfile in PEM format. These are
+# required if TLS is enabled. When using chroot, the certificates will be
+# loaded while root privileges are still active.
+#
+# tls_certfile =
+# tls_keyfile =
+
+##################################################
+# Filesystem and MIME
+##################################################
+
+# Where the documents are stored.
+
+root = /var/gopher
+
+# Location of a file to use to figure out MIME types. You can
+# specify multiple files here -- just separate them with a colon.
+# ALL of them that are found will be read.
+
+mimetypes = ./conf/mime.types:/etc/pygopherd/mime.types:/etc/mime.types
+
+# Encodings. You can use the default with the following syntax. The
+# mimetypex.encodings_map is {'.Z': 'compress', '.gz': 'gzip'}.
+#
+# For ease of use in the config file, we specify this as a list of
+# tuples. You can convert any hash to a list of tuples by using .items()
+
+# encoding = mimetypes.encodings_map.items()
+
+# You can override the default entirely (ie, to remove those) like this:
+
+# encoding = {'.bz2' : 'bzip2', '.gz' : 'gzip'}.items()
+# Or the same thing:
+# encoding = [('.bz2', 'bzip2'), ('.gz', 'gzip')]
+
+# Or, you can extend the default like so:
+
+encoding = list(mimetypes.encodings_map.items()) + \
+ list({'.bz2' : 'bzip2',
+ '.tal': 'tal.TALFileHandler'
+ }.items())
+
+######################################################################
+# Logging
+######################################################################
+
+[logger]
+
+# Log method to use. One of:
+# syslog -- use Unix syslog facility
+# file -- log to standard output (future capability for logging to other
+# files)
+# none -- no logging
+
+logmethod = syslog
+
+# If you enable syslog, you will need to define these as well:
+
+# priority -- one of the following (listed in order of high to low):
+# LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE,
+# LOG_INFO, LOG_DEBUG
+
+priority = LOG_INFO
+
+# Facility -- one of the following:
+# LOG_KERN, LOG_USER, LOG_MAIL, LOG_DAEMON, LOG_AUTH, LOG_LPR, LOG_NEWS,
+# LOG_UUCP, LOG_CRON, LOG_LOCAL0 - LOG_LOCAL7
+
+facility = LOG_LOCAL3
+
+
+
+######################################################################
+# GOPHER OBJECTS
+######################################################################
+
+# Settings for gopher objects
+
+[GopherEntry]
+
+# Use this MIME type if no other type is found.
+defaultmimetype = text/plain
+
+# Mapping from MIME types to gopher0 single-character types.
+# This is a list of lists. The first entry in each list is a
+# regexp to match and the second is the result.
+#
+# Please have a .* at the end to map all unknown types to a certain
+# character. For best results, that character should be nicely
+# corresponding to the defaultmimetype.
+
+mapping = [['text/html', 'h'],
+ ['text/.+', '0'],
+ ['application/mac-binhex40', '4'],
+ ['audio/.+', 's'],
+ ['image/gif', 'g'],
+ ['image/.+', 'I'],
+ ['application/gopher-menu', '1'],
+ ['application/gopher\\+-menu', '1'],
+ ['multipart/mixed', 'M'],
+ ['application/.+', '9'],
+ ['.*', '0']
+ ]
+
+# This is used by the system to generate Extended Attribute (EA), aka
+# Gopher+ blocks for a file. Basically, with the setup shown below,
+# you can create "filename.txt.abstract" to define the abstract
+# property for filename.txt. If you do that, you will probably want
+# to add these properties to ignorepatt below. The list is a mapping
+# from an extension to a block name.
+#
+# Sample for UMN compatibility:
+#
+eaexts = {'.abstract' : 'ABSTRACT',
+ '.keywords' : 'KEYWORDS',
+ '.ask' : 'ASK',
+ '.3d' : '3D'}
+#
+# If you want to disable this capability, use this:
+#
+
+# eaexts = {}
+
+
+######################################################################
+# HANDLERS
+######################################################################
+
+##################################################
+# Handler multiplexer
+##################################################
+
+[handlers.HandlerMultiplexer]
+
+# A list of the handlers to consider. The handlers
+# are tried in the order listed.
+#
+#
+### Suggested settings:
+# Note: the UMNDirHandler will handle all directories, even if they
+# do not have UMN-specific files, so you do not need to list the
+# dirhandler in this case.
+#
+# Warning: scriptexec and pyg can execute arbitrary code stored in
+# your path. Don't enable unless you know what you're doing!
+#
+# For UMN emulation: (full UMN featureset excluding scriptexec, no others)
+#
+# handlers = [url.HTMLURLHandler, UMN.UMNDirHandler,
+# html.HTMLFileTitleHandler,
+# mbox.MBoxMessageHandler, mbox.MBoxFolderHandler,
+# file.CompressedFileHandler, file.FileHandler]
+#
+# For Bucktooth emulation: (full Buck featureset excluding scriptexec)
+#
+#handlers = [gophermap.BuckGophermapHandler, url.HTMLURLHandler,
+# file.FileHandler, dir.DirHandler]
+#
+# For full Pygopherd featureset excluding scripts, compression, and PYG.
+# Supports both UMN and Bucktooth featuresets. This is the default
+# configuration for Pygopherd because it is secure yet versatile.
+#
+
+handlers = [url.HTMLURLHandler, gophermap.BuckGophermapHandler,
+ mbox.MaildirFolderHandler, mbox.MaildirMessageHandler,
+ UMN.UMNDirHandler, html.HTMLFileTitleHandler,
+ mbox.MBoxMessageHandler, mbox.MBoxFolderHandler,
+ file.FileHandler]
+
+# For full Pygopherd featureset including scripts and PYG. Same as
+# above but adds scripts, decompression, and PYG execution.
+
+#handlers = [url.HTMLURLHandler, gophermap.BuckGophermapHandler,
+# mbox.MaildirFolderHandler, mbox.MaildirMessageHandler,
+# UMN.UMNDirHandler,
+# tal.TALFileHandler,
+# html.HTMLFileTitleHandler,
+# mbox.MBoxMessageHandler, mbox.MBoxFolderHandler,
+# pyg.PYGHandler, scriptexec.ExecHandler,
+# file.CompressedFileHandler, file.FileHandler,
+# url.URLTypeRewriter]
+
+##################################################
+# Decompressing file handler
+##################################################
+
+[handlers.file.CompressedFileHandler]
+
+# Decompressors is a map from an encoding (as specified in the
+# pygopherd section above) to a decompression program.
+# The decompression program must
+# accept the input in its stdin and write the decompressed output
+# to stdout.
+#
+# If you do not want to decompress things automatically for your
+# clients, you might wish to NOT use this handler.
+#
+# Note: this feature is probably NOT compatible with chroot unless
+# you take extra precautions.
+
+# We enable no decompressors by default... you'll need to do that.
+
+decompressors = {}
+
+#decompressors = {'bzip2': 'bzcat',
+# 'gzip' : 'zcat',
+# 'compress' : 'zcat'}
+
+# Regexp to match against filenames pending decompression.
+# The default will let ALL files be decompressed.
+
+decompresspatt = .*
+
+# You can be more restrictive:
+
+# decompresspatt = \.txt\.(bz2|gz|Z)$
+
+
+##################################################
+# Directory handler
+##################################################
+
+[handlers.dir.DirHandler]
+# A regular expression of files to ignore. These files
+# will not be presented in lists of files to clients,
+# but if clients know the exact path to the files, they can
+# still be requested.
+#
+# This pattern is matched against the requested selector.
+# Selectors are guaranteed to begin with a slash by this point.
+# and never end with a slash unless they consist solely of a slash.
+#
+# By default, we ignore files starting with a period, gophermap
+# files, and files ending with a tilde.
+#
+# The default emulates UMN's default plus buck. Please note:
+# UMNDirHandler implicitly will keep all files starting with a dot out of
+# directory listings. If you exclude these files explicitly in ignorepatt,
+# then not only will they not show up, but the handler will also not scan
+# them for links and the like.
+#
+# A buck-only server might like:
+#
+# ignorepatt = ~$|/\.|/gophermap$
+
+ignorepatt = /.cap$|/lost\+found$|/lib$|/bin$|/etc$|/dev$|~$|/\.cache|/\.forward$|/\.message$|/\.hushlogin$|/\.kermrc$|/\.notar$|/\.where$|/veronica.ctl$|/robots.txt$|/nohup.out$|/gophermap$|\.abstract$|\.keyboards$|\.ask|\.3d$|~$
+
+# Expiration time, in seconds, for the cache.
+# Set to 0 to disable caching entirely.
+
+cachetime = 180
+
+# Name of the cahe file. Must be set to something even if the cachetime
+# is zero. In that case, this filename will not be used but for the conf
+# file to parse, it must still be set.
+
+cachefile = .cache.pygopherd.dir
+
+##################################################
+# UMN Directory Handler
+##################################################
+
+[handlers.UMN.UMNDirHandler]
+
+# Extension stripping behavior. When a file from a directory
+# is presented in a menu, and no name is given, what to do?
+# For instance, given a file Welcome.txt and pygopherd.tar.gz:
+#
+# If extstrip is none, present Welcome.txt and pygopherd.tar.gz in the
+# menu.
+#
+# If extstrip is nonencoded, modify only those files that do not
+# have encodings. (If CompressedFileHandler is used, modify only
+# those files that to not have *HANDLED* encodings.)
+# If gzip is NOT a handled encoding, you'd get names Welcome and
+# pygopherd.tar.gz. If gzip IS a handled encoding, you'd get
+# Welcome and pygopherd.
+#
+# If extstrip is full, modify all modifyable names. Welcome.txt ->
+# Welcome and pygopherd.tar.gz -> pygopherd.
+
+# extstrip = none
+extstrip = nonencoded
+# extstrip = full
+
+[handlers.ZIP.ZIPHandler]
+##################################################
+# ZIP file handler
+##################################################
+
+# Even if it's listed in the available handlers, it's disabled here by
+# default.
+
+enabled = false
+
+pattern = \.zip$
+
+######################################################################
+# PROTOCOLS
+######################################################################
+
+##################################################
+# Protocol Multiplexer
+##################################################
+
+[protocols.ProtocolMultiplexer]
+
+# A list of the protocols to consider for each request.
+# The protocols are tried in the order listed.
+
+protocols = [wap.WAPProtocol, gemini.GeminiProtocol,
+ http.HTTPProtocol, http.HTTPSProtocol,
+ spartan.SpartanProtocol,
+ gopherp.GopherPlusProtocol, gopherp.SecureGopherPlusProtocol,
+ rfc1436.GopherProtocol, rfc1436.SecureGopherProtocol]
+
+##################################################
+# Gopher+ Protocol
+##################################################
+
+[protocols.gopherp.GopherPlusProtocol]
+# The name and e-mail of the administrator
+admin = Unconfigured Pygopherd Admin <pygopherd@nowhere.nowhere>
+
+##################################################
+# HTTP Protocol
+##################################################
+
+[protocols.http.HTTPProtocol]
+iconmapping = {'h' : 'text.gif',
+ '0' : 'text.gif',
+ '4' : 'binhex.gif',
+ 's' : 'sound1.gif',
+ 'g' : 'image3.gif',
+ 'I' : 'image3.gif',
+ 'M' : 'text.gif',
+ '9' : 'binary.gif',
+ '1' : 'folder.gif',
+ '7' : 'folder.gif',
+ 'i' : 'blank.gif'}
+
+# You can use this option to put something at the top of each HTML
+# page generated.
+#
+# The following tokens will be interpolated:
+#
+# GOPHERURL -- the Gopher URL for this page.
+#
+
+pagetopper = Welcome to Gopherspace! You are browsing Gopher through
+ a Web interface right now. You can use most browsers or Gopher
+ clients to browse Gopher natively. If your browser supports it,
+ <A HREF="GOPHERURL">try clicking here</A> to see this page
+ in Gopher directly. To find Gopher browsers,
+ <A HREF="https://en.wikipedia.org/wiki/Gopher_(protocol)#Client_software">click
+ here</A>.<HR>
+
+##################################################
+# WAP Protocol
+##################################################
+
+[protocols.wap.WAPProtocol]
+
+# waptop is the URL to access with WAP devices. The default, /wap, means
+# that accessing http://sitename.com/wap will bring up your site in WAP
+# mode.
+#
+# PyGopherd can autodetect WAP from some phones, so this is not always
+# necessary.
+
+waptop = /wap
+
+##################################################
+# Gemini Protocol
+##################################################
+
+[protocols.gemini.GeminiProtocol]
+# Note that the gemini protocol *requires* the TLS section to also be enabled.
+
+footer = => https://www.github.com/michael-lazar/pygopherd Generated by PyGopherd
+
+##################################################
+# Spartan Protocol
+##################################################
+
+[protocols.gemini.SpartanProtocol]
+
+footer = => https://www.github.com/michael-lazar/pygopherd Generated by PyGopherd
+
diff --git a/straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf.bak.2026-03-16-151219 b/straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf.bak.2026-03-16-151219
new file mode 100644
index 0000000..8341391
--- /dev/null
+++ b/straper/db/public/pygopherd/etc-pygopherd/pygopherd.conf.bak.2026-03-16-151219
@@ -0,0 +1,514 @@
+######################################################################
+# OVERALL SETTINGS FOR PYGOPHERD
+######################################################################
+
+[pygopherd]
+
+##################################################
+# Operating System / Overall Behavior
+##################################################
+
+# Set this to true if you want the server to "detach" itself; that is,
+# to go into the background after it starts.
+
+detach = no
+
+# If you want gopherd to write a PID file, set this to the location
+# where you want it. Otherwise, comment out this line.
+
+pidfile = /var/run/pygopherd/pygopherd.pid
+
+##################################################
+# Network
+##################################################
+
+# The server name to present to the world. If you do not specify it
+# here, Pygopherd will attempt to figure it out automatically.
+# This is used only to present to clients. It does not control
+# where the server listens.
+#
+# servername = gopher.example.com
+
+# The interface on which to listen. It should be an IP address or
+# a domain name. If specified, pygopherd will attempt to listen to
+# the specified port on only this interface -- useful if you are doing
+# virtual hosting. If not specified, pygopherd will listen on all
+# interfaces the OS provides. If in doubt, do not specify this.
+#
+# interface = gopher.example.com
+
+# What port to listen on. If not running as root, this must be
+# greater than 1024.
+
+port = 70
+
+# Type of server to run. Valid options are ForkingTCPServer
+# and ThreadingTCPServer. ForkingTCPServer is highly recommended
+# for now.
+
+servertype = ForkingTCPServer
+
+# What port to *say* we're listening on. Most people should NOT
+# specify this. You might want to if you are using firewalling or
+# port forwarding and the port number is different to the world than
+# it is locally.
+
+# advertisedport = 70
+
+# Do we timeout on client conections? HIGHLY RECOMMENDED!
+# Value is given in seconds. If given, any read or write that makes
+# no progress in this number of seconds will time out.
+
+timeout = 60
+
+##################################################
+# Data Handling
+##################################################
+
+# You can add a header to every directory by creating a
+# .abstract file in that directory and filling it with the
+# information you like. This will then be rendered as a header
+# for the directory. This option controls this feature. Note:
+# for this to work, you must define a mapping to ABSTRACT in eaexts
+# below.
+
+abstract_headers = on
+
+# Individual files and folders can also have abstracts. You can
+# choose to have pygopherd render these abstracts in the directory
+# listing itself -- they'll appear beneath the menu name for the file.
+# You can set this option to any of three values:
+#
+# always -- always render these abstracts.
+# unsupported -- render them only for protocols that do not natively
+# support abstracts. Gopher+ is the only protocol that natively
+# supports them currently.
+# never -- never render these abstracts.
+
+abstract_entries = always
+
+##################################################
+# Error handling
+##################################################
+
+# If there is an error, you can decide whether or not to log a full
+# backtrace. A full backtrace will usually be needed to find the
+# problem.
+
+tracebacks = yes
+
+##################################################
+# Security
+##################################################
+
+## Whether or not to use chroot.
+# This option is only valid if you are running pygopherd as root!
+
+usechroot = yes
+
+## Username and groupname to setreuid/setregid to. Valid only if
+## starting pygopherd as root. Comment out if you don't want this
+## functionality. NOTE: DO NOT RUN AS ROOT UNLESS YOU USE THESE! BAD BAD BAD!
+
+#setuid = gopher
+#setgid = gopher
+
+##################################################
+# TLS
+##################################################
+
+# Enable TLS by sniffing the first byte of the client request for the start of
+# a TLS handshake. This allows both TLS and plaintext requests to be served
+# over the same port.
+
+enable_tls = no
+
+# File paths to the server certificate and keyfile in PEM format. These are
+# required if TLS is enabled. When using chroot, the certificates will be
+# loaded while root privileges are still active.
+#
+# tls_certfile =
+# tls_keyfile =
+
+##################################################
+# Filesystem and MIME
+##################################################
+
+# Where the documents are stored.
+
+root = /srv/gopher
+
+# Location of a file to use to figure out MIME types. You can
+# specify multiple files here -- just separate them with a colon.
+# ALL of them that are found will be read.
+
+mimetypes = ./conf/mime.types:/etc/pygopherd/mime.types:/etc/mime.types
+
+# Encodings. You can use the default with the following syntax. The
+# mimetypex.encodings_map is {'.Z': 'compress', '.gz': 'gzip'}.
+#
+# For ease of use in the config file, we specify this as a list of
+# tuples. You can convert any hash to a list of tuples by using .items()
+
+# encoding = mimetypes.encodings_map.items()
+
+# You can override the default entirely (ie, to remove those) like this:
+
+# encoding = {'.bz2' : 'bzip2', '.gz' : 'gzip'}.items()
+# Or the same thing:
+# encoding = [('.bz2', 'bzip2'), ('.gz', 'gzip')]
+
+# Or, you can extend the default like so:
+
+encoding = list(mimetypes.encodings_map.items()) + \
+ list({'.bz2' : 'bzip2',
+ '.tal': 'tal.TALFileHandler'
+ }.items())
+
+######################################################################
+# Logging
+######################################################################
+
+[logger]
+
+# Log method to use. One of:
+# syslog -- use Unix syslog facility
+# file -- log to standard output (future capability for logging to other
+# files)
+# none -- no logging
+
+logmethod = syslog
+
+# If you enable syslog, you will need to define these as well:
+
+# priority -- one of the following (listed in order of high to low):
+# LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE,
+# LOG_INFO, LOG_DEBUG
+
+priority = LOG_INFO
+
+# Facility -- one of the following:
+# LOG_KERN, LOG_USER, LOG_MAIL, LOG_DAEMON, LOG_AUTH, LOG_LPR, LOG_NEWS,
+# LOG_UUCP, LOG_CRON, LOG_LOCAL0 - LOG_LOCAL7
+
+facility = LOG_LOCAL3
+
+
+
+######################################################################
+# GOPHER OBJECTS
+######################################################################
+
+# Settings for gopher objects
+
+[GopherEntry]
+
+# Use this MIME type if no other type is found.
+defaultmimetype = text/plain
+
+# Mapping from MIME types to gopher0 single-character types.
+# This is a list of lists. The first entry in each list is a
+# regexp to match and the second is the result.
+#
+# Please have a .* at the end to map all unknown types to a certain
+# character. For best results, that character should be nicely
+# corresponding to the defaultmimetype.
+
+mapping = [['text/html', 'h'],
+ ['text/.+', '0'],
+ ['application/mac-binhex40', '4'],
+ ['audio/.+', 's'],
+ ['image/gif', 'g'],
+ ['image/.+', 'I'],
+ ['application/gopher-menu', '1'],
+ ['application/gopher\\+-menu', '1'],
+ ['multipart/mixed', 'M'],
+ ['application/.+', '9'],
+ ['.*', '0']
+ ]
+
+# This is used by the system to generate Extended Attribute (EA), aka
+# Gopher+ blocks for a file. Basically, with the setup shown below,
+# you can create "filename.txt.abstract" to define the abstract
+# property for filename.txt. If you do that, you will probably want
+# to add these properties to ignorepatt below. The list is a mapping
+# from an extension to a block name.
+#
+# Sample for UMN compatibility:
+#
+eaexts = {'.abstract' : 'ABSTRACT',
+ '.keywords' : 'KEYWORDS',
+ '.ask' : 'ASK',
+ '.3d' : '3D'}
+#
+# If you want to disable this capability, use this:
+#
+
+# eaexts = {}
+
+
+######################################################################
+# HANDLERS
+######################################################################
+
+##################################################
+# Handler multiplexer
+##################################################
+
+[handlers.HandlerMultiplexer]
+
+# A list of the handlers to consider. The handlers
+# are tried in the order listed.
+#
+#
+### Suggested settings:
+# Note: the UMNDirHandler will handle all directories, even if they
+# do not have UMN-specific files, so you do not need to list the
+# dirhandler in this case.
+#
+# Warning: scriptexec and pyg can execute arbitrary code stored in
+# your path. Don't enable unless you know what you're doing!
+#
+# For UMN emulation: (full UMN featureset excluding scriptexec, no others)
+#
+# handlers = [url.HTMLURLHandler, UMN.UMNDirHandler,
+# html.HTMLFileTitleHandler,
+# mbox.MBoxMessageHandler, mbox.MBoxFolderHandler,
+# file.CompressedFileHandler, file.FileHandler]
+#
+# For Bucktooth emulation: (full Buck featureset excluding scriptexec)
+#
+#handlers = [gophermap.BuckGophermapHandler, url.HTMLURLHandler,
+# file.FileHandler, dir.DirHandler]
+#
+# For full Pygopherd featureset excluding scripts, compression, and PYG.
+# Supports both UMN and Bucktooth featuresets. This is the default
+# configuration for Pygopherd because it is secure yet versatile.
+#
+
+handlers = [url.HTMLURLHandler, gophermap.BuckGophermapHandler,
+ mbox.MaildirFolderHandler, mbox.MaildirMessageHandler,
+ UMN.UMNDirHandler, html.HTMLFileTitleHandler,
+ mbox.MBoxMessageHandler, mbox.MBoxFolderHandler,
+ file.FileHandler]
+
+# For full Pygopherd featureset including scripts and PYG. Same as
+# above but adds scripts, decompression, and PYG execution.
+
+#handlers = [url.HTMLURLHandler, gophermap.BuckGophermapHandler,
+# mbox.MaildirFolderHandler, mbox.MaildirMessageHandler,
+# UMN.UMNDirHandler,
+# tal.TALFileHandler,
+# html.HTMLFileTitleHandler,
+# mbox.MBoxMessageHandler, mbox.MBoxFolderHandler,
+# pyg.PYGHandler, scriptexec.ExecHandler,
+# file.CompressedFileHandler, file.FileHandler,
+# url.URLTypeRewriter]
+
+##################################################
+# Decompressing file handler
+##################################################
+
+[handlers.file.CompressedFileHandler]
+
+# Decompressors is a map from an encoding (as specified in the
+# pygopherd section above) to a decompression program.
+# The decompression program must
+# accept the input in its stdin and write the decompressed output
+# to stdout.
+#
+# If you do not want to decompress things automatically for your
+# clients, you might wish to NOT use this handler.
+#
+# Note: this feature is probably NOT compatible with chroot unless
+# you take extra precautions.
+
+# We enable no decompressors by default... you'll need to do that.
+
+decompressors = {}
+
+#decompressors = {'bzip2': 'bzcat',
+# 'gzip' : 'zcat',
+# 'compress' : 'zcat'}
+
+# Regexp to match against filenames pending decompression.
+# The default will let ALL files be decompressed.
+
+decompresspatt = .*
+
+# You can be more restrictive:
+
+# decompresspatt = \.txt\.(bz2|gz|Z)$
+
+
+##################################################
+# Directory handler
+##################################################
+
+[handlers.dir.DirHandler]
+# A regular expression of files to ignore. These files
+# will not be presented in lists of files to clients,
+# but if clients know the exact path to the files, they can
+# still be requested.
+#
+# This pattern is matched against the requested selector.
+# Selectors are guaranteed to begin with a slash by this point.
+# and never end with a slash unless they consist solely of a slash.
+#
+# By default, we ignore files starting with a period, gophermap
+# files, and files ending with a tilde.
+#
+# The default emulates UMN's default plus buck. Please note:
+# UMNDirHandler implicitly will keep all files starting with a dot out of
+# directory listings. If you exclude these files explicitly in ignorepatt,
+# then not only will they not show up, but the handler will also not scan
+# them for links and the like.
+#
+# A buck-only server might like:
+#
+# ignorepatt = ~$|/\.|/gophermap$
+
+ignorepatt = /.cap$|/lost\+found$|/lib$|/bin$|/etc$|/dev$|~$|/\.cache|/\.forward$|/\.message$|/\.hushlogin$|/\.kermrc$|/\.notar$|/\.where$|/veronica.ctl$|/robots.txt$|/nohup.out$|/gophermap$|\.abstract$|\.keyboards$|\.ask|\.3d$|~$
+
+# Expiration time, in seconds, for the cache.
+# Set to 0 to disable caching entirely.
+
+cachetime = 180
+
+# Name of the cahe file. Must be set to something even if the cachetime
+# is zero. In that case, this filename will not be used but for the conf
+# file to parse, it must still be set.
+
+cachefile = .cache.pygopherd.dir
+
+##################################################
+# UMN Directory Handler
+##################################################
+
+[handlers.UMN.UMNDirHandler]
+
+# Extension stripping behavior. When a file from a directory
+# is presented in a menu, and no name is given, what to do?
+# For instance, given a file Welcome.txt and pygopherd.tar.gz:
+#
+# If extstrip is none, present Welcome.txt and pygopherd.tar.gz in the
+# menu.
+#
+# If extstrip is nonencoded, modify only those files that do not
+# have encodings. (If CompressedFileHandler is used, modify only
+# those files that to not have *HANDLED* encodings.)
+# If gzip is NOT a handled encoding, you'd get names Welcome and
+# pygopherd.tar.gz. If gzip IS a handled encoding, you'd get
+# Welcome and pygopherd.
+#
+# If extstrip is full, modify all modifyable names. Welcome.txt ->
+# Welcome and pygopherd.tar.gz -> pygopherd.
+
+# extstrip = none
+extstrip = nonencoded
+# extstrip = full
+
+[handlers.ZIP.ZIPHandler]
+##################################################
+# ZIP file handler
+##################################################
+
+# Even if it's listed in the available handlers, it's disabled here by
+# default.
+
+enabled = false
+
+pattern = \.zip$
+
+######################################################################
+# PROTOCOLS
+######################################################################
+
+##################################################
+# Protocol Multiplexer
+##################################################
+
+[protocols.ProtocolMultiplexer]
+
+# A list of the protocols to consider for each request.
+# The protocols are tried in the order listed.
+
+protocols = [wap.WAPProtocol, gemini.GeminiProtocol,
+ http.HTTPProtocol, http.HTTPSProtocol,
+ spartan.SpartanProtocol,
+ gopherp.GopherPlusProtocol, gopherp.SecureGopherPlusProtocol,
+ rfc1436.GopherProtocol, rfc1436.SecureGopherProtocol]
+
+##################################################
+# Gopher+ Protocol
+##################################################
+
+[protocols.gopherp.GopherPlusProtocol]
+# The name and e-mail of the administrator
+admin = Unconfigured Pygopherd Admin <pygopherd@nowhere.nowhere>
+
+##################################################
+# HTTP Protocol
+##################################################
+
+[protocols.http.HTTPProtocol]
+iconmapping = {'h' : 'text.gif',
+ '0' : 'text.gif',
+ '4' : 'binhex.gif',
+ 's' : 'sound1.gif',
+ 'g' : 'image3.gif',
+ 'I' : 'image3.gif',
+ 'M' : 'text.gif',
+ '9' : 'binary.gif',
+ '1' : 'folder.gif',
+ '7' : 'folder.gif',
+ 'i' : 'blank.gif'}
+
+# You can use this option to put something at the top of each HTML
+# page generated.
+#
+# The following tokens will be interpolated:
+#
+# GOPHERURL -- the Gopher URL for this page.
+#
+
+pagetopper = Welcome to Gopherspace! You are browsing Gopher through
+ a Web interface right now. You can use most browsers or Gopher
+ clients to browse Gopher natively. If your browser supports it,
+ <A HREF="GOPHERURL">try clicking here</A> to see this page
+ in Gopher directly. To find Gopher browsers,
+ <A HREF="https://en.wikipedia.org/wiki/Gopher_(protocol)#Client_software">click
+ here</A>.<HR>
+
+##################################################
+# WAP Protocol
+##################################################
+
+[protocols.wap.WAPProtocol]
+
+# waptop is the URL to access with WAP devices. The default, /wap, means
+# that accessing http://sitename.com/wap will bring up your site in WAP
+# mode.
+#
+# PyGopherd can autodetect WAP from some phones, so this is not always
+# necessary.
+
+waptop = /wap
+
+##################################################
+# Gemini Protocol
+##################################################
+
+[protocols.gemini.GeminiProtocol]
+# Note that the gemini protocol *requires* the TLS section to also be enabled.
+
+footer = => https://www.github.com/michael-lazar/pygopherd Generated by PyGopherd
+
+##################################################
+# Spartan Protocol
+##################################################
+
+[protocols.gemini.SpartanProtocol]
+
+footer = => https://www.github.com/michael-lazar/pygopherd Generated by PyGopherd
+