The gn Gopher/HTTP Server FAQ


Newsgroups: comp.infosystems.gopher,comp.infosystems.www.servers.unix,news.answers
From: chip@unicom.com (Chip Rosenthal)
Subject: The GN Gopher/HTTP Server [monthly FAQ posting]
Followup-To: comp.infosystems.gopher
Summary: answers to frequently asked questions
Approved: news-answers-request@mit.edu

Archive-name: gn
News-answers-archive-name: www/gn-server/faq
Posting-frequency: monthly
Version: $Id: gn,v 1.9 1996/07/21 01:20:54 chip Exp $

--------------------------------

Subject: 0. Welcome

Welcome to the GN FAQ!  This document answers many frequently-asked
questions about GN, a free Gopher and World Wide Web server for Unix.

Please examine the date near the top of this message.  This message
is updated from time to time, and older versions might be obsolete.
The most up-to-date version of these guidelines are available on
the World-Wide Web as <https://www.unicom.com/FAQ/gn>.  For the
web-impaired, try anonymous FTP to "ftp.unicom.com:/pub/FAQ/gn".
If all else fails, try the standard FAQ archive on rtfm.mit.edu.

This message is maintained and posted monthly by Chip Rosenthal
<chip@unicom.com>.  Your corrections, additions, and comments are
encouraged.

Chip has been maintaing this document since May 95, when he took over
from Stephen Trier.  The original draft was written by Rich Wiggins.
Most of these questions were written by Rich and Stephen, to whom the
current maintainer is grateful.  Additional contributions have been
made by:  John Franks, E. Loren Buhle, Jr., Josh Smith, Michael Regoli,
and Judy Birmingham -- as well as the many folks asking questions and
giving answers on the gn-maint-l mailing list.  Thanks to all.

------------------------------

Subject: 1. Table of Contents

The following questions are answered in this version of the FAQ:

0. Welcome
1. Table of Contents
2. What is GN?
3. How does GN compare to University of Minnesota's gopherd?
4. What is the development and support status of GN?
5. Should I use GN as my WWW server?
6. Is GN free?
7. How can I see GN in action?
8. Where can I get GN?
9. Where can I get more info about GN or contact other GN users?
10. How do I subscribe/unsubscribe from the gn-maint-l mailing list?
11. Can I run GN and gopherd at the same time?
12. How do I make GN answer on both port 70 (gopher) and 80 (HTTP)?
13. I can't query a WAIS database on another computer.  Why not?
14. How can I gateway to FTP using GN?
15. How do I get gopherd or g2fd?
16. Can GN do gopher+?  Does GN support ASK blocks?
17. I converted from gopherd to GN, and now "waissrc:" doesn't work.
18. I converted from gopherd to GN, and now "ftp:" doesn't work.
19. What's the easiest way to serve the same document in HTML for WWW
    clients and text for gopher clients?
20. GN is serving truncated documents and menus.  How do I fix it?
21. How do I add a link to a specific URL?
22. How can I point to an HTML file in my docs directory (or another
    subdirectory) from the initial menu?
23. Can I write a GN script that automatically logs in on a telnet session?
24. Can GN scripts get interactive input from the user?
25. Is there an easy way of knowing which version of GN is
    running on a particular host?
26. How do I set up clickable images?
27. I added a line to /etc/services for a service, but
    inetd can't find the service.  What's wrong?
28. My inline images are showing up as "broken picture" icons.

------------------------------

Subject: 2. What is GN?

    GN is a multi-protocol server for Gopher and World-Wide Web that
    runs under Unix.  It was written by Dr. John Franks of Northwestern
    University.

 * Huh?  Did you say GN can serve *both* Gopher and Web clients?

    Absolutely!  You can maintain one document tree and one set of
    control files to manage both your Gopher and Web services.

 * How does GN do this magic?

    It is bilingual!  It recognizes the protocol spoken by the client,
    either Gopher or HTTP (the language of the Web), and answers as
    appropriate.  You use the GN "menu" files to specify which
    documents may be served to Gopher clients, which may be served to
    Web clients, and which may be served to both.

 * Does this mean that my Web pages end up looking like Gopher menus?

    Not at all!  GN provides you access to the full range of Web
    features, including CGI forms and in-line images.  It is fully
    fluent in HTML.  GN pages can look so good, a service running GN
    won an award in the Best of the Web '94 competition!

------------------------------

Subject: 3. How does GN compare to University of Minnesota's gopherd?

GN has some advantages and disadvantages with respect to the UMinn
gopherd.

