This section is from the document '/news-archives/comp/infosystems/gopher/general'.

From alt.gopher Tue May  5 18:20:36 1992
Status: O
X-VM-v5-Data: ([nil t nil nil nil nil nil nil nil]
	[nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil])
From: isca@umaxa.weeg.uiowa.edu (Iowa Student Computer Association)
Date: 5 May 92 20:57:21 GMT
Newsgroups: alt.gopher
Subject: Panda


     Panda is a program being developed at the University of Iowa for 
campus network use.  The eventual goal is to provide a common, 
user-friendly, secure front end for most internet services (FTP, 
Gopher, UseNet, DOC (a BBS server), mail, talk, write) so that the 
average user can sit down at a terminal/home PC and start off using 
the internet without learning Unix.  In addition, since the 
communications will be secure, it will be a good client to be used in a 
broadcast network situation (for example, personal Macs on an 
ethernet network in a dorm).  Instead of making servers that speak gopher
out one side and other services out the other, we're working on making
the client be able to speak to the servers directly, as well as a
programming language so that the client can "download" a program to 
speak to a brand new server (a simple scripting language, really).
     Right now, we've taken the "gopher" program and modified both 
the client ("panda") and the server ("pgopherd") heavily.  We liked the
gopher client look (for curses), so we used that as our launching point
for the project.  
     In its current form, Panda is just a souped up gopher client, but by 
fall we should have many of the above services up and running.  The 
Panda client will *always* speak gopher, so people currently using 
gopher may be interested in some of the changes we've done to the 
Panda client.
     If you'd like to give Panda a try, telnet to "panda.uiowa.edu" and 
follow the prompts (if all you have is rlogin, use the account name 
"panda" on that machine).
     We're putting up both halves of Panda, as well as a few other 
utilities, up for anonymous FTP from chop.isca.uiowa.edu, *BUT* it is 
in a very rough form.  The documentation is incomplete, and 
although both sides have been ported to an Encore Multi-Max, a 
NeXT, and an Apollo (DOMAIN), we make no porting assurances.  In 
other words, at this point you're on your own.  We apologize and will 
be working to make it smoother as time permits.

    What follows is a brief listing of the extensions to the basic gopher 
stuff whenever we grabbed it:

Client enhancements:
   Still communicates with all other gopher servers, transparently to 
the user.
   Ability to add informational text to the tops of menus.  This makes 
menus look a *lot* nicer and are much more readable than plain 
menus.  See the sample screen later in this note.
   Command-Line interface.  This allows for more options than the 
hot-key version (as our work with ISCABBS has taught us), which 
will be particularly important as more services are added.
   Screen updates have been changed slightly to work better over a 
slow-modem link.
    Compu$erve-style "go commands" are supported.  You can type "go 
movies" and go directly to the local movie listing without wading 
through the menus.  These aliases are globals to the entire campus, 
so they require no setup by the user.  Newpaper articles sometimes 
include what the "go shortcut" is on Panda for more information.
    Users can "yank" an option, which adds it to their own personal 
main menu.  This is a lot like the bookmark on the PC client.
     A longer form of help that allows for an online reference guide 
(vaguely hypertextish).
     The ability to support remote printing, using the pgopherd server.  
This allows the user to select a printer froma  list of available 
printing locations, and currently supports three non-connected 
printing systems at the University of Iowa.  The whole printing thing 
is really slick....
     Little things, like minor improvements to CSO, a "top" command, 
dynamic one-line help, and so on.

Server Enhancements:
   Menu command language changes (described below).
   Ability to update/create files from a remote location, including 
flexible password validation.
   Ability to resolve the shortcuts for the "go" command.
   Ability to accept a file remotely and execute a command with the 
input file (which is how we do printing).


   We enhanced an old version of gopher to make it do *exactly* what 
we wanted, in terms of how our directories are laid out.  Although 
they are still around, side files will not be supported in the future, 
and we're only going to support one way of setting up pgopherd 
servers, which is the way we've found easiest.  Sorry.
    The current way of getting menu pages by a directory listing of a 
directory is still supported, but that doesn't work well: the order is 
based on when the file was created and other files deleted, you end 
up with really long file names, your file names have wonky 
characters in them, and so on.  Although we still support it, and will 
continue to do so, this is not the recommended way.
    The specification of an "order" was cumbersome, and we didn't 
