********************************************************************** * FILE: PHHELP MEMO * PURPOSE: To give a collection of CAC Serial Protocol Server * PH help displays. * PACKAGE: Access Project * USED BY: E.g., LISTOFF / (CC * COLLECTOR: Herman D. Knoble 02/17/94 *********************************************************************/ ph PH Directory Services invoked $Date: 1993/06/22 13:41:41 $$Revision: 6.5 $ 100:Qi server $Revision: 2.2 $ 100:Penn State On-Line Directory 200:Database ready. ph> login hdk Enter nameserver password: 200:hdk:Hi how are you? ph> query hdk 501:No matches to your query. ph> query alias=hdk ---------------------------------------- name: Knoble, Herman Denis phone: +1 814 865 0818 address: 214C COMPUTER BUILDING : UNIVERSITY PARK, PA 16802 campus: University Park nickname: Skip department: Computer and Information Systems title: RES ASSOC COMP CENTER email to: hdk@psu.edu (hdk@email.psu.edu) ---------------------------------------- ph> me ---------------------------------------- name: Knoble, Herman Denis alias: hdk email: hdk@email.psu.edu phone: +1 814 865 0818 address: 214C COMPUTER BUILDING : UNIVERSITY PARK, PA 16802 campus: University Park nickname: Skip department: Computer and Information Systems title: RES ASSOC COMP CENTER type: person staff id: xxxxxxxxx password: Encrypted; cannot be viewed. kerberos: hdk ---------------------------------------- 1ph> help alias ---------------------------------------- alias: SUMMARY The "alias" field contains information that uniquely identifies a person to the Nameserver. Usually, the contents of the "alias" field consists of a person's id assigned by the CAC, although other aliases may occur. It is possible for the owner of a ph entry to change his or her alias by logging into ph and using the "edit" or "make" command; thus, some people have aliases that do not follow the conventions just described, such as the alias "SueG". RESTRICTIONS ON ALIASES If you decide to edit your alias field, you should be aware of certain restrictions placed on the field: 1) The alias field is limited to the characters a-z (uppercase is permitted, but ignored during ph lookups), 0-9, and the hyphen (-). 2) The alias field must not contain a space. --More--[Press space to continue, q to quit, h for help] 3) An alias must not be someone else's real name (first or last) or nickname or a CAC userid. 4) The contents of the alias field must be unique; if you try to change your alias to one already in use, ph will reject it. CHANGING YOUR ALIAS To change your alias, log into ph using your current alias and password. Use the command "make alias=newalias" where newalias is what you want your alias to be. For more information on the "alias" field and how it is used by the Nameserver, see the ph help for "aliases" and "e-mail". SEE ALSO: aliases, e-mail, email, edit, make, fields, login, introduction, vi ---------------------------------------- 1ph> help aliases ---------------------------------------- aliases: WHAT IS AN ALIAS? The Nameserver contains entries for all staff, faculty, and students at the University. Each one of these people is identified by a special name, the alias. No two people have the same alias; therefore, a person's alias uniquely identifies him or her. This is the most important thing to remember about aliases: an alias is always enough information to identify a person in the Nameserver database. A person's alias is usually the same as the userid assiged by the CAC. It is possible for the owner of a ph entry to change his or her alias by logging into ph and using the "edit" or "make" command; thus, some people have aliases that do not follow the conventions just described, such as the alias "SueG". WHAT IS THE FUNCTION OF AN ALIAS? Aliases serve two functions. First, they are used as "login names" for the Nameserver. If you wish to make changes to your Nameserver entry, you must first tell ph your alias so that it knows who is trying to log in. Second, they can be used as a convenient means of --More--[Press space to continue, q to quit, h for help] sending a person electronic mail. Instead of sending mail to a person's specific e-mail address, you can send mail to "ph-alias@psu.edu", where ph-alias is the person's alias. For example, you could send mail to "p-pomes@psu.edu", and the mail would be delivered to Paul Pomes. Using alias-based addresses to send mail has a couple of advantages over using specific e-mail addresses: 1) alias-based addresses are often shorter and much easier to remember than specific e-mail addresses; and 2) the alias of a user never changes (unless the owner of the ph entry deliberately modifies his or her alias), whereas it is quite common for the specific address at which a person receives electronic mail to change. By keeping the "email" field in your ph entry up to date and encouraging friends and colleagues to use your alias-based address rather than your specific e-mail address, your electronic mail will always be delivered to your current address, eliminating the need to notify people if your specific e-mail address should change. For this reason, its a good idea to use your alias-based address on business cards and other printed or electronic media that advertise your e-mail address. See the ph help for "email" and "e-mail" for further information on the Nameserver and e-mail addresses. --More--[Press space to continue, q to quit, h for help] HOW DO I FIND AN ALIAS? Ph prints aliases by default when you do a lookup. The manner in which it prints them is somewhat confusing, however, and bears some explanation. Here is an sample ph query that will help: % ph john doe ---------------------------------------- name: John Doe office_phone: 333-3333 office_address: 214 COMPUTER BUILDING department: Computer and Information Systems email to: jnd1@psu.edu (jnd1@psuvm.psu.edu) ---------------------------------------- By default, ph combines the contents of the "alias" and "email" fields into a single line or pseudo-field called "email to". The alias is the first thing in the "email to" line, before the "@psu.edu". In the above example, the alias is "j-doe". A more direct way to find an alias is to specify the fields you want --More--[Press space to continue, q to quit, h for help] to see by using a "return clause" in the query. Only fields that follow the word "return" will be displayed, as shown below: % ph john doe return name alias ---------------------------------------- name: doe john alias: j-doe ---------------------------------------- SEE ALSO: login, email, e-mail, introduction, edit, make, alias ---------------------------------------- 1ph> help make ---------------------------------------- make: SYNTAX: make name-of-field="value-of-field"... SUMMARY The "make" command allows you to change fields in your own Nameserver entry. To use the "make" command, you must first login to the Nameserver (see help on "login"). Then, to change any field in your entry (or to add a field that doesn't appear in your entry), simply give the command: make name-of-field="value-of-field" The field(s) named in the "make" command will be given the value(s) specified. Note that the "value-of-field" part of the command should be enclosed in double quotation marks. If you wish to remove a field from your entry, use the "make" command and give the field an empty value by typing two consecutive double quotation marks for "value-of-field" (e.g., make email=""). Ph will then remove the field from your entry. A useful command in conjunction with "make" is "me". When you are logged in to the Nameserver, the "me" command can be used to view each and --More--[Press space to continue, q to quit, h for help] every field in your entry and to verify that the changes you made were what you expected. EXAMPLES In the following example, Paul Pomes changes his "email" field to paul@uxc.cso.uiuc.edu: ph> make email="paul@uxc.cso.uiuc.edu" 200:1 entry changed. In the next example, Paul removes his phone number (and, thus, the "phone" field) from his entry in the Nameserver database: ph> make phone="" 200:1 entry changed. It is possible to change more than one field at a time with the "make" command. In the last example, Paul changes his email address and deletes his phone field with a single command: ph> make email="paul@uxc.cso.uiuc.edu" make phone="" 200:1 entry changed. --More--[Press space to continue, q to quit, h for help] SEE ALSO: change, edit, passwd, me, login, alias, register ---------------------------------------- 1ph> help change ---------------------------------------- change: SYNTAX: change [name-of-field=]value-of-field make name-of- field="value-of-field"... SUMMARY This command is used to change one or more fields to the values specified. The "change" command consists of two clauses, the "change" clause and the "make" clause. The "change" clause determines which entries will be affected by the command. It uses the same arguments as the selection clause of a "query" command. The "make" clause specifies which field(s) will be changed and the new value(s) of the specified field(s). You must be logged in to use "change". "Change" differs from the "make" command in that it can modify multiple ph entries simultaneously. This command can be useful for individuals with proxy rights to more than one ph entry. All matching entries for which the logged in user has proxy will be affected by the command. The "change" command obeys the Nameserver "limit" option, which can be used to prevent changing the field contents of more entries than --More--[Press space to continue, q to quit, h for help] intended. To change the limit option from its default of 2 to a smaller --More--[Press space to continue, q to quit, h for help] or larger number, type the command "set limit=#", where "#" equals the maximum number of entries that can be changed. EXAMPLE The following hypothetical scenario illustrates how, under special circumstances, "change" can be used as a convenient substitute for the "make" or "edit" command: John Doe is a network administrator with proxy rights to the ph entries for most or all of the faculty and staff in his building. All of his users receive their faxes on a single fax machine in the building and would like the phone number of the fax machine added to their ph entries. Instead of modifying the "fax" field for each user individually, John can use the the "change" command to edit the fax fields of all entries for which he has proxy. Before doing so, however, he must set the "limit" option to a number equal to or greater than the number of entries he intends to modify. John's ph session might look something like this: ph> login j-doe1 200:j-doe1:Hi how are you? ph> set limit=50 200:Done. --More--[Press space to continue, q to quit, h for help] ph> change proxy=j-doe1 make fax="(217) 333-3333" 200:33 entries changed. SEE ALSO: edit, add, delete, login, query, make ---------------------------------------- 1ph> help login ---------------------------------------- login: SYNTAX: login [your-alias] SUMMARY The "login" command allows you to identify yourself to the Nameserver. More specifically, it identifies you with a particular entry in the Nameserver and allows you to change the fields in that entry and in any other entry for which you have proxy rights (see help on "proxy"). It is also necessary to be logged in to the Nameserver to view certain sensitive fields in your own entry. In order to use the "login" command, you must know both your ph alias and your ph password. Your can find out your alias by doing a ph lookup on your own entry. For example, if Paul Pomes wanted to learn his alias, he could type "ph paul pomes" at the command prompt or in ph's interactive mode. Paul's ph entry would be displayed as follows: ---------------------------------------- name: pomes paul phone: (217) 333-6262 address: 1429 dcl, MC 256 : 1304 w springfield --More--[Press space to continue, q to quit, h for help] : urbana, il 61801 department: computing services office title: sr res programmer email to: p-pomes@uiuc.edu (paul@uxc.cso.uiuc.edu) ---------------------------------------- The "alias" is the first item in the "email to:" line, before the "@psu.edu"; thus, Paul Pomes' alias is "p-pomes". In order to log into the Nameserver, you must have a CAC Access Account. To obtain an Access Account, contact the CAC Accounts Group in Room 230 Computer Building (814 865 4772). EXAMPLE Once you know your ph alias and password, you can login to the Nameserver. In order to login, you must first enter ph's interactive mode by typing "ph" at the command prompt. Then type "login your-alias", after which you will be prompted for your password. Paul Pomes' "login" session would look something like this: % ph [ph status message appears here] --More--[Press space to continue, q to quit, h for help] ph> login p-pomes Enter nameserver password: [paul's-secret-password] 200:p-pomes:Hi how are you? ph> Paul enters his Nameserver password when asked for it; his password is not echoed to the screen. NOTES If you are using ph from the account listed in your "email to:" line, you will not have to give a password when logging into ph. This feature will only work if your system administrator has installed ph 5.0 or later and has made it a privileged program. If you do not give your alias on the command line, ph will ask you for it. Some ph clients display the user "alias" as a separate field during a lookup, rather than combining it with contents of the "email" field in the "email to:" line. SEE ALSO: proxy, passwd, alias, aliases ---------------------------------------- 1ph> help passwd ---------------------------------------- passwd: SYNTAX: passwd [alias-of-other-user] SUMMARY The "passwd" command is used to change your Nameserver password. To use it, simply type, "passwd". You will be asked to enter your new password two times. You must be logged in to the Nameserver to use the "passwd" command (see help on "login"). If you are proxy to another user, you may change his or her password by specifying the appropriate alias to the passwd command; for example, if you are proxy to John Doe's entry and John's alias is "j-doe1", you could change his password while logged in to your own entry by typing "passwd j-doe1". GOOD PASSWORDS Good passwords are at least six characters long and contain a wide variety of characters. Ph will complain if your password is too short or contains only numbers. --More--[Press space to continue, q to quit, h for help] It is best to avoid names or any word from the dictionary. One good scheme for passwords is to make them acronyms for some phrase you can remember. For example, you might think of "a rose By any other name would smell..." and use "arBaonws" as your password. SEE ALSO: login, alias, aliases, proxy, policy ---------------------------------------- 1ph> help forwarding ---------------------------------------- forwarding: The Nameserver is used on the PSU campus to forward electronic mail. The program that accomplishes this is called "phquery". Phquery uses (more or less) the following algorithm to route mail: if the address ends in "@psu.edu" then remove the "@psu.edu" convert any punctuation to hyphens (-) if the address is someone's Nameserver "alias" then if that someone has an "email" field then send the mail to the first e-mail address in the "email" field else bounce the mail, "Email field not present in Nameserver entry" endif else if the address is someone's Nameserver "callsign" then if that someone has an "email" field then send the mail to the first e-mail address in the "email" field else bounce the mail, "Email field not present in Nameserver entry" endif else convert hyphens (-) to spaces ( )* --More--[Press space to continue, q to quit, h for help] count the Nameserver entries whose "name" or "nickname" is the address if the count is 0 then bounce the mail, "No matches to Nameserver query" else if the count is more than 1 but less than 21 then bounce the mail, giving a list of names and address matched else if the count is 21 or more then bounce the mail, "Too many matches found to Nameserver query" else if the count is 1 then if that someone has an "email" field then send the mail to the first e-mail address in the "email" field else bounce the mail, "Email field not present in Nameserver entry" endif endif endif else deliver mail as originally addressed endif *all combinations of spaces and hyphens are tried, to support hyphenated names. 1ph> help ---------------------------------------- These ``ph'' help topics are available: add fields manpage register change help me status command-line_mode interactive_mode passwd switch commands login ph vi delete logout query edit make quit To view one of these topics, type ``help name-of-topic-you-want''. ---------------------------------------- These ``native'' help topics are also available: 100 475 510 521 introduction 101 500 511 522 nickname 102 501 512 523 password 200 502 513 598 people 201 503 514 599 ph_news 300 504 515 alias policy 301 505 516 aliases protocol 400 506 517 clients sites 401 507 518 e-mail type 402 508 519 email 403 509 520 forwarding To view one of these topics, type ``help native name-of-topic-you-want''. --More--[Press space to continue, q to quit, h for help] ---------------------------------------- Most commands optionally preceded by integer argument k. Defaults in brackets. Star (*) indicates argument becomes new default. ------------------------------------------------------------------------------- Display next k lines of text [current screen size] z Display next k lines of text [current screen size]* Display next k lines of text [1]* d or ctrl-D Scroll k lines [current scroll size, initially 11]* q or Q or Exit from more s Skip forward k lines of text [1] f Skip forward k screenfuls of text [1] b or ctrl-B Skip backwards k screenfuls of text [1] ' Go to place where previous search started = Display current line number / Search for kth occurrence of regular expression [1] n Search for kth occurrence of last r.e [1] ! or :! Execute in a subshell v Start up /usr/bin/vi at current line ctrl-L Redraw screen :n Go to kth next file [1] :p Go to kth previous file [1] :f Display current file name and line number . Repeat previous command ------------------------------------------------------------------------------- Press any key to continue --More--[Press space to continue, q to quit, h for help] ---------------------------------------- 1ph> help fields ---------------------------------------- fields: Syntax: fields [name-of-field] The "fields" command is used to view the list of fields that are defined in the Nameserver database. The output of the "fields" command consists of two lines describing each field. For example, here are the lines that describe the "password" field: -200:7:password:max 16 Change Encrypt -200:7:password:User's nameserver password. Each line begins with a Nameserver reply code of "-200"; this can be safely ignored. The next thing in each line is the field id number (in this case, "7"). This too is of small interest. Next comes the name of the field ("password"). From this point on, the two lines differ. The first line continues with the maximum length of the field (in this case, "max 16", meaning the field can be no more than 16 characters long), followed by a set of field attributes ("Change Encrypt"). The second line is a brief description of what the field is intended to hold. A field's attributes determine how the field behaves. Here is a list --More--[Press space to continue, q to quit, h for help] of the attributes you are likely to encounter and their meanings: Change - the field can be changed by the owner of the entry Default - the field is printed (displayed) if no fields were specified in a query with a return clause Encrypt - the field must be encrypted before transmission ForcePub - the field is viewable/searchable regardless of the contents of the "suppress" field Indexed - the field appears in the Nameserver's index; all Nameserver lookups must include at least one indexed field Lookup - the field can be used in queries NoPeople - no entry of type "person" may include this field; i.e., the field is limited to non-person entries such as campus units, groups, weather info., etc. Public - anyone is allowed to see the contents of the field To view the description for a single field, rather than the entire list of fields defined in the Nameserver database, specify the name of the field you want to see; e.g., "fields email". SEE ALSO: query, edit, make --More--[Press space to continue, q to quit, h for help] ---------------------------------------- 1ph> help register ---------------------------------------- register: SYNTAX: register SUMMARY The "register" command registers the account from which you logged in to ph as the electronic mail address in your ph entry. For example, if you logged in to ph from the machine "farman" in the CAC Sun Cluster and your login ID on "farman" was "bsd1", the "register" command would put the following information into your "email" field: "bsd1@farman.cac.psu.edu". However, since the proper email address may not contain the name of any particular machine, this command is of limited use. To use "register", you must first login to the Nameserver (see help on "login"). Then, simply type "register" at the "ph>" prompt. The account into which you are currently logged will automatically be entered into your "email" field. If a different address was already in your "email" field, the "register" command will overwrite it with your current account information. The "register" command only works with the ph client for Unix systems. Other clients generally do not recognize or support this command. --More--[Press space to continue, q to quit, h for help] A useful command in conjunction with "register" is "me". When you are logged in to the Nameserver, the "me" command can be used to view each and every field in your entry and to verify that the changes you made were what you intended. SEE ALSO: make, edit, passwd, me, login, alias, aliases, email, e-mail, clients ---------------------------------------- 1ph> help email ---------------------------------------- email: SUMMARY The "email" field should contain the specific account and machine name at which you receive mail. The information in this field tells users at this campus and other locations how to reach you by electronic mail. It is also used by the Nameserver for routing e-mail with addresses based on names or aliases. The information in the "email" field is NOT automatically filled in during regular Nameserver database updates. If an e-mail address was listed for you in the old EBB directory, it was carried over when the Nameserver was created. You, as the owner of your ph entry, are entirely responsible for making sure that your "email" field is filled in and up to date. Because the "email" field is used by the Nameserver electronic mail delivery service, it is especially important that the contents of this field be accurate. In general, "Internet style" addresses are recommended for the "email" field. Internet style addresses take the form: "userid@fully.qualified.domain.name". Examples of internet style addresses for several computers on which PSU students and staff --More--[Press space to continue, q to quit, h for help] commonly receive mail are given below: PSUVM: userid@psuvm.psu.edu CAC POPMail: userid (no need to change) CAC Sun Cluster: userid@cac.psu.edu The text "userid" in the above examples should, of course, be replaced with your specific login ID; e.g., "ward@cac.psu.edu". Note: Although it is technically possible to enter more than one e-mail address in the "email" field, this practice is strongly discouraged. If you have more than one e-mail account and/or would like tell people how to reach you via a UUCP or BITNET style address, it is recommended that you put such information in the "other" field of your ph entry. UPDATING YOUR "EMAIL" FIELD To update your "email" field, you must first login to ph (see help on "login"). Once logged in, you can use the "edit" or "make" command to modify your entry. For example: --More--[Press space to continue, q to quit, h for help] make email="dickson@cac.psu.edu" edit email (You will be placed in the default text editor, usually vi. Enter your current e-mail address and save the file.) The "register" command also provides a convenient method for updating one's "email" field. It registers the account from which you logged in to ph as the electronic mail address in your ph entry. For example, if you logged in to ph from "farman" in the CAC Sun Cluster and your login ID was "smythe", the "register" command would put the following information into your "email" field: "smythe@farman.cac.psu.edu". In many cases, the actual machine name is not used for mail deliver, so the utility of the register command is limited. To use "register", you must first login to the Nameserver (see help on "login"). Then, simply type "register" at the "ph>" prompt. The account into which you are currently logged will automatically be entered into your "email" field. If a different address was already in your "email" field, the "register" command will overwrite it with your current account information. --More--[Press space to continue, q to quit, h for help] Note: The methods described above for modifying your "email" field apply specifically to the Unix ph client and may or may not work with the ph client you use. The "edit" command works with most clients that have been modelled on the Unix client. At the time of this writing, the "register" command was only available through the Unix client. SEE ALSO: e-mail, edit, make, fields, login, introduction, vi, register, clients ---------------------------------------- 1ph> help vi ---------------------------------------- vi: A RANK BEGINNER'S GUIDE TO VI This page describes a few vi commands that can be used to accomplish simple editing tasks. Full documentation for vi can be found in The UNIX User's Manual Supplementary Documents, chapter 15 (really advanced users should read chapter 16 as well). Two things to keep in mind: First, the editor is pronounced "vee eye;" if you pronounce it "vie," UNIX gurus will laugh at you, though not out loud. Second, vi is case-sensitive; be sure to use upper or lower case commands as appropriate. MODES Vi is a modal editor; what you can do depends on what mode you are in. The two modes of interest to us are command mode and insert mode. You type most commands in command mode; all you do in insert mode is type your text. You get out of insert mode by pressing the "escape" key, usually marked "esc" on keyboards; on some keyboards, you may have to hold down the "control" or "alt" key and press "[". If you press the "escape" key in command mode, vi will beep at you; so if you get confused, just press "escape" until vi beeps; then you'll be back in command mode. --More--[Press space to continue, q to quit, h for help] MOVING AROUND Here are some motion commands in vi. They are typed in command mode. When motion commands are used, the editor remains in command mode. COMMAND WHAT IT DOES control-h Moves the cursor left one character. h Moves the cursor left one character. j Moves the cursor down one line. k Moves the cursor up one line. l Moves the cursor right one character. w Moves the cursor forward to the beginning of the next word. b Moves the cursor backward to the beginning of the previous word. DELETING TEXT Here are some commands to get rid of text. Type them in command mode. When the following deletion commands are used, the editor remains in command mode. COMMAND WHAT IT DOES --More--[Press space to continue, q to quit, h for help] dd Deletes the current line. x Deletes the character at the cursor and moves the rest of the line to fill the hole. ADDING TEXT All of the following commands put vi into insert mode and let you type text. Press the "escape" key when you are finished adding text, and vi will be returned to command mode. COMMAND WHAT IT DOES i Starts inserting characters immediately before the current cursor location. a Starts inserting characters immediately after the current cursor location. O Creates a new line above the cursor and starts inserting at the beginning of that line. Note that this command is a capital "O". LEAVING VI The following commands exit vi. They work in command mode. --More--[Press space to continue, q to quit, h for help] COMMAND WHAT IT DOES ZZ Exits vi and saves the changes you have made. Those are capital "Z"s! :q! Exits vi, but doesn't save changes (the "" means press the "return" key). ---------------------------------------- 1ph> help edit ---------------------------------------- edit: SYNTAX: edit name-of-field [alias-of-other-user] SUMMARY The edit command allows you to change the contents of a field in a Nameserver entry (usually your own). You must first login to the Nameserver (see help on "login"). Then, to change any field in your entry (or to add a field that doesn't appear in the entry), simply give the command: "edit name-of-field". You will be placed in the default text editor (usually "vi" on Unix machines) and allowed to make changes to the field. When you leave the editor, any changes you have made will be entered into the database. If you change your mind about editing the field, simply exit the editor without saving the changes; by doing so, ph will not record your changes. If you wish to remove a field from your entry entirely, use the "edit" command and delete ALL the text from the field. Ph will then remove the field from your entry. A useful command in conjunction with "edit" is "me". When you are --More--[Press space to continue, q to quit, h for help] logged in to the Nameserver, the "me" command can be used to view each and every field in your entry and to verify that the changes you have made are what you expected. The "fields" command is also useful in conjunction with "edit". "Fields" displays all of the fields that are defined in the Nameserver database. You can use the "fields" command to see the names and descriptions of fields that can be added to your entry (see help on "me" and "fields" for more information on the "me" and "fields" commands). PROXIES Normally, the owner of an entry is the only person (with the exception of the CCSO ph administrators) that can edit his or her own entry. Some users, however, prefer to have others make changes for them. You can grant others the right to modify your entry by entering their aliases in your "proxy" field. Names can be added to your "proxy" field manually with the "edit" command, or you can ask your building or departmental network administrator to request proxy rights for your entry. If you want to explicitly deny proxy rights to your entry, put the text "NO!" into your "proxy" field. (For more information on proxies, see help on "proxy" and "policy".) EXAMPLES --More--[Press space to continue, q to quit, h for help] In the first example, John Doe logs into the Nameserver and uses the "edit" command to change the contents of the "home_address" field in his entry: ph> login j-doe1 200:j-doe1:Hi how are you? ph> edit home_address 102:There was 1 match to your request. "/tmp/ph010352" 2/37 [vi was used to change John's home address to "222 Main Street/Urbana, IL 61801"] "/tmp/ph010352" 2/33 200:1 entry changed. In the next example, John Doe decides to add a NEW field to his ph entry. The procedure is nearly identical to the example above, except that, when the text editor is invoked, an empty file is displayed, and John must insert the new information rather than changing existing information: ph> login j-doe1 200:j-doe1:Hi how are you? --More--[Press space to continue, q to quit, h for help] ph> edit fax 102:There was 1 match to your request. -508:1: fax: Not present in entry. "/tmp/ph010352" 0/0 [vi was used to add John's fax number "(217)333-3333"] "/tmp/ph010352" 1/14 200:1 entry changed. In the final example, Bill Smith, John Doe's network administrator edits John's "email" field. Bill's alias, b-smith, is listed in John's "proxy" field, and, therefore, Bill has proxy rights to John's account. Note that Bill logs into ph as himself and modifies John's entry by specifying John's alias after the field name (in this case, "email") in the "edit" command: ph> login b-smith 200:b-smith:Hi how are you? ph> edit email j-doe1 102:There was 1 match to your request. "/tmp/ph000952" 1/28 [vi was used to change John's email field to "jdoe@ux1.cso.uiuc.edu") --More--[Press space to continue, q to quit, h for help] "/tmp/ph000952" 1/22 200:1 entry changed. SPECIAL CONSIDERATIONS On Unix systems, ph obeys the "EDITOR" environment variable. If you have that variable set to something other than "vi", the editor of your choice will be used. Only fields with the "Change" attribute may be changed by a user. Most fields have this attribute; two that do not are "name" and "curriculum". If you wish to make a change to one of those fields, you must visit the CCSO Accounting and Distribution Office in 1420 DCL, 1304 W. Springfield, Urbana. In order for your request to be processed, you must have a valid University identification card. Ph allows only printable ASCII characters in fields, along with tab and newline. Any other characters will be removed before being sent to the Nameserver. Do not use "edit" to change your Nameserver password; use "passwd" instead. --More--[Press space to continue, q to quit, h for help] HOW "EDIT" IS IMPLEMENTED To accomplish the edit command, ph uses a "query" command to fetch the current value of the field, places that value in a temporary file, and invokes the default editor on it. Once the editor has been exited, ph reads the temporary file and issues a "change" command to change the entry to the value contained in the temporary file (assuming the value has been changed). SEE ALSO: change, vi, passwd, me, login, alias, proxy, make, register, fields, policy ---------------------------------------- 1ph> help me ---------------------------------------- me: SYNTAX: me SUMMARY The "me" command allows you to view each and every field in your Nameserver entry including sensitive fields that cannot be viewed by other users. In order to use "me", you must first login to the Nameserver (see help on "login"). Then enter "me" at the "ph>" prompt. The contents of your entire entry will be displayed. "Me" is particularly helpful in conjunction with commands that allow you to change fields in your own entry such as "make" and "edit". It can be used to verify that the changes you made were what you intended. The "me" command does not show fields that are empty (do not exist) in your entry. The Nameserver is capable of holding much more information for a person than is normally provided by the Office of Administrative Systems. To add additional information to your entry, such as your birthday, special projects on which your are working, your office hours, etc., you must add additional fields using the "edit" or "make" command. To see a list of fields that can be added to your entry and a description of the kind of information each field --More--[Press space to continue, q to quit, h for help] is intended to hold, use the "fields" command. SEE ALSO: edit, make, login, fields, policy ---------------------------------------- 1ph> help manpage ---------------------------------------- manpage: PH(1L) UNIX Programmer's Manual PH(1L) NAME ph - CCSO Nameserver client (on-line phone book) SYNOPSIS ph [ -s server ] [ -p port ] [ -t type ] [ -f field1,field2,... ] [ -mMrRbBTlLF ] query ph [ -s server ] [ -p port ] [ -t type ] [ -f field1,field2,... ] [ -h topic ] [ -mMnNrRbBTlLFcC DESCRIPTION Ph queries the CCSO Nameserver, a database of University faculty, staff, and students. The database contains nearly all the information in the Student/Staff Directory (the University phone book), as well as other information, including electronic mail addresses. Ph may be used in two ways; interactively or with command- line arguments. --More--[Press space to continue, q to quit, h for help] If given arguments, ph will treat the arguments as a query and return the results of the query. For example, ph paul pomes would return the entry for the maintainer of ph , Paul Pomes. For more information on what types of queries you may make, see the QUERIES section below. If given no arguments, ph will enter interactive mode, print a prompt, and wait for commands. Interactive mode will be discussed in detail below. Ph is not intended for the generation of mailing lists. Therefore, it will refuse any requests resulting in more than a small number of matches. This is not negotiable. OPTIONS Ph recognizes the following options. They may be specified in the PH environment variable, given on the command line, or set with the switch command from inside ph. Options given with the switch command override all others; options --More--[Press space to continue, q to quit, h for help] given on the command line override those in the PH environ- ment variable. -n Do not read the .netrc file. This option has meaning only when using ph in interactive mode (see below for descriptions of the .netrc file and interactive mode). -N Do read the .netrc file. This is the default. -r Do not reformat alias and email fields to show alias- based e-mail addresses. -R Reformat alias and email fields to show alias-based e- mail addresses. This is the default. -b Do not beautify query responses; print them in gory detail, complete with response codes. -B Beautify query responses. This is the default. -m Do not use a paging program (like more(1)) when print- ing responses. --More--[Press space to continue, q to quit, h for help] -M Use a paging program. This is the default. -l Do not label field values with field names when print- ing queries. -L Label field values with field names when printing queries. This is the default. -t type Use type as a default type on queries. This is just like adding type=type to all queries. The -t option can be overriden by specifying an explicit type in the query, as in, "ph pomes type=phone". -T Do not specify any type by default; this is the default. -s server Use server as a Nameserver host, instead of the default host. A list of suitable servers may be found with the query "ph alias=ns-servers". --More--[Press space to continue, q to quit, h for help] -p port Connect to the tcp port port, instead of the default port. -c Do not wait for confirmation of edit commands. This is the default. -C Wait for confirmation of edit commands (see edit below). -f field1,field2,... Return fields field1,field2,... instead of the default list of fields, if no return clause is specified on queries. This is just like adding "return field1 field2 ..." to all queries. -F Return default list of fields; this is the default. -h topic Display a list of on-line help topics. If the -h option is followed by the name of one of the on-line --More--[Press space to continue, q to quit, h for help] help topics, the help screen for topic will be displayed. QUERIES The Nameserver's database contains over 70,000 entries. Each entry is comprised of multiple fields, each containing information about the entry. Each field has a name that is descriptive of what the field contains; for example, the field named address contains the office mail address of the person in question (for more information on fields, see the description of the fields command in the INTERACTIVE section below). By default, queries are assumed to refer to the name or nickname field of the entry. Therefore, saying "ph john doe" looks for entries whose name or nickname field contains "john" and "doe". Fields other than the name and nickname fields must be specified; for example, ph pomes address=DCL would return entries with name or nickname "pomes" whose --More--[Press space to continue, q to quit, h for help] address contained "DCL." Matching in ph is done on a word-by-word basis. That is, both the query and the entry are broken up into words, and the individual words are compared. Although ph is insensi- tive to case, it otherwise requires words to match exactly, with no characters left over; "john" does not match "john- son", for example. This behavior may be overriden by the use of normal shell metacharacters ("?" to match any single character, "*" to match zero or more characters, and "[]" to match a single character from a set of characters). Ph will display only entries that match all of the specifi- cations in the query. For example, ph paul pomes will return all entries with both "paul" and "pomes" in the name or nickname fields. Ph returns a certain set of fields by default. It is possi- ble to ask for different fields in a query. This is done by --More--[Press space to continue, q to quit, h for help] specifying the return keyword and listing the fields of interest. For example, ph paul pomes return email would print only the electronic mail address of the main- tainer of ph. You may also ask for all fields in the entry by using "all" as a field name. This will show you every field you are allowed to see in the entry. All output from ph is sent through more(1) (or whatever pro- gram is specified in the PAGER environment variable). INTERACTIVE MODE If ph is given no arguments, it enters interactive mode, where it prompts for, executes, and displays the results of Nameserver commands. Interactive mode provides access to more Nameserver features than mere queries. Some of these features require the user to identify him/her self to ph by use of the login command; others do not. Commands may be abbreviated, provided enough characters are given to distin- guish them from other commands. --More--[Press space to continue, q to quit, h for help] .netrc file Ph reads the same .netrc file as does ftp (see ftp(1)). If it finds a machine named "ph" that has a login and a password specified for it, ph will automatically do a login command, using the values from the .netrc file. Ph will silently refuse to use a .netrc file that has any permissions for group or other (see chmod(1)). Public Commands The following commands do not require the user to be logged in to the Nameserver: help [topic] Provides explanations of Nameserver commands. Given no arguments, help lists the available help topics. Given a topic as an argument, help will print help for that topic. A list of commands and a one-line description of each command may be obtained by requesting the topic commands. --More--[Press space to continue, q to quit, h for help] query Performs Nameserver queries exactly like non- interactive ph queries except that metacharacters do not have to be quoted. fields Lists the fields currently in use in the Nameserver. For each field, a display like the following (admittedly ugly) is produced: -200:2:email:max 64 Lookup Public Default Change -200:2:email:Preferred electronic mail address. ... The leading number is a reply code from the Nameserver. The next number is the field number. Following the field number is the name of the field, the maximum length of the field, and the attributes for the field. The second line has, in addition to repeated reply code, number, and name, a one-line description of the field. The attributes determine how a field may be used. Lookup means the field may be searched in a query. --More--[Press space to continue, q to quit, h for help] Indexed means the field is indexed (at least one Indexed field must be included in every query). Default means the field is displayed by default. Change means that users may change the field. set option[=value] Allows Nameserver options to be set. These options are for future use. switch -option [value] Allows ph options to be set. See the OPTIONS sec- tion above. quit Exits ph. login alias Identifies the user to the Nameserver. Alias is your Nameserver alias, a unique name for you in the Nameserver; it is printed in ph queries, as the first thing after "email to:": email to: p-pomes@uiuc.edu (paul@uxc.cso.uiuc.edu) --More--[Press space to continue, q to quit, h for help] In this case, the alias is "p-pomes". You will be prompted for your Nameserver password when you give the login command, unless you are using ph from the login in your email field (the one in parentheses on the "email to:" line), and your system administrator has made ph "setuid root", in which case no password will be required. Your Nameserver password is not the same as your system password; the only way to discover your Nameserver password is to bring yourself and a University ID to the CCSO Accounting Office in 1420 DCL. Because of abuses in the past, pass- words cannot be given out via email, phone, or to third parties. You are allowed to change your Nameserver alias; there are, however, restrictions on Nameserver aliases; they must be unique within the Nameserver, they cannot be common names ("david" is right out), and they can only contain letters, --More--[Press space to continue, q to quit, h for help] digits, dashes (-) and periods (.). Commands Requiring Login The following commands require that the user executing them be logged in to the Nameserver. passwd [alias] Changes your Nameserver password. You will be asked to type your new password twice. Ph will complain if your password is too short or contains only numbers (although it does allow such pass- words). Privileged users may change the passwords of certain other users by specifying the alias of the other user when giving the passwd command. me Lists the Nameserver entry of the currently logged-in user. edit field [alias] Allows ph users to change those fields in their entry that have the Change attribute set. Edit --More--[Press space to continue, q to quit, h for help] will retrieve the value of the named field (if a value exists), and will allow the user to edit the value with vi(1) (the EDITOR environment variable may be used to override the use of vi). The changed value will then be reinserted in the Nameserver. If the -C option is in effect, the message, "Change the value [y]?" will be printed after the editing is finished. Pressing return alone, or anything beginning with "y", will make ph change the value; anything beginning with "n" will make ph discard the changes. make field=value [field2=value2...] Allows ph users to change those fields in their entry that have the Change attribute set. Make will set the specified field(s) to the specified value(s) in the entry of the currently logged in user. add Adds entries to the Nameserver. This is a privileged command. --More--[Press space to continue, q to quit, h for help] delete Deletes entries from the Nameserver. This is a privileged command. logout Undoes the effects of a login command. QUERY EXAMPLES Here are some examples to clarify ph queries. Each example is preceded by a description of the desired effect. It is assumed that the queries are being done with ph from the command line, rather than by using the interactive mode of ph. The only difference for interactive mode is that meta- characters would not have to be quoted or escaped. Find the ph entry for Paul Pomes: ph paul pomes Find the ph entry for P. Pomes, where the rest of the first name is not known: ph p\* pomes --More--[Press space to continue, q to quit, h for help] Find Alonzo Johnson (or is that JohnsEn?): ph alonzo johns\?n or ph alonzo johns\[eo\]n Find Paul P., where the rest of the last name is unknown: ph paul p\* The last query fails because it matches too many entries. It is therefore necessary to narrow the search. Suppose it is known that Paul P. has an office in DCL: ph paul p\* address=DCL Alternately, suppose Paul P. works for CCSO. You might try: ph paul p\* department=CCSO When that failed, a good next guess would be: --More--[Press space to continue, q to quit, h for help] ph paul p\* department=computing The moral of the story is that fields in ph generally con- tain whatever the user wishes them to contain, and, hence, there may be many different spellings and abbreviations for any particular field (some fields are exceptions, including the name field, which is always the full name, as known to the University, of the person involved). It pays to make liberal use of metacharacters and creativity when searching fields other than name. Suppose all that is wanted is the full name and electronic mail address of P. Pomes: ph p\* pomes return name email RENAMING PH If ph is invoked with a name other than ph, slightly dif- ferent option processing is done. For the sake of an exam- ple, let us assume ph was invoked with the name, "unit". The following consequences obtain: --More--[Press space to continue, q to quit, h for help] Ph will assume an option of "-t unit". Ph will read the UNIT environment variable, after reading the PH environment variable, and before reading command-line options. This feature allows the easy installation of entry-type specific lookup commands, as well as custom configuration of those commands. BUGS Separate words in a query are allowed to match the same word in the entry; "ph s\* smith" is functionally equivalent to "ph smith", because the "s*" is allowed to match "smith". Ph does some looking about in the commands you give it, but does not understand the full syntax of Nameserver commands. This can occasionally lead to mistakes, especially when dealing with quoted strings. DISTRIBUTION Source code for ph is available by anonymous ftp to uxc.cso.uiuc.edu, in the file pub/ph.tar.Z. The complete system, including source for the qi(8) server side is in the --More--[Press space to continue, q to quit, h for help] file pub/qi.tar.Z. This source works on 4.[23]BSD UNIX sys- tems. Any troubles encountered porting ph to a particular system are of interest to the maintainer of ph, as are ports done to other operating systems. SEE ALSO The CCSO Nameserver - An Introduction, by Steven Dorner; updated by Paul Pomes. The CCSO Nameserver - Server-Client Protocol, by Steven Dorner; updated by Paul Pomes. qi(8) AUTHOR Steve Dorner (sdorner@qualcomm.com), Qualcomm, Inc. (form- erly at the University of Illinois Computing and Communica- tions Services Office) The code is now maintained by Paul Pomes (p-pomes@uiuc.edu), University of Illinois Computing and Communications Services Office. ---------------------------------------- 1ph> help command-line_mode ---------------------------------------- command-line_mode: The ph user interface has two modes: "command-line mode" and "interactive mode". As its name implies, "command-line mode" permits the user to process ph queries from the operating system prompt or so-called "command-line". Command-line mode can only be used to view public information in the Nameserver database. In order to change a Nameserver entry or view privileged information about one's own entry, interactive mode is required. The syntax for a command-line mode query is: ph [-s server] [-p port] [-t type] [-f field1,field2,...] [-mMrRbBTlLF] query Note that many options and switches are available in command-line mode. All such options are explained in full in the help file called "manpage" (the Unix online manual page for ph). EXAMPLES To do a simple Nameserver lookup in command-line mode, get to the operating system prompt and type the command "ph" followed by a query expression. The entries matching your query will be printed to the --More--[Press space to continue, q to quit, h for help] screen. If the matching entries exceed one screen's worth of information, they will be filtered through the default pager (usually "more") and displayed one screen at a time. To advance to the next screen, press the space bar. Once all of the matching entries are displayed, you will be returned to the system prompt. The following example shows a simple lookup on the name "paul pomes" using ph's default settings: ux1 3> ph paul pomes ---------------------------------------- name: pomes paul phone: (217) 333-6262 address: 1429 dcl, MC 256 : 1304 w springfield : urbana, il 61801 department: computing services office title: sr res programmer email to: p-pomes@uiuc.edu (paul@uxc.cso.uiuc.edu) ---------------------------------------- ux1 4> Of course, command-line mode queries can take advantage of the various --More--[Press space to continue, q to quit, h for help] options and switches mentioned above. In the example below, the "-s server" option is used to query the Nameserver at Northwestern University, the "-f field1, field2..." option is used to specify which fields to display, and the "-r" option is used to tell ph not to reformat (combine) the "email" and "alias" fields into a single field with an alias-based address: ux1 37> ph -s ns.nwu.edu -f name,alias,email -r john norstad ---------------------------------------- name: norstad, john l alias: j-norstad email: jln@casbah.acns.nwu.edu ---------------------------------------- SEE ALSO: ph, query, manpage, interactive_mode ---------------------------------------- 1ph> help interactive_mode ---------------------------------------- interactive_mode: The ph user interface has two modes: "command-line mode" and "interactive mode". Command-line mode permits the user to process ph queries from the operating system prompt or so-called "command-line". If ph is given no arguments on the command-line, it enters interactive mode, where it prompts for, executes, and displays the results of Nameserver commands. Interactive mode is commonly used to view and change information in one's own entry or an entry for which one has proxy as well as to process queries. It also provides access to a variety of Nameserver commands not available in command-line mode. To see a list and brief description of the interactive mode commands, type "help commands". Some of these commands require the user to identify him/herself to ph by use of the "login" command (see help on "login"); others do not. Interactive mode commands may be abbreviated, provided enough characters are given to distinguish them from other commands. EXAMPLES If the "ph" command is issued at the operating system prompt without any arguments (i.e., a query expression), it takes the user to interactive mode where s/he is presented with the "ph>" --More--[Press space to continue, q to quit, h for help] prompt. Once at the "ph>" prompt, an interactive mode command can be issued. The example below shows how one enters interactive mode: ux1 4> ph $Date: 1992/08/17 13:35:39 $$Revision: 5.7 $ 100:Ph passwords may be obtained at CCSO Accounting, 1420 DCL. 100:Be sure to bring your University Id Card. You may not need 100:a password if you are using the login in your email field. 200:Database ready. ph> [ph is ready and waiting for you to enter a command] On some Unix systems, it is also possible to enter interactive mode by invoking ph on the command-line with the name of one of the ten data types found in the "type" field of the Nameserver database. These include: "areacode", "fall", "food", "person", "phone", "spring", "summer", "timetable", "unit", and "weather". If ph is invoked with one of these alternative names, it sets the default type for all queries to the type specified. It also displays the name of the specified type in the interactive mode prompt (e.g., "weather>", "food>", etc., instead of "ph>"). In the example below, ph is invoked with the name "person" and enters interactive mode. All queries processed during the session --More--[Press space to continue, q to quit, h for help] default to type "person": ux1 9> person $Date: 1992/08/17 13:35:39 $$Revision: 5.7 $ 100:Ph passwords may be obtained at CCSO Accounting, 1420 DCL. 100:Be sure to bring your University Id Card. You may not need 100:a password if you are using the login in your email field. 200:Database ready. person> ph english return name phone ---------------------------------------- name: english aaron joseph phone: (217) 367-6845 ---------------------------------------- name: english francis e phone: 332-1877 ---------------------------------------- name: english margaret m phone: 367-3167 ---------------------------------------- name: english paul richard phone: Not present in entry. --More--[Press space to continue, q to quit, h for help] ---------------------------------------- name: english sondra kay phone: 384-4669 ---------------------------------------- name: english talisa renee phone: (217) 332-4514 ---------------------------------------- Once having entered interactive mode in this manner, it is possible to override the default type by specifying a different type in the selection clause of the query: person> ph type=unit english return name phone ---------------------------------------- name: English as an International Language, Division of phone: 333-1506 ---------------------------------------- name: English, Dept of phone: 333-2391 ---------------------------------------- SEE ALSO: ph, query, manpage, command-line_mode, proxy, type --More--[Press space to continue, q to quit, h for help] ---------------------------------------- 1ph> help status ---------------------------------------- status: SYNTAX: status SUMMARY The "status" command prints a message about the current status of the Nameserver database. In order to use the "status" command, you must be in ph's interactive mode. Once inside ph, type "status" from the "ph>" prompt, and the status message will be displayed. The ph status message contains information of potential interest to users, such as changes in policy or procedures, announcements of database updates, notification of the temporary locking of the Nameserver database (preventing users from changing their entries), etc. Ordinarily the current status message is displayed immediately upon entering ph's interactive mode. SEE ALSO: manpage, interactive_mode ---------------------------------------- 1ph> help delete ---------------------------------------- delete: SYNTAX: delete [name-of-field=]value-of-field... SUMMARY This command is used to delete entire entries from the Nameserver database. Most users are not allowed to use this command. Note that it deletes ENTRIES; to delete a FIELD from an entry, use the "edit" command. You must be logged in and have special privileges to use "delete". The arguments to the "delete" command are the same as the selection part of a "query" command. "Delete" finds all the entries that match the argument(s) and deletes them. The "delete" command obeys the Nameserver "limit" option, which can be used to prevent deletion of more entries than intended. To change the limit option from its default of 2 to a smaller or larger number, type the command "set limit=#", where "#" equals the maximum number of entries that can be deleted. If your intention is to delete one specific entry, the safest method is to use the "alias" field specifier in the argument; e.g., "delete alias=alias_of_entry_to_be_deleted". --More--[Press space to continue, q to quit, h for help] EXAMPLES ph> delete john doe 200:2 entries deleted. ph> ph> delete alias=j-doe1 200:1 entry deleted. ph> SEE ALSO: edit, change, add, login, query, make ---------------------------------------- 1ph> help commands ---------------------------------------- commands: The following commands are available through ph's interactive mode. Some commands are only available to users who have logged in to the Nameserver, and two ("add" and "delete") are limited to users with special privileges: add - add new people or things to the database (privileged) bye - synonym for "quit" change - used in conjunction with the "make" command to change the field contents of multiple ph entries ^D - synonym for "quit" delete - remove people or things from the database (privileged) edit - change, add, or remove a field from your entry exit - synonym for "quit" fields - list the fields in the database help - get help on ph commands and concepts login - login to ph logout - logout of ph make - change, add, or remove a field in your entry me - print all the fields of the logged-in user --More--[Press space to continue, q to quit, h for help] passwd - change your ph password password - a synonym for "passwd" ph - (in command mode) lookup people or things in the database, set switches, etc.; (in interactive mode) a synonym for "query" query - look up people or things in the database quit - exit ph register - change the contents of your "email" field to the account from which you are currently logged into ph status - print a message describing the current status of the Nameserver database switch - set ph switches Ph's on-line help facility offers detailed information on how to use all of the commands listed above except those that are identified as synonyms. ---------------------------------------- 1ph> help nickname ---------------------------------------- nickname: SUMMARY The "nickname" field is provided so that nicknames can be used in Nameserver queries. While the "name" field of the Nameserver database contains every user's full name (as known by the University), often individuals are more commonly known by names other than their full names. "William" might be known to most people as "Bill", or "Steven" as "Steve". A user may enter any nicknames by which he or she is known into the "nickname" field of his or her entry. Other users can then use the full name or nickname to find that user. The Nameserver treats the "nickname" field just like the "name" field; nothing special is required to use a nickname in lookups. In other words, if a Nameserver query is issued without any field specifiers, ph will look at both the "name" and "nickname" fields for entries that match the query expression. EXAMPLE Suppose "William Willard" is known to everyone as "Willy," and he would like people to be able to easily find his entry in the Nameserver. --More--[Press space to continue, q to quit, h for help] William can use the ph "edit" or "make" command to put "willy" in his "nickname" field. Once he has done so, others can find him in the Nameserver database using either of the following query expressions: ph> ph william willard ph> ph willy willard SEE ALSO: edit, make, query ---------------------------------------- 1ph> help people ---------------------------------------- people: PH INFORMATION ON PEOPLE AT PENN STATE UNIVERSITY The Nameserver database holds information for approximately 77,000 Penn State faculty, staff, and students. This is the information that is most commonly requested by users of the database. Faculty and staff information is provided by the Office of Administrative Systems and consists primarily of name, title, and home/office addresses and phone numbers. Faculty/staff information in the ph database is weekly, with more rapid changes when information is updated through IBIS, the Penn State administrative computing system. All personal ph entries, can be manually updated at any time to reflect changes in personal or professional information or to add new fields to one's own Nameserver entry (see help on "edit", "make", and "fields"). The student information in the ph database comes from the Office of Administrative Systems, as well. Anyone who is taking a class at the University is listed in the database along with his or her phone number, address, curriculum, and, in the case of undergraduates, high school. Student data is currently updated at the start of each --More--[Press space to continue, q to quit, h for help] semester (three times per year). EXAMPLES: To look up information about an individual on campus, enter the command "ph" followed by the person's name. Ph looks for every record in the Nameserver database whose "name" and/or "nickname" fields contain the name(s) specified in the query. The following example shows a query on the name "Paul Pomes": ph> ph paul pomes ---------------------------------------- name: pomes paul b phone: (217) 333-6262 address: 1429 DCL, MC 256 : 1304 West Springfield Avenue : Urbana, Illinois 61801-2910 office_location: 1429 Digital Computer Lab department: computing and communications services office title: sr res programmer hours: Mon: 9:00 to 17:00 : Tue-Fri: 13:00 to 18:00 email to: p-pomes@uiuc.edu (paul@uxc.cso.uiuc.edu) --More--[Press space to continue, q to quit, h for help] ---------------------------------------- Matching in ph is not sensitive to upper and lower case letters and is done on a word-by-word basis. That is, both the query and the entry are broken up into words, and the individual words are compared. Thus, the expressions "ph paul pomes", "ph pomes paul", and "ph Paul Pomes" would all produce the same results. Although ph is insensitive to case, it otherwise requires words to match exactly, with no characters left over; "john" does not match "johnson", for example. When the exact spelling of a person's name isn't known, it can be useful to ask the Nameserver for entries that are "sort of like" something. This can be done by using special characters called "metacharacters". If you are familiar with the metacharacters used by the UNIX shells for filename expansion, you'll be glad to know the Nameserver uses the same metacharacters. Specifically, the following metacharacters mean the following things to the Nameserver: ? = any one character; "jo?n" would match "john", "joan", "join", etc. --More--[Press space to continue, q to quit, h for help] [] = any one of the characters between the brackets ([]); "jo[ah]n" would match "john" or "joan", but not "join". * = any characters or no characters; "jo*n" would match "john", "joan", and "join", and also "jon" or "johann". Since the Nameserver and the shell use the same metacharacters, when using ph from the operating system command line, it is important that metacharacters be quoted or escaped to "protect" them from the shell. Where you might use the following query from within ph: ph> query pa* pomes from the Unix shell you should say: % ph pa\* pomes or % ph "pa*" pomes --More--[Press space to continue, q to quit, h for help] Queries on people in the Nameserver database return a default set of fields and, thus, may not display all of the fields in a person's ph entry. To view an entry in its entirety, add the clause "return all" to the end of the query expression. For example: ph> ph paul pomes return all ---------------------------------------- alias: p-pomes name: pomes paul b email: paul@uxc.cso.uiuc.edu phone: (217) 333-6262 office_phone: (217) 333-6262 home_phone: (217) 359-0881 fax: (217) 244-7089 address: 1429 DCL, MC 256 : 1304 West Springfield Avenue : Urbana, Illinois 61801-2910 office_address: 1429 DCL, MC 256 : 1304 West Springfield Avenue : Urbana, Illinois 61801-2910 office_location: 1429 Digital Computer Lab home_address: 717 West Washington Street --More--[Press space to continue, q to quit, h for help] : Champaign, IL 61820-3334 proxy: !! nickname: pbp paulp avatar no_update: !! department: computing and communications services office title: sr res programmer hours: Mon: 9:00 to 17:00 : Tue-Fri: 13:00 to 18:00 family: Kali, Dylan Freeman, Alanna Ruth, Roku & Suza high_school: Downers Grove South, 1976 type: person phone kerberos: p-pomes slip: 128.174.22.63 ---------------------------------------- A return clause can also be used to limit the fields that are displayed. To view specific fields in an entry, follow the selection clause by the word "return" and a list of the fields you want to see (with the field names separated by spaces). For example: ph> ph paul pomes return name email hours ---------------------------------------- --More--[Press space to continue, q to quit, h for help] name: pomes paul b hours: Mon: 9:00 to 17:00 : Tue-Fri: 13:00 to 18:00 email: paul@uxc.cso.uiuc.edu ---------------------------------------- In order to ensure that the Nameserver is not used for generating mailing lists or other violations of privacy to persons listed in the database, only a limited number of entries are printed for any given query. If a query results in more matching entries than this limit, no entries will be printed; instead, the user will receive a "too many entries to print" message. If, in trying to locate one particular entry, you get this message, try reducing the number of matching entries by using additional field specifiers or a more complete version of the person's name in the selection clause. The following example shows what happens when a query results in too many matches: ph> query m* smith 502:Too many entries to print. --More--[Press space to continue, q to quit, h for help] By adding some extra information to the selection clause (in this case, some information about the person's department), ph is able to display information about all of the "M. Smiths" who work in the department specified: ph> query m* smith department=super* ---------------------------------------- name: smith michael d phone: (217) 244-7714 address: 304 Advanced Computation Building department: supercomputing applicatns title: res programmer email to: m-smith22@uiuc.edu (msmith@ncsa.uiuc.edu) ---------------------------------------- In short, metacharacters can be used when you don't know enough information about a person to produce matching entries, and field specifiers can be used to narrow down the number of possible matches by providing additional search criteria. Return clauses are useful for controlling the information that is actually printed for matching entries. --More--[Press space to continue, q to quit, h for help] SEE ALSO: edit, fields, make, query, type, introduction ---------------------------------------- 1ph> help sites ---------------------------------------- sites: THE PENNSYLVANIA STATE UNIVERSITY The Penn State ph server is installed on an IBM RS/6000 Model 360 running AIX 3.2.4. Its fully-qualified domain name is "horned-screamer.cac.psu.edu" (also aliased as "ph.cac.psu.edu and ph.psu.edu"). The Nameserver database contains information on some 77,000 students, faculty, and staff. OTHER SITES Many other universities have adopted the ph program to maintain their own student/staff directory and e-mail routing information. Several ph clients are capable of querying these remote ph Nameservers for name, phone number, address, and e-mail address information. To see a current list of ph servers and associated sites, do a Nameserver lookup on "ns-servers". For example: ph ns-servers The list of ph sites and servers at the time of this writing was: Site Ph Server --More--[Press space to continue, q to quit, h for help] ---------- --------- Pennsylvania State University ph.cac.psu.edu Albert Einstein College of Medicine ns.aecom.yu.edu Aston University, United Kingdom gopher.aston.ac.uk Australian Defence Force Academy ns.adfa.oz.au Bates College mother.bates.edu Board of Governors Universities, IL USA ns.bgu.edu Boston University ns.bu.edu Brigham Young University kolob.byu.edu Brown University ns.brown.edu Bucknell University ns.bucknell.edu CHUUG/EUnet, Switzerland chsun.eunet.ch Calvin College calvin.edu Camosun College, Victoria B.C., Canada spang.camosun.bc.ca Chicago State University, IL USA ns.csu.bgu.edu Chinese University of Hong Kong ns.cuhk.hk Clemson University gopher.clemson.edu Cleveland State University ns.csuohio.edu Columbia University gutentag.cc.columbia.edu Cornell College, Iowa ns.cornell-iowa.edu Cornell Directory of Legal Academia fatty.law.cornell.edu Cornell University qi.cornell.edu --More--[Press space to continue, q to quit, h for help] Curtin Univ. of Technology, Perth, Australiainfo.curtin.edu.au Dana-Farber Cancer Institute ns.dfci.harvard.edu Eastern Illinois University, IL USA ns.eiu.bgu.edu Ecole Centrale Paris, France ph.ecp.fr Educational Computing Network, IL USA ns.ecn.bgu.edu Eidg. Technische Hochschule, Zurich ural.ethz.ch Fairfield University funrsc.fairfield.edu Florida State University zeppo.cc.fsu.edu Free University of Amsterdam zadar.cca.vu.nl Georgia Southern University ns.gasou.edu Georgia Tech University lu-serve.gatech.edu Glassboro State University gboro.glassboro.edu Governors State University, IL USA ns.gsu.bgu.edu Helsinki University of Technology ns.cs.hut.fi Indiana University-Purdue Univ. at Indianapolis hyrax.iupui.edu Intl. Ctr. for Genetic Eng. & Biotech., Italy genes.icgeb.trieste.it Keio University, Sci. & Tech. Campus, Japan bash.cc.keio.ac.jp Kennesaw State College kscsuna1.kennesaw.edu Lakehead University flash.lakeheadu.ca Lawrence Livermore National Laboratory ns.llnl.gov Lehigh University ns.lehigh.edu Los Alamos National Laboratory lanl.gov --More--[Press space to continue, q to quit, h for help] Massachusetts Institute of Technology mitdir.mit.edu Massey University, New Zealand ns.massey.ac.nz McGill Univ. Research Centre for Intelligent Machines lightning.mcrcim.mcgill.edu Memphis State University ns.memst.edu Michigan State University Faculty/Staff cso.msu.edu Michigan State University Students pilot0.cl.msu.edu Michigan Technological University mtu-ns.mtu.edu NASA Lewis Research Center sandman.lerc.nasa.gov National Institute of Standards and Technology coil.nist.gov National Institutes of Health ph.nih.gov National Science Foundation expres.cise.nsf.gov New York University Medical Center popmail.med.nyu.edu North Dakota State University plains.nodak.edu Northeastern Illinois University, IL USA ns.neiu.bgu.edu Northwestern University ns.nwu.edu Occidental College chesire.oxy.edu Ohio Northern University ns.onu.edu OpenConnect Systems ph.oc.com Oregon State University ph.orst.edu Princeton University princeton.edu Rice University cwis.rice.edu --More--[Press space to continue, q to quit, h for help] Rose-Hulman Institute of Technology ns.rose-hulman.edu Roskilde Universitetscenter, Denmark ns.ruc.dk St. Olaf College cso.stolaf.edu State University of New York at Buffalo lictor.acsu.buffalo.edu Swarthmore College ph.cc.swarthmore.edu Syracuse University dataserver.syr.edu Technical Research Centre, Finland ns.vtt.fi Technical University of Eindhoven, Netherlands mailhost.tue.nl Temple University cronkite.ocis.temple.edu Texas A&M University ns.tamu.edu Trent University, Peterborough, Ont., Canadablaze.trentu.ca University of Alberta, Canada chinchaga.ucs.ualberta.ca University of Arizona ns.arizona.edu University of British Columbia, Canada phserver.ubc.ca University of California at Irvine uci.edu University of California at San Diego ucsd.edu University of California at Santa Barbara ucsbuxa.ucsb.edu University of California Systemwide Administration directory.ucop.edu University of Chicago prism.uchicago.edu University of Cincinnati ucunix.san.uc.edu University of Colorado, Boulder directory.colorado.edu University of Florida ns.ufl.edu --More--[Press space to continue, q to quit, h for help] University of Hawaii ns.hawaii.edu University of Illinois at Urbana-Champaign ns.uiuc.edu University of Iowa ns.uiowa.edu University of Kansas School of Engineering ns.tisl.ukans.edu University of Laval, Quebec, Canada ns.gel.ulaval.ca University of Manchester and UMIST, UK info.mcc.ac.uk University of Maryland at Baltimore umabnet.ab.umd.edu University of Minnesota ns.umn.edu University of Munich, Germany ns.informatik.uni-muenchen.de University of Nebraska at Lincoln unlmail.unl.edu University of Nebraska at Omaha ns.unomaha.edu University of North Texas gopher.unt.edu University of Notre Dame ns.nd.edu University of Oregon whois.uoregon.edu University of Oslo, Norway ph.uio.no University of Pennsylvania ph-server.upenn.edu University of Pretoria, South Africa qi.up.ac.za University of Rhode Island phonebk.uri.edu University of South Florida cfrvm.cfr.usf.edu University of Tasmania, Australia info.utas.edu.au University of Texas at Austin mojo.ots.utexas.edu University of Texas CHPC hermes.chpc.utexas.edu --More--[Press space to continue, q to quit, h for help] University of Texas Medical Branch bluefin.utmb.edu University of Trento, Italy mambo.cs.unitn.it University of Utah ph.cc.utah.edu University of Utrecht, Netherlands nic.cc.ruu.nl University of Vermont ns.uvm.edu University of Victoria, Canada netinfo.uvic.ca University of Waterloo, Ontario, Canada uwdir.uwaterloo.ca University of Wisconsin at Madison wisc.edu University of Wisconsin at Milwaukee risc1.os.umn.edu Uppsala University, Sweden ns.uu.se US Army Corps of Engineers, C.E.R. Lab ns.cecer.army.mil Utah State University Extension Service extsparc.agsci.usu.edu Virginia Polytechnic Institute and State Univ. gopher.vt.edu Washington State Univ., Pullman, Faculty/Staff reepicheep.csc.wsu.edu Washington State Univ., Pullman, Student serval.net.wsu.edu Washington University, St. Louis ns.wustl.edu Western Illinois University, IL USA ns.wiu.bgu.edu Wheaton College david.wheaton.edu Yale University directory.yale.edu York University, Canada apex.ccs.yorku.ca --More--[Press space to continue, q to quit, h for help] To query another server using the Unix ph client (and clients similar to it), get to the operating system prompt and use the syntax: ph -s server.name query For example, to get ph information for a "John Smith" at Princeton University, one would type the command: ph -s princeton.edu john smith The query will be directed to the ph server specified after the "-s" option (Princeton University, in the above example), instead of the local ph server, and all matching entries will be displayed. Note: Not all ph clients are able to query remote servers, and the method of doing so varies from client to client. SEE ALSO: areacodes, campus_units, people, restaurants, timetable, weather, query, clients, type ---------------------------------------- 1ph> help type ---------------------------------------- type: SUMMARY The "type" field can be used to specify any of several different types of data that are present in the Nameserver database. These types may be specified either by adding "type=name-of-desired-type" to any query or by using the "-t name-of-desired-type" switch. Actually, a given entry may have more than one type, if it fits in more than one category. For example, people are listed under types "person" (since that's what they are) and either "student" or "staff" (or both), depending on whether that person is a student or faculty/staff. The following types are used in the database: - person: Information about a human being. - student: A Penn State Student - staff: A full or part-time staff or faculty member at Penn State EXAMPLES --More--[Press space to continue, q to quit, h for help] When a query is executed without any field specifiers, ph searches the entire database for all entries whose "name" and/or "nickname" fields match the query expression. In most cases a simple query expression will deliver the desired results. However, occasionally a simple query can produce too many matches, several or many of which may have nothing to do with the data type for which one is searching. In such cases, it can be helpful to include the "type" field specifier in your query expression. The general syntax for using the "type" field specifier is: ph type=name-of-desired-type [name-of-field=]value-of-field... TO EXTRACT INFORMATION ON A STUDENT: syntax: ph type=student name1 [name2 name3 ...] example: ph type=student stanley ikenberry SEE ALSO: query, switch, manpage, areacodes, campus_units, people, restaurants, timetable, weather ---------------------------------------- 1ph> help protocol ---------------------------------------- protocol: The CCSO Nameserver Server-Client Protocol by Steven Dorner s-dorner@uiuc.edu Computer and Communications Services Office University of Illinois at Urbana April 2, 1990 updated by Paul Pomes paul-pomes@uiuc.edu Computer and Communications Services Office University of Illinois at Urbana August 2, 1992 Introduction This document describes the protocol used by the CCSO Nameserver. It provides all the information necessary to write a program that interfaces with the Nameserver, or for a human to speak directly --More--[Press space to continue, q to quit, h for help] to the Nameserver. While CCSO provides a client program for our Nameserver, we also expect the Nameserver to be used from programs other than this client. First, our client does not run on every system. Secondly, the Nameserver is potentially of use for more than just human lookup of information; other programs (such as mail delivery agents) may wish to use the Nameserver. This was kept in mind when designing the protocol used by the Nameserver. It is fairly easy to generate and parse (if not totally regular), and should prove easy to incorporate in any program. General Format The general format of the protocol is request/response, like that of FTP;[1] the client makes requests, and the server responds to them. The conversation is in "netascii", with a carriage ____________________ [1] See RFC-959, File Transfer Protocol (FTP), J. Postel and --More--[Press space to continue, q to quit, h for help] J. Reynolds. return-linefeed pair[2] separating the lines, as in telnet.[3] This allows a user to use the Nameserver with any telnet client, if they wish. A request begins with a keyword, and may have zero or more key- words or values, separated by spaces, tabs, or newlines, and fol- lowed by a carriage return-linefeed pair. Values containing spaces, tabs or newlines should be enclosed in double quotes (`"'). Any printable characters may be used in a quoted string (except `"'). In addition, the sequences "\n", "\t", "\"", and "\\" may be used to mean newline, tab, double quote, and backslash, respectively. Like FTP, numerical values are used to indicate the Nameserver's response to requests. Unlike FTP, data is passed on the same connection as commands. The format for responses is as follows: result code:[entry index:][field name:]text --More--[Press space to continue, q to quit, h for help] Multiline responses should preface each line of the response with the appropriate result code, negated (prefaced with "-"), on all lines of the response but the last. If a particular command can apply to more than one entry, responses involving individual entries will have an entry index directly following the result code. This index will begin with 1, and be incremented each time a new entry is being referred to. Commands that can apply to more than one field will have the name of the field to which the response applies directly following the entry index. The text of the response will be either an error message intended for human consumption, or data from the Nameserver. Whitespace (spaces or tabs) may appear anywhere in the response. Since more than one specific piece of information may be manipu- lated by a particular command, it is possible for parts of a com- mand to succeed, while other parts of the same command fail. This situation is handled as a single multi-line response, with the result code changing as appropriate. As for FTP, numerical responses are in the range 100-599 (or from -599 to -100 for multiline responses), where the leading digit has the following significance: --More--[Press space to continue, q to quit, h for help] 1: In progress 2: Success 3: More information needed 4: Temporary failure; it may be worthwile to try again. 5: Permanent failure ____________________ [2] The carriage return is optional. [3] See RFC-854, Telnet Protocol Specification, J. Postel. Specific numbers have meanings to some commands; all commands obey the general scheme. Many commands generate more than one line of response; every client should be prepared to deal with such continued responses. It is worthwhile to note that a command is finished when and only when the result code on a response line (treated as a signed integer) is greater than or equal to 200. Keywords must be given in lower case; case in the values of --More--[Press space to continue, q to quit, h for help] fields is preserved, although queries are not case-sensitive. The Commands query [field=]value. . . [return field1 [field2]] ph [field=]value. . . [return field1 [field2]] This is the basic client request. It may be used in any of the Nameserver modes.[4] Entries whose fields match the given values will be found, and the requested fields printed. If no field name is specified in the query part of the command, the "name" field is assumed. If no fields are specified with a return clause, a default set of fields will be returned. Fields from each entry will be prefaced with an entry index, a colon, the field name, and another colon. If the special field name "all" is given in the return clause, all fields from the entry will be printed (subject to normal constraints with regard to Nameserver mode and field properties). Note that to view some sensitive fields, it is necessary to use Nameserver login mode. Note also that fields whose descriptions include the property Encrypt cannot be printed by the server. --More--[Press space to continue, q to quit, h for help] Values containing newlines will be broken into lines and printed one line per response. The second number on each response is the entry index; it is incremented each time the response refers to a new entry. Some implementations of qi return a 102 response before the actual entries, giving the number of entries found; be prepared to see or not see this response. "Query" and "ph" are synonyms. ____________________ [4] See The CCSO Nameserver - A Description, S. Dorner and P. Pomes, for a description of Nameserver modes. Examples query name=dorner phone=244-1765 -200:1: alias: s-dorner -200:1: name: dorner steven c. --More--[Press space to continue, q to quit, h for help] -200:1: email: dorner@garcon.cso.uiuc.edu -200:1: phone: (w) 244-1765 -200:1: address: 181 DCL, MC 256 -200:1: : 1201 W. Washington, C, 61821 -200:1: department: computing services office -200:1: title: res programmer -200:1: nickname: Steve -200:1: hours: 8-4 weekdays 200:Ok. query alias=s-dorner -200:1: alias: s-dorner -200:1: name: dorner steven c. -200:1: email: dorner@garcon.cso.uiuc.edu -200:1: phone: (w) 244-1765 -200:1: address: 181 DCL, MC 256 -200:1: : 1201 W. Washington, C, 61821 -200:1: department: computing services office -200:1: title: res programmer -200:1: nickname: Steve -200:1: hours: 8-4 weekdays 200:Ok. query dorner return alias hours --More--[Press space to continue, q to quit, h for help] -200:1: alias: m-dorner -508:1: hours: Not present in entry. -200:2: alias: j-dorner -508:2: hours: Not present in entry. -200:3: alias: s-dorner -200:3: hours: 8-4 weekdays -200:4: alias: j-dorner1 -508:4: hours: Not present in entry. 200:Ok. query alias=s-dorner return id -503:1: id: You may not view this field. 200:Ok. query name=dorner address=moon 501:No matches to your query. change [field=]value. . . make field=value Change looks much like query. The entries to be changed are specified as in query. They keyword make separates the search criteria from the fields to be changed. The change command works in hero mode, or in login mode if applied to fields whose description contain the Change property[5] in the entry of the --More--[Press space to continue, q to quit, h for help] logged-in user. If it is desired remove a field, Adjacent double quotes ("") should be given as the "new value" of the field. Fields whose descriptions include the property Encrypted must be encrypted before transmission to the Nameserver, unless the qi program is being run directly from a terminal. This encryption should be done with the password of the logged in user. Examples change alias=s-dorner make hours="when the sun shines" 506:You must be logged in to use this command. change steven dorner make hours="" 200:1 entry changed. change steven dorner make name="Dr. Strangelove" -505:name:you may not change this field. 500:1 entry found, none changed. change ikenberry make email=zzz@xxx 518:Too many entries (3) selected; limit is 2. change stanley ikenberry make email=zzz@xxx -510:s-ikenberry:You may not change this entry. 500:1 entry found, none changed. --More--[Press space to continue, q to quit, h for help] login alias answer code clear password This is used to enter login or hero mode. The Nameserver will respond with a random challenge, which may be returned in encrypted form via the answer command. The encryption key will be a password known to both the Nameserver and the user. Alter- nately, the client may respond with the clear command, and give the proper password in clear text. This is not the recommended method, and is only provided for the lazy protocol implementor. Examples login s_dorner 301:dkeiigjasdvvnmnmeigh answer ewituegndvbngkgdfkgl 200:s-dorner:Hi how are you? login s-dorner 301:?;_?DB,F9X;8O=H8Y?#(^=' help clients ---------------------------------------- clients: Ph client programs permit users of desktop computers and workstations connected to the campus network (Penn State Data Backbone) to use the PSU Nameserver. They provide convenient access to server data without requiring knowledge of unfamiliar operating systems or text editors. At least one ph client program is available for each of the desktop platforms commonly found at Penn State. Clients are supported for Macintosh, Unix, X Windows, and VM. Client programs in use by the CAC are available for anonymous ftp from ftp.cac.psu.edu in the /pub/access directory. Up-to-date information about ph clients can often be found in the Netnews (USENET) newsgroup "info.ph" or by querying the "archie" anonymous ftp database. ---------------------------------------- 1ph> quit 200:Bye! CAC serial protocol server Thu Feb 17 8:40:41 EST 1994 port: /dev/pts/0 user: hdk Select one of the following: Command Function ------- --------------------------------------------- ppp Start Full PPP connection pctcp Start PC/TCP 2.1 or earlier PPP connection slip Start SLIP/CSLIP connection telnet Telnet to a host ph Online Telephone Directory System password Set Password exit Exit Enter your choice: exit