Here are some of the advantages:

    Predictibility - You always know what items GN will present and the
    order in which things will appear because *you* control this
    through the "menu" files.  (The "menu" files are analogous to
    gopherd ".Links" files, with many added capabilities.)

    Implementation - We think GN is smaller, tighter, faster, and more
    reliable.  For example, the (bloated) WAIS searching code is cast
    off into a seperate "waisgn" executable.  This makes GN a lot
    easier on the system when run out of "inetd".

    Security - Because you control precisely what documents the server
    will provide, and because it is a "small" program, we believe it
    provides positive security benefits.

    Licensing - The license for GN is clear and unambiguous.  It is
    freeware.

    HTTP - If you are on the World Wide Web, GN allows you to serve
    both Gopher and Web.  If you aren't doing WWW yet, then GN will
    ease your transition the day you decide to.

    Active Community - A large number of sites run GN, and very good
    support is available through the "gn-maint-l" mailing list.

Here are some of the disadvantages:

    No Gopher+:  GN is a gopher0-only server.  It does not support the
    features of the gopher+ protocol, such as ASK blocks.

    No gateway support:  Although GN supports WAIS searches of
    documents in your Gopher tree, it does not provide a gateway to
    external WAIS servers.  Likewise, it does not include an FTP
    gateway.

------------------------------

Subject: 4. What is the development and support status of GN?

GN is a mature product, and no new development is happening.
It is, however, actively maintained and supported by the author.
Also, the gn-maint-l mailing list (discussed shortly) provides an
active forum for GN users and administrators.

------------------------------

Subject: 5. Should I use GN as my WWW server?

If you need to support Gopher as well as the HTTP protocols, GN might
be a very good choice.  It greatly reduces your administrative burden
by providing both services through a single set of configuration and
data files.

If, however, you have no need for Gopher support, you might find that
some of the newer WWW servers provide a higher level of capability.
In particular, you might want to look at WN, an HTTP-only server
written by John Franks.  Additional information is available
at <URL:https://hopf.math.nwu.edu/>.

------------------------------

Subject: 6. Is GN free?

Yes.  GN is offered under the GNU Public License.  No royalties are
required for any use, including commercial use or distribution.

(The University of Minnesota charges for commercial use of their Unix
server.  Connect to their server (gopher.tc.umn.edu port 70) and look
under "Information About Gopher" for details.)

------------------------------

Subject: 7. How can I see GN in action?

GN's home server is hopf.math.nwu.edu.  This computer runs GN, and
you can browse it with gopher or WWW to get a taste of its abilities.
You will find very good online documentation, suitable for reading
section-by-section -- or for printing in its entirety.  You'll also
find online examples of how GN handles certain document types.

You may connect either via WWW <URL:https://hopf.math.nwu.edu:70/> or Gopher:

  Name=The home of GN (hopf.math.nwu.edu)
  Path=
  Type=1
  Host=hopf.math.nwu.edu
  Port=70

------------------------------

Subject: 8. Where can I get GN?

GN is distributed by anonymous FTP from ftp.acns.nwu.edu in /pub/gn.
To get GN, follow these steps:

  FTP to ftp.acns.nwu.edu
  Log in as anonyous
  Use your e-mail address as your password
  cd /pub/gn
  Fetch the files you need

The file will be called gn-2.##.tar.gz (where "2.##" really will appear
as the current version number).  After you retrive the file you will need
to uncompress it and unarchive it before you can configure it and build it.

The ".gz" suffix means the archive has been compressed with the GNU Zip
("gzip") utility.  This is somewhat similar to the standard Unix
compress program (which produces ".Z" files).  Therefore, you need a
copy of the GNU Zip package before you can even begin.  It is a popular
program, and available on hundreds (thousands?) of archive sites throughout
the world.  The home site for GNU software is prep.ai.mit.edu.

------------------------------

Subject: 9. Where can I get more info about GN or contact other GN users?

There are a number of resources to help you learn about GN and help
you administer your server.  We've already mentioned the hopf.math.nwu.edu
server.  Here are a few more.

There is a mailing list called "gn-maint-l" dedicated to supporting
GN users.  If you are the least bit interested in the package, you
*want* to join list.  There is an extremely active community
supporting GN, and they all hang out here.  The next section tells
you how to join the list.

The Usenet comp.infosystems.gopher newsgroup is another resource.
Note, however, that although many GN administrators read that group,
most discussion specific to GN occurs on the gn-maint-l list.  The
comp.infosystems.gopher group is still a good place to ask general
Gopher protocol questions.  Also note that while all new versions of
GN, including bug fix releases, are announced on gn-maint-l, only
major revisions are announced in comp.infosystems.gopher.

Chip Rosenthal maintains a "GN Information page" with some useful
tools for the GN administrator and pointers to other information.
See <URL:https://www.unicom.com/gn-info/> or
<URL:gopher://gopher.unicom.com/11/gn-info>.