add it to our server and have no plans to do so.
     Instead, we expanded the capabilities of the "link" file (the ones 
which are currently read as files beginning with a dot) to be able to 
work around all of our above problems.  We call these files "Menu 
Definition Files" (MDF), and to "read a file as an MDF" means totry to 
parse the contents and match it to the MDF format, and spit out a 
gopher menu to the client.

       1) If a directory is named as type "1" (directory), then it is 
handled like always, with one exception: if a file named "dir.info" 
exists in that directory, it is processed as a MDF file and the rest of 
the directory is ignored.  As always, any file in that directory whose 
name begins with a dot is processed as an MDF file, and certain file 
names are always skipped over.

       2)  If a file is named as type "1" (directory), then that file is 
processed as an MDF file and that's it.


    These two simple changes allow for a *much* easier to maintain 
file tree.  For example, for one department in the University of Iowa, 
the directory contains three .mnu files and a bunch of .txt files.  The 
.mnu files point to the .txt files (one .mnu file also contains entries 
that point to the other two .mnu files as submenus), and everything 
is easy to maintain using standard Unix utilities.

   The MDF is a lot like the "old link" format used in gopher servers.  
Each menu option reads like the following:

Type=0
Name=Registrar's Office
Path=~/registrar/main.mnu
Host=chop.isca.uiowa.edu
Port=8337


If either the "Host" or the "Port" lines are missing, the server 
assumes the current host and the current post (that is, it assumes 
itself).  If the Path begins with "~/", then the rest of the path is 
relative to the directory that contains the MDF file, which allows 
trees to be moved pretty easily.

In addition, anything appearing between the lines ".info" and 
".endinfo" is read-only text to be displayed at the top of the menu.  
An example of one of our menus follows:

 
.info
     This is the May edition of Passport, the newsletter for the Office of 
International Education and Services (OIES).  You can go directly to this
menu by typing "go passport" at any Command=> prompt.

.endinfo

Type=0
Name=About Passport
Path=~/about.txt

Type=0
Name=Current News
Path=~/current.txt

Type=1
Name=Information About Immigration
Path=~/immig.mnu

Type=0
Name=Calendar of Upcoming Events
Path=~/calendar.txt

Type=0
Name=Employment Opportunities for Graduates
Path=~/employ.txt

Type=0
Name=Financial Aid
Path=~/finaid.txt

Type=0
Name=Off-Campus Educational Opportunities
Path=~/off-camp.txt

Type=0
Name=Nationality Organization Officers
Path=~/leaders.txt

Type=1
Name=Health Information
Path=~/health.mnu

Type=0
Name=Feature Stories with an International Theme
Path=~/features.txt



Produces the following menu on a Panda client:

-----------------------------------------------------------------------------
 Page: 1 of 1          University of Iowa Panda (v. 0.8)

         Passport: News & Information for Foreign Students and Scholars

      This is the May edition of Passport, the newsletter for the Office of
 International Education and Services (OIES).  You can go directly to this
 menu by typing "go passport" at any Command=> prompt.

   -->     1. About Passport
           2. Current News
           3. Information About Immigration...
           4. Calendar of Upcoming Events
           5. Employment Opportunities for Graduates
           6. Financial Aid
           7. Off-Campus Educational Opportunities
           8. Nationality Organization Officers
           9. Health Information...
          10. Feature Stories with an International Theme


 Command==>
 ?-Help    Up-Prev. Menu
-----------------------------------------------------------------------------


And has the following directory on our pgopherd server:
about.txt     em-105-h.txt  fsaf.txt      immigadv.txt  off-camp.txt
calendar.txt  employ.txt    health.mnu    immigr.mnu    pt.txt
current.txt   f-1-on-c.txt  health.txt    info-sht.txt  shs.txt
em-101-h.txt  f1status.txt  helth-mr.txt  leaders.txt   ucs.txt
em-103-h.txt  features.txt  immig.mnu     main.mnu
em-104-h.txt  finaid.txt    immig.txt     mbsclf.txt

which is a lot easier to handle.

     Anyway, that's our Project Panda in a nutshell.  If you're interested
in our future directions, or what we're doing to increase sucure 
communications through the internet, telnet to "bbs.isca.uiowa.edu" and join
the Panda> room.  Or send me personal E-Mail.  Thanks for your time.


Lee Brintle                    | ``And so, I leave you with this final word:
Director, Project Panda        |              twang.''

