FingerDoc.tioga
Donahue, June 16, 1986 8:08:15 am PDT
Ewan Tempero September 11, 1986 3:20:10 pm PDT
Carl Hauser, October 1, 1986 10:07:36 am PDT
FINGER
CEDAR 6.1 — FOR INTERNAL XEROX USE ONLY
Finger
A Tool for finding Cedar users and machines
Jim Donahue, Dave Gifford, Ewan Tempero, Carl Hauser
© Copyright 1985, 1986 Xerox Corporation. All rights reserved.
Abstract: Finger is a package to record the information about Cedar users and machines
Created by: Donahue.pa
Maintained by: <CHauser.pa>
Keywords: Finger, databases, Cedar users
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

For Internal Xerox Use Only
1. Introduction
Ever wonder if someone hasn't read his mail recently? Ever tried to chase down one of the summer interns -- you know they're on one of the public Dorados running Cedar, but just don't know where? If you have, then Finger is for you! The Finger facility allows Cedar users to query and update a public database consisting of login/logout times, the time that each user last read mail, pointers to pictures of users (which can be displayed when that person is fingered), and arbitrary textual data (finger plans). Fingering can be accomplished either by issuing a command to the executive, or by using a FingerTool. Both people and machines can be fingered. Queries can also be done on any arbitrary field although it may not make a lot of sense (query by picture filename?).
The accuracy of the information stored in the Finger database depends on the number of people willing to put at least a piece of Finger in their checkpoints. I have tried to make the system as robust as possible -- please keep me (CHauser.pa) informed of any problems you have. Also, any ideas you have for extending the database or improving the user interface would be greatly appreciated.
2. What's Stored in the Finger Database?
Finger stores information about users (using the Grapevine RName as the entity names) and machines (using the Pup-network name as then entity name). For each user, we store such things as a "nick name", a picture file name and a "plan" (a user's statement of his intentions) in addition to keeping the time of the last login or logout and the last time at which the user read mail using Walnut (sorry, Peanut users!). For a machine, we store such things as the owner of the machine, the location of the machine, whether it is a gateway or network, the net address of the machine, what sort of color monitor it has, and the last user. The Finger database is initialized by using the pup-network information stored on [indigo]<portola>pup-network.txt (which is reasonably accurate although not perfect - use Fingertool to make corrections).
3. Putting Finger in your Checkpoint
The Finger program is intended to be a part of the checkpoints on every machine (to keep the Finger database accurate). Before making a checkpoint, run the command "Install BasicFingerPackage", which loads only enough of finger to record logins and idle transitions (uses only 3 GFIs). BasicFingerPackage logs changes on the user's machine (in the file ///Temp/Finger.Log) and then replays this log through a remote finger server -- this means that the unavailability of the finger server or the Alpine server storing the Finger database will not prevent you from using a machine having BasicFingerPackage in its checkpoint! Because of the way ///Temp/Finger.Log is used, a machine should have only one copy of BasicFingerPackage running. Running multiple copies will result in an FS error reporting a locked file condition.
4. Registered Commands (and .load files)
Syntax: % Finger usernamePattern1 . . . usernamePatternn
Effect: Interpret each usernamePatterni as a regular expression (using the syntax for patterns of the EditTool). For each user that matches this pattern, print the corresponding finger data.
Syntax: % FingerTool
Effect: Create a new FingerTool. The use of a FingerTool is described below.
Syntax: % FreeMachines
Effect: List all of the free Cedar machines, ie., machines on which the last recorded operation is a logout.
Syntax: % Host machinename
Effect: Print the information stored in the database about the specified machine.
Syntax: % WhereIs username
Effect: List all of the machines for which the given user is the last user to have logged in.
Syntax: % Who
Effect: Lists all of the machines that are currently in use and who the logged-in user is on each of them.
Syntax: % FingerServer {on|off}
Effect: Toggles your machine between being and not being a server that other machines can use to modify the Finger database. The default is off.
5. Use of the FingerTool
A FingerTool can be created by executing the "FingerTool" command. Any number of FingerTools can coexist. When the tool is opened, two action buttons appear at the top: perform finger and store changes. Underneath these buttons are fields that will display attributes of a fingered individual, and a viewer in which the contents of AIS picture files are displayed.
To finger a user, type the Grapevine RName into the User Name field and bug perform finger; if the User Name field is empty, then the currently logged in user will be used. Note: left-clicking perform finger will not paint a picture, even if the user has entered one (this may take a long time and clutter up your local disk with lots of AIS files); you must right-click perform finger if you want to see the pictures.
A user can change any of his/her attributes by entering the desired contents in the corresponding fields and then clicking the store changes action button; you must right-click store changes if you want to display the picture as well.

Below the buttons for fingering individuals are buttons to finger hosts (machines) on the network. To finger a Host, fill in the Host field of the tool and bug Get Host Information; if no host is specified, the current machine is used. To edit the contents of any of the properties of the host, change the fields and bug Store Host Data.
All information stored in this manner will be normalized to lowercase.

Arbitrary queries can be done on any of the fields by middle-clicking the field-name button. If there is more than one answer to such a query a Next button will appear. Clicking this will allow you to cycle through the list of answers (left button goes forwards, right button goes back, middle does nothing).
Querying can be done with simple patterns (ie patterns containing only "*". Do not try any other types of patterns). Searches on patterns of the from <literal>* have been optimized.

Queries can also be done on arbitrary fields by filling in only the required field (ignoring the grey fields) and clicking perform finger/Get Host Information. If no fields have entries then the default is to the currently logged in user/current machine, similarly if more than one field have entries.
Note that the fields with grey buttons cannot have their contents changed by the user and so queries cannot be done on them.
6. Maintaining the Finger Database
Refer to FingerSchemaDoc.Tioga.
7. User Profile Entries
Finger uses the user profile entry "Finger.segment" as the name of the finger database. This should be part of the machine profile for each Cedar machine, rather than being part of an individual's profile. BasicFingerPackage uses the user profile entry "Finger.RemoteHost" as the name of the Finger server machine. It defaults to "Ebbetts".