GN(8) GN(8)
1993 Sept 7
NAME
gn - A server for the internet gopher protocol and Hyper Text Transfer
Protocol
SYNOPSIS
gn [-a | -A] [-L logfile | -S] [-k uid# | -K gid#] [-c cache] [-t
http_root_title] [rootdir]
DESCRIPTION
GN is a server for the internet gopher protocol and HTTP (gopher is a
registered trademark of the University of Minnesota).
GN Options
The following optional arguments are accepted by gn:
rootdir
The complete path name of the directory which is the root of the
hierarchy of data files. A default value is set in the source
file config.h.
The following options are accepted by gn:
-a Limit access to the server to those clients with an IP address,
subnet address, or host domain name listed in the file .access in
the root data directory. The format of the .access file is one
address per line, each line consisting of an IP address like
129.111.222.123, a subnet address like 129.111.222 or 129.111 or
a domain name that can include wildcards like nwu.edu or
*.cc.nwu.edu. In case a subnet address is listed, any client
with an IP address beginning with that subnet address will be
allowed access. If a simple host name is used like math.nwu.edu
then only the machine math.nwu.edu is allowed access. If a
wildcard such as *.math.nwu.edu then only machines in the
math.nwu.edu domain are allowed access but not the cc.nwu.edu
machine if one exists. Hosts or domains can be disallowed by
prefixing their name with '!'. Thus a line containing !*.nwu.edu
would prevent access from any host in the nwu.edu domain.
-A This option is similar to the -a option except access is allowed
on a per directory basis. Each client request is processed by
first looking for a .access file in the directory containing the
requested item and comparing the IP address of the client with
the addresses in this file. If no .access file exists in this
directory, one is sought in the parent directory and then if
necessary the parent of the parent, etc., up to the root data
directory. If no .access file is found by this process access is
allowed to all clients provided the item requested exists in a
.cache file. Menu items corresponding to directories for which a
host does not have access are not shown to that host.
- 1 - Formatted: October 28, 2025
GN(8) GN(8)
1993 Sept 7
-c cachefile
Use cachefile, instead of the default, .cache, as the name of the
file in each directory of the data hierarchy containing the
cached list of menu items, their paths, hosts and ports. No file
is sent by gn to a client unless it is listed in one of these
cache files or is itself one of these cache files. These files
are produced by the companion program mkcache or .cache files
produced by the University of Minnesota gopherd server can be
used.
-k user_id | -K group_id
With these options the server will check the user or group id of
a cachefile and if it is not the same as that specified the
documents listed in that cachefile will not be served. See the
Security Guide.
-L logfile | -S
If the -L option is used logging is turned on and the file
logfile is used as the file in which to record gn transactions.
If the -S option is used then the UNIX system logging daemon,
syslogd, will be used. You may need to edit your
/etc/syslog.conf file for this to work (see your local manual).
The facility used is DAEMON, and the level is INFO. If neither
of these options are used, no logging will take place.
-t http_root_title
Use http_root_title as the title and heading of the root menu
when doing an HTTP transaction instead of the value set in
config.h via a #define. If the empty string "" is used as the
value then no title or heading will be used and and these can be
set in the menu file of the root menu. This option only affects
HTTP transactions. There is no mechanism in the gopher protocol
for sending a root menu title.
GN only runs under inetd. This means that to use it you need to enter
it in two files - /etc/services and /etc/inetd.conf. The entries in
these files look something like this:
gn 70/tcp
for /etc/services and
gn stream tcp nowait nobody /path/gn gn -L /path/gn.log
for /etc/inetd.conf. See the man page inetd.conf(5).
SETTING UP A ``SEARCH ALL MENUS''
A builtin feature of gn is the ability to have a menu item which when
selected prompts the user for a search term and returns a ``virtual
menu'' of all menu items which contain that term. In fact such an
item can occur at any level and return either all matches from all
menus on that server or all matches at or below some chosen level.
- 2 - Formatted: October 28, 2025
GN(8) GN(8)
1993 Sept 7
Here's how to set it up. Create an entry like this in the menu file
where you want the search item to occur:
Name=Search all menus on this server
Type=7
Path=7c/.cache
Host=your.gn.host.edu
Port=70
(If you want the search to cover only those items in directory
/foo/bar, then the path line should be Path=7c/foo/bar/.cache) Then
run mkcache to translate the new menu file to a .cache file and you
are done. When you change any of the menus in your server and remake
the .cache files gn will automatically reflect this in menu searches.
There is a maximum depth which gn will search into the gn hierarchy.
Its value can be changed by editing the config.h file and re-
compiling.
UNRESTRICTIONS
GN is free; anyone may redistribute copies to anyone under the terms
stated in the Free Software Foundation's General Public License, a
copy of which accompanies the gn software package.
The author encourages you to improve and extend gn.
AUTHOR
GN
was written by John Franks, Dept. of Mathematics, Northwestern
University (john@math.nwu.edu). Contributions have been made by a
number of people including Earle Ake, Henry Cejtin, Paul DuBois,
Jishnu Mukerji, Marko Nordberg, Jim Rees, Stephen Trier, Ed Vielmetti,
and Rico Tudor.
- 3 - Formatted: October 28, 2025