This file is indexed.

/etc/pygopherd/pygopherd.conf is in pygopherd 2.0.18.3+nmu4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
######################################################################
# 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 = yes

# 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.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

##################################################
# 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 = mimetypes.encodings_map.items() + \
          {'.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, http.HTTPProtocol, 
             gopherp.GopherPlusProtocol, rfc1436.GopherProtocol]

##################################################
# 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="http://quux.org:70/Software/Gopher/Downloads/Clients">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