------------------------------

Subject: 10. How do I subscribe/unsubscribe from the gn-maint-l mailing list?

There is a mailing list for GN users, known as gn-maint-l.

To subscribe with the address from which you're sending mail, send a
message to 'majordomo@hmc.edu', with "subscribe gn-maint-l" as the
entire body (not the Subject: line) of the messge. To subscribe with
some other address, do exactly as above, except use "subscribe
gn-maint-l otheraddress" as the body, where "otheraddress" is the other
address. (This second method requires the list maintainer's approval
before it will take effect.)

For more information on using the mailing list server, send the
one-line message "help" to majordomo@hmc.edu.

To unsubscribe, send the phrase "unsubscribe gn-maint-l" in a message
body (not the subject) to majordomo@hmc.edu.  If that doesn't work,
use "unsubscribe gn-maint-l <your-email-address>".  If all else fails,
contact the human operating the list at owner-gn-maint-l@hmc.edu.

Be patient -- the first suggestion here works automatically, but the
other two require human intervention and might take a day or two.

IMPORTANT:  Never send an unsubscription request to any other address,
particularly the main list address.  This will NOT get you off the
list.  All it does is broadcast your message to *all* of the other
list members, who couldn't unsub you even if they wanted to.

------------------------------

Subject: 11. Can I run GN and gopherd at the same time?

Yes.  They must be run on different ports and should have different
data directories.  Here is an example:

Place appropriate entries for both ports in your /etc/services file
(or NIS services map):

    gopher          70/tcp      # gopher server
    gopher-gw4      2073/tcp    # gateway 4 for gopher server

The designation "gopher-gw4" and the port 2073 are arbitrary for the
second server.  Use whatever name and port you wish.  Then add entries
for each in /etc/inetd.conf:

    gopher      stream  tcp  nowait  nobody  /usr/local/libexec/gn gn
    gopher-gw4  stream  tcp  nowait  nobody  /usr/local/libexec/gopherd gopherd

------------------------------

Subject: 12. How do I make GN answer on both port 70 (gopher) and 80 (HTTP)?

Put two entries for GN in your inetd.conf, one on each port.  Unless
you intentionally want the two GNs to return different data, both
entries should have identical command-line options.

Here is an example:

Place appropriate entries for both ports in your /etc/services file
(or NIS services map):

    gopher      70/tcp                  # gopher server
    http        80/tcp          www     # HyperText Transfer Protocol for WWW

The next two lines go in /etc/inetd.conf:

    gopher      stream  tcp  nowait  nobody  /usr/local/libexec/gn gn
    http        stream  tcp  nowait  nobody  /usr/local/libexec/gn gn

Notice that these lines are identical except for the port name.  The
paths and options in your inetd.conf lines will be different, depending
on how you have set up gopher.

Remember to tell inetd to re-read its configuration (probably "kill -HUP")
after making the changes.

------------------------------

Subject: 13. I can't query a WAIS database on another computer.  Why not?

GN uses WAIS only for local searches.  It cannot gateway to a remote
WAIS server.

gopherd can be used as a gateway to remote WAIS servers.

------------------------------

Subject: 14. How can I gateway to FTP using GN?

You cannot, at least not directly.  GN does not have a built-in FTP
gateway.

You can install a separate gateway program to do FTP gatewaying.
Suitable programs are gopherd and g2fd.

------------------------------

Subject: 15. How do I get gopherd or g2fd?

For information on how to get GN, see question 4.

To get gopherd:

    Anonymous FTP to boombox.micro.umn.edu.  Look in the directory
    /pub/gopher/Unix for a file with a name like, "gopher-2.nnn.tar.Z".
    nnn is a version number which can't be predicted here.

To get g2fd:

    Anonymous FTP to boombox.micro.umn.edu.  Look in the directory
    /pub/gopher/Unix/gopher-gateways/gopher2FTP.  The files ReadMe and
    g2fd.c are the gateway.

------------------------------

Subject: 16. Can GN do gopher+?  Does GN support ASK blocks?

No.  GN does not support any gopher+ features at this time.

------------------------------

Subject: 17. I converted from gopherd to GN, and now "waissrc:" doesn't work.

GN uses a different syntax for WAIS searches.  Please see the
documentation in the GN package for more details.

------------------------------

Subject: 18. I converted from gopherd to GN, and now "ftp:" doesn't work.

GN does not have a built-in FTP gateway.  You must use an external
gateway, such as g2fd or gopherd.

------------------------------

Subject: 19. What's the easiest way to serve the same document in HTML
             for WWW clients and text for gopher clients?

You need to have a plain text file as well as the html file. So. . .
contruct the html file and put in a dummy text file . . anything will
do (eg. "hi" is fine). This will allow the line in menu to work. For
example, presume you have a file called junk.html  You should create a
text file called  junk

Your menu entry will be:

Name=Name of the item
Type=0h/junk     (I'm presuming this is in the top directory)

Then go mkcache

Read the file via a WWW-client (e.g. Mosaic) and SAVE it to a text
file. The formatting will be done, stripping it of the html stuff. Then
take this saved text file and copy it overtop (e.g.  mv new_stuff junk)
and you are done. You should make sure none of the lines in the new
text file are >80 characters in length, but that is all.

------------------------------

Subject: 20. GN is serving truncated documents and menus.  How do I fix it?

Running a Streams-based TCP, eh?  If you are running 2.09 or later, go
into "config.h" and enable DO_LINGER.

------------------------------

Subject: 21. How do I add a link to a specific URL?

Version 2.09 of GN adds a new construct to the "menu" file.  Instead of
making a "Name=" entry, use:

    URLlink=The change log for GN
    Url=https://hopf.math.nwu.edu/docs/CHANGES

UrlLinks appear only to Web clients.  They are omitted from menus
served to Gopher clients.

------------------------------

Subject: 22. How can I point to an HTML file in my docs directory (or
             another subdirectory) from the initial menu?

The trick here is that you need *two* menu entries for this file:  an
entry in your main menu that provides a pointer to the file, and
another in the docs directory that authorizes the access.  If you do
not want the file to appear in the listing provided for the docs
subdirectory, then you may specify Attribute=Invisible there.  Also, if
you have just an HTML version of the document you might want to say
Attribute=HttpOnly in the main menu entry to prevent Gopher clients
from seeing it.

Here is an example:

    # In data-directory/menu
    Name=some HTML document
    Path=0/docs/myfile
    ContentType=text/html
    Attribute=HttpOnly

    # In data-directory/docs/menu
    Name=dummy entry to allow file to be served
    Path=0/docs/myfile
    ContentType=text/html
    Attribute=Invisible

Note that the "ContentType" records can be removed if the file is
called "myfile.html" instead of just "myfile".  If you have both HTML
and plaintext versions, then use an "0h" instead of "0" selector and
dump the "HttpOnly" attribute (and leave off the ".html").

------------------------------

Subject: 23. Can I write a GN script that automatically logs in on a
         telnet session?

No, this can't be done.  Scripts run on the gopher server, but telnet
sessions run on the _client_ computer.  The gopher server isn't
consulted at all when the client launches a telnet session; it goes
straight to its destination, not through the server.

This is the way the gopher protocol itself is designed, so you'll find
the same no-scripted-telnet prohibition in all gopher servers, not just
GN.

------------------------------

Subject: 24. Can GN scripts get interactive input from the user?

No.  This is a limitation of the gopher protocol.  It restricts all
gopher servers, not just GN.

If you really need interactivity, you will have to attach your script
to a telnet login or a port in inetd, then point a type 8 (telnet) item
to the script's home.

------------------------------

Subject: 25. Is there an easy way of knowing which version of GN is
             running on a particular host?

Yes!  Telnet to the host and port in question, type "HEAD / HTTP/1.0",
then press Enter twice.  GN will respond with several lines of information,
one item of which will be its version number.

This works with most HTTP servers, not only GN.

------------------------------

Subject: 26. How do I set up clickable images?

Judy Birmingham has written a guide to how to set up clickable images
in GN.  See <URL:https://sparc2.sparcc.ohio.gov:70/0h/basics/wgs95/click.html>.

------------------------------

Subject: 27. I added a line to /etc/services for a service, but
             inetd can't find the service.  What's wrong?

Your system is probably using YP (Yellow Pages), which is also known as
NIS (Network Information Service).  If NIS or YP is active, changing
the local /etc/services file has no effect.  You need to change the
services file on the YP server.

Users on systems using YP can check up on the YP services file with the
command "ypcat services".

------------------------------

Subject: 28. My inline images are showing up as "broken picture" icons.

You're probably missing a menu file entry like this:

    Name=dummy entry for foo.gif to keep GN happy
    Path=I/foo.gif
    Attribute=invisible

Every file GN serves must have a Name and Path entry in its menu file,
or GN won't deliver it.  Inline images are files, so they need their
Name and Path entries.  We've added "Attribute=invisible" to prevent
this entry from appearing in the menu listing provided to the client.
If the image and the HTML document are in different directories, this
entry goes in the menu file for the directory in which the image
resides.

End of gn FAQ
*************

<chip@unicom.com>

Back to the Paperware Archive.
Up to Unicom Systems home page.
Let us know your comments, corrections, additions, suggestions.