|
|
1.1 root 1: % run this through LaTeX with the appropriate wrapper
2:
3: \chapter {Installation and Configuration}\label{installation}
4: This chapter describes how to install, configure, and test the pilot project
5: software.
6: Upon completion,
7: your Level-1 DSA will have successfully joined the pilot project DMD!
8:
9: \section {Software}
10: The software supporting the pilot project is the QUIPU implementation
11: of the OSI Directory,
12: which is a part of the ISO Development Environment (ISODE).
13:
14: QUIPU was originally developed as a part of the INCA project
15: (under the auspices of the ESPRIT initiative of the EEC).
16: The Inca of Peru did not have writing.
17: Instead,
18: they stored information on strings,
19: carefully knotted in a specific manner with colored thread,
20: and attached to a larger rope.
21: Such a device was known as a {\em Quipu\/}
22: (pronounced {\em kwip-ooo}).
23: The encoding was obscure,
24: and could only be read by selected trained people:
25: the {\em Quipucamayocs}.
26: The Quipu was a key component of Inca society,
27: as it contained information about property and locations throughout
28: the extensive Inca empire.
29:
30: The pilot sponsors and the administrators of the participating organizations
31: form the {\em camayocs\/} for the pilot project.
32: There is a special mailing list
33: \begin{quote}\small\begin{verbatim}
34: [email protected]
35: \end{verbatim}\end{quote}
36: which each \camayoc/ belongs to.
37:
38: \[\fbox{\begin{tabular}{lp{0.8\textwidth}}
39: \bf NOTE:& This is the official mailing list for administrators of the
40: pilot project.
41: If you have a problem, send mail!
42: \end{tabular}}\]
43:
44: \subsection {Selecting a Machine}
45: The machine you run the software on should support the Berkeley variant of
46: \unix/.
47: Although the software is known to run on other variants of \unix/, such as
48: those from AT\&T and HP,
49: these configurations are not supported by the pilot sponsors.
50:
51: You should plan on the DSA consuming 2Kbytes of memory {\em per\/} entry kept
52: in your DMD
53: This is called the QUIPU {\em 2K rule}.
54: Make sure that your machine has available memory for the DSA.
55: A memory-constrained (or worse yet, paging DSA) performs extremely poorly.
56: Find an unloaded system to run your DSA.
57: This investment might seem large,
58: just think of it as a sunk cost.
59:
60: \subsection {Files}
61: Regardless of how you install QUIPU and the ISODE,
62: the number of files needed for the pilot project are quite small.
63:
64: In ISODE's \verb"BINDIR" directory,
65: typically \file{/usr/local/bin/},
66: there are a few programs of interest:
67: \begin{describe}
68: \item[dish:] The DIrectory SHell\\
69: This is a interface to the OSI Directory which can be used to
70: access the full functionality of the Directory service.
71: This program is not directly run by the ``users'' of the pilot
72: project, rather various front-ends access \pgm{dish}.
73: In addition,
74: the administrators employ this program directly to perform
75: routine maintenance and diagnostics.
76:
77: \item[bind:] Shell interface to \pgm{dish}\\
78: There are actually several links to a program called
79: \pgm{bind}.
80: These act to export the \pgm{dish} interface to the \unix/
81: shell.
82: As such,
83: you can issue commands to \pgm{dish} from the shell,
84: rather than running \pgm{dish} directly.
85: \begin{quote}
86: \begin{tabular}{l}
87: add\\
88: compare\\
89: delete\\
90: dsacontrol\\
91: list\\
92: modify\\
93: modifyrdn\\
94: moveto\\
95: search\\
96: showentry\\
97: showname\\
98: squid
99: \end{tabular}
100: \end{quote}
101:
102: \item[fred:] A white pages user interface\\
103: This is the interface for the users of the pilot project.
104:
105: \item[editentry:] Edit a Directory entry\\
106: This is a simple shell script that \pgm{dish} invokes when you
107: ask \pgm{dish} to edit an entry in the Directory.
108:
109: \item[unbind:] Unbind from \pgm{dish}\\
110: This command is used to terminate \pgm{dish}.
111: \end{describe}
112: In ISODE's \verb"SBINDIR" directory,
113: typically \file{/usr/etc/},
114: the DSA resides:
115: \begin{describe}
116: \item[ros.quipu:] The QUIPU DSA\\
117: This program will be started once, for each DSA you
118: are running, from rc.local.
119: A script is provided to invoke this program,
120: in case you need to restart it.
121:
122: \item[dsaconfig:] a configurator for Level-1 DSAs.
123: \end{describe}
124: In ISODE's \verb"ETCDIR" directory,
125: also typically \file{/usr/etc/},
126: there are a few programs and files of interest:
127: \begin{describe}\sloppy
128: \item[oidtable.at, oidtable.gen, oidtable.oc:]
129: These define the attribute types,
130: generic object identifiers,
131: and object classes known to the system.
132: (An object identifier is a method used to unambiguously
133: encode, among other things,
134: the names of attributes and object classes.)
135: These files you never deal with unless they are
136: accidently corrupted.
137:
138: \item[dsaptailor:] This is the run-time tailor file for the DUAs.
139: You will configure this file initially and then
140: probably leave it alone.
141:
142:
143: \item[isoaliases, isobjects, isoentities, isomacros, isoservices:]
144: These are \\ %%%
145: various databases used by the ISODE.
146: These files you never deal with unless they are
147: accidently corrupted.
148:
149: \item[isologs:] This script runs nightly under \man cron(8) to
150: trim the ISODE log files, kept in ISODE's \verb"LOGDIR"
151: directory,
152: typically \file{/usr/tmp/}.
153: This file you never deal with unless it is
154: accidently corrupted.
155:
156: \item[isotailor:] This is the run-time tailor file for the ISODE.
157: You will configure this file initially and then
158: probably leave it alone.
159: \end{describe}
160: There are a few other things kept in a directory called \file{quipu/}
161: which resides in ISODE's \verb"ETCDIR" directory.
162: The \file{scripts/} directory contains various scripts which may be used for
163: maintenance purposes.
164: The \file{templates/} directory contains templates of entries.
165:
166: \subsection {Source Release}
167: You should retrieve a copy of the pilot software.
168: It is available via anonymous FTP from from host
169: \verb"nisc.nyser.net" (\verb"[192.33.4.10]"):
170: \begin{quote}\small\begin{verbatim}
171: % cd /usr/src/local/
172: % ftp nisc.nyser.net
173: Connected to nisc.nyser.net.
174: 220 nisc.nyser.net FTP server ready
175: Name (nisc.nyser.net:user): anonymous
176: Password (nisc.nyser.net:anonymous): guest
177: 331 Guest login ok, send ident as password.
178: 230 Guest login ok, access restrictions apply.
179: ftp> binary
180: 200 Type set to I.
181: ftp> cd pilot/src
182: ftp> get isode-pilot.tar.Z
183: ftp> quit
184: % uncompress < isode-pilot.tar.Z | tar xfp -
185: % rm isode-pilot.tar.Z
186: \end{verbatim}\end{quote}
187: Note that this is a interim release of the ISODE.
188: All of the changes are upwards compatible,
189: but you must run this version rather than the standard ISODE~5.0 release.
190:
191: Now change to the top-level directory.
192: \begin{quote}\small\begin{verbatim}
193: % cd isode-5.9/
194: \end{verbatim}\end{quote}
195: The file \file{READ-ME} in this directory contains instructions on how to
196: configure, generate, and install the ISODE.
197:
198: \[\fbox{\begin{tabular}{lp{0.8\textwidth}}
199: \bf NOTE:& The source installation instructions are intended for
200: sites which are not already running QUIPU.
201: If you are,
202: care should be taken to see that your existing Directory
203: environment is not compromised.
204: For example,
205: the DSAs run under the pilot do not provide the
206: ``higher performance'' name service,
207: nor is it intended that they support application entities
208: other than DSAs.
209: \end{tabular}}\]
210:
211: \subsubsection {Configuration of the ISODE}
212: As described in the \file{READ-ME} file,
213: configuration is straight-forward.
214: Here's an example of how it's done on a Sun workstation running SunOS~3.5:
215: \begin{quote}\small\begin{verbatim}
216: % cp config/sunos3.h h/config.h
217: % cp config/sunos3.make config/CONFIG.make
218: % cp config/*.local support/
219: \end{verbatim}\end{quote}
220: For other systems,
221: consult the \file{READ-ME} file to see which templates to use.
222: For all systems,
223: take a look at
224: \[\begin{tabular}{l}
225: \file{h/config.h}\\
226: \file{config/CONFIG.make}\\
227: \end{tabular}\]
228: to see if things like \verb"BINDIR",
229: \verb"SBINDIR", \verb"ETCDIR", and \verb"LOGDIR" are set to your liking.
230:
231: \subsubsection {Generation of the ISODE}
232: Once properly configured,
233: generate both the ISODE and QUIPU using this command from the top-level
234: directory:
235: \begin{quote}\small\begin{verbatim}
236: % ./make once-only all all-quipu
237: \end{verbatim}\end{quote}
238: This takes a while,
239: so its best to redirect the output to a file and then go do something else for
240: a few hours:
241: \begin{quote}\small\begin{verbatim}
242: % ./make once-only all all-quipu >& make.out &
243: \end{verbatim}\end{quote}
244:
245: If the make command finishes with a non-zero exit status,
246: or if you see a line with:
247: \begin{quote}\small\begin{verbatim}
248: *** Error code 1
249: \end{verbatim}\end{quote}
250: or perhaps
251: \begin{quote}\small\begin{verbatim}
252: Exit
253: \end{verbatim}\end{quote}
254: Then something has gone wrong.
255: Try and determine what the problem is.
256: If you are unable to find the problem,
257: drop a note to the Internet Mailbox
258: \begin{quote}\begin{verbatim}
259: [email protected]
260: \end{verbatim}\end{quote}
261: Your message should contain your two configuration files,
262: the output of the make command,
263: and a description of the hardware/software platform you are using.
264:
265: Keep in mind that the ISODE runs ``flawlessly'' worldwide on many thousands of
266: machines running numerous variants of \unix/.
267: Failure to complete generation usually indicates a broken configuration file,
268: or a non-standard system
269: (i.e., one with a broken compiler or a different \pgm{make} command).
270:
271: Now generate the additional commands needed for the pilot project:
272: \begin{quote}\small\begin{verbatim}
273: % (cd others/quipu; ./make pilot)
274: \end{verbatim}\end{quote}
275:
276: \subsubsection {Installation of the ISODE}\label{isode:install}
277: Once you are satisfied that the generation was successful,
278: become the super-user and install both the ISODE and QUIPU.
279: First make sure that the directories \verb"BINDIR",
280: \verb"SBINDIR",
281: \verb"ETCDIR",
282: \verb"LOGDIR",
283: as defined in \file{config/CONFIG.make} exist.
284: If not, create them using \pgm{mkdir}.
285: The protection on the \verb"LOGDIR" directory should be 0777.
286:
287: Next, install the programs, databases, and libraries:
288: \begin{quote}\small\begin{verbatim}
289: # ./make inst-all inst-quipu
290: # (cd others/quipu; ./make inst-pilot)
291: \end{verbatim}\end{quote}
292:
293: Do {\bf not\/} perform any other installation instructions for QUIPU as
294: given in the \file{READ-ME} file.
295: The remainder of this chapter supercede those instructions.
296:
297: If you are not planning on doing program development (probably a safe bet),
298: you can remove the various libraries and program development tools by using
299: \begin{quote}\small\begin{verbatim}
300: # ./make zap
301: \end{verbatim}\end{quote}
302: from the \file{isode-5.9/} directory as the super-user.
303:
304: \section {Starting the ISODE}
305: In order to aid debugging,
306: you should keep the ISODE system around in an operational state.
307: So,
308: you need to do a few more things:
309: \begin{enumerate}
310: \item Verify that the file \file{/etc/rc.local} has an entry like this:
311: \begin{quote}\small\begin{verbatim}
312: if [ -f $(SBINDIR)tsapd ]; then
313: $(SBINDIR)tsapd -t & (echo -n ' tsap') > /dev/console
314: fi
315: \end{verbatim}\end{quote}
316: in the section where the network servers are started
317: (e.g., where \man sendmail(8) is started).
318:
319: \item Verify that the file \file{/etc/services} has an entry like this:
320: \begin{quote}\small\begin{verbatim}
321: tsap 102/tcp
322: \end{verbatim}\end{quote}
323:
324: \item Verify that the file \file{/usr/lib/crontab} has an entry similar
325: to this:
326: \begin{quote}\small\begin{verbatim}
327: 0 4 * * * su daemon < $(SBINDIR)isologs
328: \end{verbatim}\end{quote}
329: or this
330: \begin{quote}\small\begin{verbatim}
331: 0 4 * * * su daemon -c "/bin/sh $(SBINDIR)isologs"
332: \end{verbatim}\end{quote}
333: This runs a script to clean-up the logfiles at 4:00am each morning.
334:
335: \item Start the \man tsapd(8c) daemon by hand:
336: \begin{quote}\small\begin{verbatim}
337: # $(SBINDIR)tsapd -t >& /dev/null
338: \end{verbatim}\end{quote}
339: The daemon will automatically detach.
340: Instead,
341: if its diagnostic output is associated with a terminal,
342: then the daemon will not detach and will log informative messages to
343: the terminal.
344:
345: \item Now verify that the ISODE is installed and tailored correctly.
346: See Sections~\ref{isode:tailoring} and~\ref{isode:testing}.
347: \end{enumerate}
348:
349: \section {ISODE Tailoring}\label{isode:tailoring}
350: Before any DSAs or DUAs are installed,
351: the file \file{isotailor} in the ISODE \verb"ETCDIR" directory should be
352: properly configured.
353:
354: Typically source installations have ISODE's \verb"ETCDIR" and \verb"LOGDIR"
355: directories hard-wired in during configuration of the ISODE.
356: As such,
357: the source installation procedures do not install a \file{isotailor} file.
358: If a future need arises,
359: the \file{isotailor} file may be modified accordingly.
360: Initially it is recommended that you use a tailoring file which contains
361: no commands;
362: copy it from the \file{quipu/scripts/} area:
363: \begin{quote}\small\begin{verbatim}
364: # cp $(ETCDIR)quipu/scripts/isotailor.empty $(ETCDIR)isotailor
365: \end{verbatim}\end{quote}
366:
367: \section {Testing of the ISODE}\label{isode:testing}
368: The easiest way to test the ISODE system is to run
369: the \file{isode-test} script in the directory \file{quipu/scripts/}
370: under ISODE's \verb"ETCDIR" directory.
371: \begin{quote}\small\begin{verbatim}
372: % isode-test
373: \end{verbatim}\end{quote}
374: Prior to termination,
375: the script will indicate the number of errors encountered.
376: If an error occurs,
377: try and determine what the problem is.
378: If you are unable to find the problem,
379: drop a note to the Internet Mailbox \verb"[email protected]".
380: Your message should contain your two configuration files,
381: the output of \file{isode-test},
382: and a description of the hardware/software platform you are using.
383:
384: \section {Configuration of DUAs}\label{dua:configure}
385: The first step will be to have the \man dish(1c) program
386: try to connect to one of the Level-0 DSAs in the pilot project:
387: \begin{quote}\small\begin{verbatim}
388: % dish -c "Alpaca"
389: Welcome to Dish (DIrectory SHell)
390: Dish ->
391: \end{verbatim}\end{quote}
392: indicates that you are able to connect.
393: You might now try some simple commands.
394: Figure~\ref{dish-simple} shows a small interaction.
395: Chapter~4 of \volfive/ describes \pgm{dish} in considerable detail.
396: \tagfigure[tp]{CNF-1}{A Small DISH Interaction}{dish-simple}
397:
398: \subsection {DUA Failure}\label{dua:failure}
399: There are a few reasons why the DUA might fail.
400: First verify that the ISODE is operating correctly
401: (see Section~\ref{isode:testing} on page~\pageref{isode:testing}.)
402: If the ISODE is working,
403: then here is the most common error encountered:
404:
405: If instead of the \verb"Dish ->" prompt,
406: you see:
407: \begin{quote}\small\begin{verbatim}
408: *** Service error : Unable to contact DSA ***
409: \end{verbatim}\end{quote}
410: then it is likely that there is some problem with the network,
411: or you have mistyped the name of the DSA.
412: If you see any other diagnostic,
413: contact a \camayoc/ for help.
414:
415: Otherwise,
416: first check the spelling of the name you are providing.
417: If this is correct,
418: then look at the file \file{dsaptailor} in the ISODE \verb"ETCDIR" directory
419: for the line which starts with:
420: \begin{quote}\small\begin{verbatim}
421: dsa_address "Alpaca"
422: \end{verbatim}\end{quote}
423: You will find an Internet address and TCP port number on the rest of
424: the line.
425: \begin{enumerate}
426: \item Use the \man ping(8c) utility to see if you can reach the IP address.
427:
428: \item If not,
429: then try contacting one of the other DSAs,
430: e.g., \verb"Fruit Bat",
431: listed in the \file{dsaptailor} file.
432:
433: Repeat this process until \pgm{dish} successfully contacts a DSA.
434:
435: \item If \pgm{ping} can reach the IP address,
436: then use \pgm{telnet} to try to connect to the TCP port.
437:
438: \item If you can connect,
439: immediately close the connection.
440: Something is drastically wrong since \pgm{telnet} can reach the TCP
441: address of the DSA,
442: but \pgm{dish} can't.
443: Contact a \camayoc/ for assistance.
444:
445: \item If \pgm{telnet} reports an error,
446: usually
447: \begin{quote}\small\begin{verbatim}
448: Connection refused
449: \end{verbatim}\end{quote}
450: then this indicates that the DSA isn't listening at that TCP
451: address.
452: Either it is temporarily unavailable or it has moved to a new
453: address.
454: In either event,
455: notify a \camayoc/ of the situation.
456: Then go back to Step~2 above.
457: \end{enumerate}
458: If you exhaust all DSAs listed in the \file{dsaptailor} file,
459: contact a \camayoc/ and give up.
460:
461: \section {An Important Note}
462: The configuration instructions contained herein are for sites in the United
463: States.
464: Depending on the policies of the administrators for other national DMDs,
465: these instructions may, or may not, be useful.
466: If your DSA is joining a DMD other than that of c=US,
467: then you should contact your national administrator to see what turn-key
468: procedures exist for joining your national DMD.
469:
470: Note that the \man dsaconfig(8) program can be used to configure Level-1 DSAs
471: residing outside of the c=US DMD.
472: At present,
473: the current list of supported countries is:
474: \[\begin{tabular}{l}
475: AU\\ DE\\ ES\\ FI\\ GB\\ IS\\ NO\\ SE
476: \end{tabular}\]
477: In most cases,
478: for the countries listed above,
479: you can simply follow the directions below substituting your country code for
480: any occurrence of \verb"c=US".
481:
482: In all cases,
483: for DSAs residing outside of the c=US DMD,
484: you should always contact your national administrator before proceeding.
485:
486: \section {Configuring your Level-1 DSA}
487: The steps towards configuring a Level-1 DSA are straight-forward.
488: For the text that follows,
489: any example that includes \verb"O_i" means that the name of your organization
490: should be substituted.
491: Similarly,
492: any occurrance of \verb"U_j" refers to the name of your organizational unit.
493:
494: \subsection {Choosing a DSA Name}
495: First, you must choose a name for your DSA.
496: It is a QUIPU convention that DSAs should be named after endangered
497: South American wildlife,
498: and that the entry for the DSA should contain a description of the animal
499: or plant in question.
500: Table~\ref{endangered-wildlife},
501: taken from \volfive/ of the ISODE User's Manual,
502: contains a partial list of these species.
503: You might also want to consult IUCN's {\em Red Book\/} \cite{IUCN.Mammal}.
504: \tagtable[tp]{CNF-1}{Endangered South American Wildlife}{endangered-wildlife}
505:
506: For the purposes of the pilot project,
507: the name of each Level-1 DSA takes the form:
508: \begin{quote}\small\begin{verbatim}
509: c=US@cn=wildlife name
510: \end{verbatim}\end{quote}
511: So, go to Table~\ref{endangered-wildlife} and pick an unused name.
512: Alternately,
513: find a name which sounds plausible enough to fool a \camayoc/.
514: Prepend \verb"c=US@cn=",
515: and this is the Distinguished name of your Level-1 DSA.
516:
517: To find out what names are already taken,
518: do the following:
519: \begin{quote}\small\begin{verbatim}
520: % dish -c "Alpaca"
521: Welcome to Dish (DIrectory SHell)
522: Dish -> search @c=US -filter objectClass=dsa -nosizelimit
523: \end{verbatim}\end{quote}
524: This will print out the list of names already in use.
525:
526: Since some of the names in Table~\ref{endangered-wildlife} are long,
527: it is acceptable to use only part of the wildlife name as the common name
528: of your Level-1 DSA.
529: For example,
530: if the wildlife name is something like \verb"Southern Bearded Saki",
531: then it's probably okay to use \verb"Saki" as the name of the DSA,
532: e.g., \verb"c=US@cn=Saki".
533:
534: Now decide upon a ``sanitized'' name that will be used for the
535: \unix/ directory which will contain the database for your Level-1 DSA.
536: Using all lower case letters and substituting hyphens for spaces is a good
537: rule.
538: So, if the name of your DSA is \verb"c=US@cn=Spectacled Bear",
539: then \file{spectacled-bear/} or just \file{bear/} would be fine.
540: For the purpose of discussion,
541: let's call this directory \file{wildlife/}.
542:
543: The owner of the directory should be some maintenance account
544: (e.g., \verb"daemon") or \verb"root".
545: When the DSA executes,
546: it will set its user- and group-IDs based on the owner and group of this
547: directory.
548:
549: \subsection {Editing the DSA configuration file}
550: Go to the directory \file{quipu/} under ISODE's \verb"ETCDIR" directory:
551: \begin{quote}\small\begin{verbatim}
552: # cd $(ETCDIR)quipu/
553: \end{verbatim}\end{quote}
554: Now copy the configuration tempate file, e.g.,
555: \begin{quote}\small\begin{verbatim}
556: # cp wildlife.dsa spectacled-bear.dsa
557: # chmod 0600 spectacled-bear.dsa
558: \end{verbatim}\end{quote}
559: Now edit the new file to define the initial configuration for your Level-1
560: DSA.
561: Figure~\ref{dsaconfig} shows an example DSA configuration file.
562: \tagfigure[tp]{CNF-2}{Example DSA configuration file}{dsaconfig}
563:
564: Note that when defining information such as \verb"streetaddress", \verb"telephone",
565: and \verb"description", you should use the values for your organization,
566: not for your own department.
567: If you like,
568: {\em after\/} your DSA is running,
569: you can edit \file{c=US/o=O\_i/EDB} to insert the corresponding
570: information for your own department.
571:
572: Note that if the name of your ganization is long than 30 characters,
573: then you will have to manually define a postal address in the configuration
574: file for \pgm{dsaconfig}.
575: The format is:
576: \begin{quote}\small\begin{verbatim}
577: postalAddress "item1 $ item2 $ ... $ itemN"
578: \end{verbatim}\end{quote}
579: where each item is less-than or equal-to 30~characters in length and there are
580: no more than six items.
581:
582: \subsection {Running the DSA configuration program}
583: Once the file is edited,
584: run the DSA configuration program, \man dsaconfig(8):
585: \begin{quote}\small\begin{verbatim}
586: # $(SBINDIR)dsaconfig wildlife
587: \end{verbatim}\end{quote}
588: e.g.,
589: \begin{quote}\small\begin{verbatim}
590: # $(SBINDIR)dsaconfig spectacled-bear
591: \end{verbatim}\end{quote}
592: This will create the database directory and all requisite files.
593: Finally,
594: it will set the owner and group of the files appropriately.
595:
596: It is necessary to explain a little bit about what \pgm{dsaconfig} does.
597: Way back in Section~\ref{edb:format} on page~\pageref{edb:format},
598: the ``EDB format'' of the database was described.
599: All that is now missing is an explanation how different nodes in the Directory
600: tree are structured.
601: This is done using the \unix/ directory hierarchy.
602:
603: Starting at the ROOT,
604: at every level in the Directory tree for which your Level-1 DSA holds data,
605: there is a single file called \file{EDB}.
606: If an entry defined in an \file{EDB} file has children,
607: the \file{EDB} file for the children will be found in a subdirectory
608: whose name is the string encoded Relative Distinguished Name (RDN) of
609: the entry.
610:
611: For example,
612: if a \file{EDB} file has an entry whose RDN is \verb"o=Computer Science",
613: and if the entry has children,
614: and if your Level-1 DSA stores this information locally,
615: then the information can be found in the file \file{o=Computer Science/EDB}
616: relative to the current directory.
617: Note that:
618: \begin{itemize}
619: \item QUIPU is case sensitive when it looks for the subordinate \file{EDB}
620: file~---~the case of the attribute type
621: (e.g., \verb"o") is taken from the file \file{oidtable.at} in the
622: ISODE \verb"ETCDIR" directory,
623: whilst the case of the attribute value is taken from the superior
624: \file{EDB} file;
625: and,
626:
627: \item blanks are {\em actually\/} present in the sub-directory name.%
628: \footnote{An interesting example of the maxim {\em can implies shall\/}~---~because
629: the Berkeley \unix/ file system {\em can\/} let us have long directory names
630: with embedded spaces, we {\em shall\/} make use of that feature.}
631: \end{itemize}
632: Thus, for a Level-1 DSA, the initial database hierarchy looks like:
633: \begin{quote}\begin{tabular}{l}
634: \file{EDB}\\
635: \file{c=US/EDB}\\
636: \file{c=US/o=O\_i/EDB}\\
637: \file{c=US/o=O\_i/ou=U\_j/EDB}\\
638: \end{tabular}\end{quote}
639: So,
640: \pgm{dsaconfig} built these files for you.
641:
642: \subsection {Testing the stand-alone DSA}
643: The first thing to do is to start the DSA interactively so as to see
644: that it can successfully load its local EDB files.
645: So your Level-1 DSA is started thusly:
646: \begin{quote}\small\begin{verbatim}
647: # cd wildlife/
648: # $(SBINDIR)ros.quipu -t ./quiputailor &
649: \end{verbatim}\end{quote}
650: If your DSA is configured properly,
651: it will print out something like:
652: \begin{quote}\smaller\begin{verbatim}
653: DSA wildlife has started on '0101'H/Internet=130.117.128.3+17003
654: \end{verbatim}\end{quote}
655:
656: \subsection {DSA Failure}\label{dsa:failure}
657: Instead,
658: if the DSA prints out something like:
659: \begin{quote}\smaller\begin{verbatim}
660: FATAL ERROR: <<reason>>
661: \end{verbatim}\end{quote}
662: then something has gone wrong.
663:
664: There are a few reasons why the DSA might fail.
665: First verify that the ISODE is operating correctly
666: (see Section~\ref{isode:testing} on page~\pageref{isode:testing}.)
667: Next, verify that the DUA is operating correctly
668: (see Section~\ref{dua:configure} on page~\pageref{dua:configure}.)
669:
670: There are generally three causes of failure:
671: \begin{itemize}
672: \item there is an attribute-related schema problem;
673:
674: \item there is a structure-related schema problem;
675: or,
676:
677: \item something else is running at the OSI presentation address of the DSA.
678: \end{itemize}
679: Since you are using files which have been automatically generated,
680: the first two errors are unlikely.
681: However,
682: they might occur due to spelling errors or catastrophic editing
683: on your part.
684: In order to diagnose the problem,
685: you will need to look at the tail of the file \file{dsap.log} in the
686: \file{wildlife/} directory.
687:
688: \subsubsection {Attribute Errors}
689: If you misspell the name of an attribute,
690: then the diagnostic will look something like this:
691: \begin{quote}\small\begin{verbatim}
692: line 14: unknown attribute type '<<bad-name>>'
693: File ...wildlife/c=US/o=O_i/EDB not loaded
694: \end{verbatim}\end{quote}
695: Alternately,
696: if you specify an illegal attribute for an object
697: (a violation of the object's schema),
698: then the diagnostic will look something like this:
699: \begin{quote}\small\begin{verbatim}
700: attribute '<<illegal-name>>' not allowed in the specified objectclass
701: Schema error in entry ending line 17...
702: File ...wildlife/c=US/o=O_i/EDB not loaded
703: \end{verbatim}\end{quote}
704: Conversely,
705: if you leave out an attribute which is required by an object:
706: \begin{quote}\small\begin{verbatim}
707: 'Must' attribute missing '<<mandatory-name>>'
708: Schema error in entry ending line 16...
709: File ...wildlife/c=US/o=O_i/EDB not loaded
710: \end{verbatim}\end{quote}
711:
712: \subsubsection {Structure Errors}
713: If a subordinate object belongs to a class which is not permitted by
714: the schema of its immediate parent
715: (as determined by the parent's \verb"treeStructure" attribute),
716: then the diagnostic looks something like this:
717: \begin{quote}\small\begin{verbatim}
718: Specified object class is not in the tree structure (schema) list
719: Schema error in entry ending line 16...
720: File ...wildlife/c=US/o=O_i/EDB not loaded
721: \end{verbatim}\end{quote}
722: Note that this means you have to look in the file \file{wildlife/c=US/EDB}
723: to find the \verb"treeStructure" attribute of the parent entry
724: and then compare that to the \verb"objectClass" attribute of the entry
725: in error.
726:
727: \subsubsection {Network Errors}
728: If the local EDB files are consistent,
729: but another process is already listening on the IP address and TCP
730: port for the DSA,
731: then your DSA will print:
732: \begin{quote}\small\begin{verbatim}
733: TNetListen: [Congestion at TSAP] start_tcp_server failed:
734: Address already in use
735: Address: '0101'H/Internet=130.117.128.3+17003
736:
737: FATAL ERROR: Couldn't start the DSA!!
738: \end{verbatim}\end{quote}
739: Perhaps another copy of this DSA is already running
740: or the TCP port in the entry for the DSA
741: (found in the file \file{wildlife/c=US/EDB/})
742: is wrong.
743: It is also possible that an early invocation of the DSA was ungracefully
744: terminated and left the TCP port in a \verb"FIN_WAIT_x" state.
745: Use the \pgm{netstat} program to find out.
746: If so,
747: reboot \unix/.
748:
749: Alternately, you might see:
750: \begin{quote}\small\begin{verbatim}
751: TNetListen: [Congestion at TSAP] start_tcp_server failed:
752: Can't assign requested address
753: Address: '0101'H/Internet=130.117.128.3+17003
754:
755: FATAL ERROR: Couldn't start the DSA!!
756: \end{verbatim}\end{quote}
757: This indicates that you mis-identified the IP address of your Level-1 DSA in
758: your \pgm{dsaconfig} configuration file.
759:
760: \subsection {Editing the DUA tailoring file}
761: The file \file{dsaptailor} in the ISODE \verb"ETCDIR" directory contains
762: run-time tailoring information for the DUAs provided by the pilot software.
763: You will need to be the super-user to edit this file.
764:
765: You should now edit the \file{dsaptailor} file so that your DUAs
766: will contact that DSA by default.
767: This is done by looking for these two lines in the \file{dsaptailor} file:
768: \begin{quote}\smaller\begin{verbatim}
769: # the level-1 DSA
770: #dsa_address "wildlife name" '0101'H/Internet=aaa.bbb.ccc.ddd+port
771: \end{verbatim}\end{quote}
772: and then removing the \verb"`#'"-sign at the beginning of the second line.
773:
774: Next,
775: you should also have your DUAs start, by default, in your portion of the
776: Directory tree.
777: This is done by looking for these two lines in the \file{dsaptailor} file:
778: \begin{quote}\small\begin{verbatim}
779: local_DIT "c=US"
780: #local_DIT "c=US@O_i"
781: \end{verbatim}\end{quote}
782: and then adding a \verb"`#'"-sign at the beginning of the first line,
783: and removing the \verb"`#'"-sign at the beginning of the second line.
784:
785: Section~12.2 of \volfive/ discusses the options available for run-time
786: tailoring.
787: Typically,
788: you will have no need of further editing this file.
789:
790: Now run the \man dish(1c) program again,
791: telling it to connect to your Level-1 DSA.
792: \begin{quote}\small\begin{verbatim}
793: % dish -c "wildlife name"
794: Welcome to Dish (DIrectory SHell)
795: Dish ->
796: \end{verbatim}\end{quote}
797: indicates that the DUA connected to your Level-1 DSA.
798: Otherwise consult Section~\ref{dua:failure} on
799: page~\pageref{dua:failure} and try to debug the problem.
800:
801: Now look around the Directory tree using \pgm{dish}:
802: \begin{quote}\small\begin{verbatim}
803: Dish -> list
804: \end{verbatim}\end{quote}
805: A good test to run is to try and bind to your own entry,
806: but to do so by dereferencing the alias for the Manager of your DMD:
807: \begin{quote}\small\begin{verbatim}
808: Dish -> bind -user "@c=US@o=O_i@cn=Manager"
809: Enter password for "@c=US@o=O_i@cn=Manager":
810: Dish ->
811: \end{verbatim}\end{quote}
812: Indicates that you are now bound to the directory as that DN.
813: Instead, if you see:
814: \begin{quote}\small\begin{verbatim}
815: Dish -> bind -user "@c=US@o=O_i@cn=Manager"
816: Enter password for "@c=US@o=O_i@cn=Manager":
817: Security Error - check name and password
818: \end{verbatim}\end{quote}
819: then either you may have entered the DN or password wrong.
820: Try again.
821: If not,
822: or if you encounter some other problem,
823: contact a \camayoc/ for assistance.
824:
825: \subsection {Joining the Pilot DMD}
826: Once your DUA is configured to use your Level-1 DSA and your Level-1 DSA
827: appears to be functioning properly in stand-alone mode,
828: it is time for it to join the Pilot DMD.
829:
830: First,
831: backup your EDB files:
832: \begin{quote}\small\begin{verbatim}
833: # cp EDB EDB.stand-alone
834: # cp c=US/EDB c=US/EDB.stand-alone
835: \end{verbatim}\end{quote}
836:
837: \subsubsection {Contact the c=US Manager}
838: Next,
839: contact the Manager of the \verb"c=US" portion of the DMD.
840: Use the \pgm{dish} program to get the necessary contact information, e.g.,
841: \begin{quote}\small\begin{verbatim}
842: % dish -c "Alpaca"
843: Welcome to Dish (DIrectory SHell)
844: Dish -> show @c=US@cn=Manager -fred
845: \end{verbatim}\end{quote}
846: If this fails,
847: contact a \camayoc/ for assistance.
848: Otherwise, e-mail the file \file{c=US/EDB} along with your phone number to the
849: Manager and await a phone call or message in return.
850: Leave your DSA running until you hear from the Manager.
851:
852: The Manager will enter these into the MASTER \verb"c=US" EDB and then
853: try to connect to your DSA to test it out.
854: The Manager will also give you a ``time slot'' when your \file{nightly.sh}
855: script should run.
856: (This is a feeble attempt to prevent multiple systems from
857: mailing statistical information simultaneously each night.)
858:
859: If everything looks fine,
860: the Manager will direct you to proceed.
861:
862: \subsubsection {Connecting In and Checking Out}
863: Restart your DSA and use \pgm{dish} to bind as the manager.
864: Next,
865: direct the DSA to update its slave EDBs:
866: \begin{quote}\small\begin{verbatim}
867: % dish -user "@c=US@o=O_i@cn=Manager"
868: Welcome to Dish (DIrectory SHell)
869: Enter password for "@c=US@o=O_i@cn=Manager":
870: Dish -> dsacontrol -slave
871: Scheduled
872: Dish -> quit
873: \end{verbatim}\end{quote}
874: The \verb"Scheduled" message means that the EDB updates have been scheduled
875: for execution.
876: The DSA will actually perform these in the background,
877: so it may be a few minutes (or longer, depending on DSA/network availability)
878: before the EDBs are updated.
879:
880: To verify that your Level-1 DSA is updating its ROOT and \verb"c=US" EDB
881: files,
882: look for the files \file{EDB.bak} and \file{c=US/EDB.bak}
883: in the \file{quipu/wildlife/} directory.
884: If present,
885: these indicate that your Level-1 DSA was able to successfully update the EDBs.
886: If not,
887: look at the \file{dsap.log} log file and contact a \camayoc/ for
888: assistance.
889:
890: Finally,
891: check that the global Directory tree knows about your DSA
892: (the \verb"c=US" Manager verified this, but you should check anyway).
893: Use the \pgm{dish} but connect to a Level-0 DSA:
894: \begin{quote}\small\begin{verbatim}
895: % dish -c "Alpaca"
896: Welcome to Dish (DIrectory SHell)
897: Dish -> moveto "@c=US@o=O_i"
898: Dish -> list
899: ...
900: Dish -> list "ou=U_j"
901: ...
902: \end{verbatim}\end{quote}
903: If this succeeds, the Level-0 DSAs know how to talk to your Level-1 DSA.
904:
905: The other Level-1 DSAs won't know about your organization and Level-1 DSA
906: for another day or so.
907: (The Manager of the \verb"c=US" may cause a few Level-1 DSAs to immediately
908: reload the \verb"c=US" in order to facilitate things.)
909:
910: \subsubsection {More System Administration}
911: Once everything checks out,
912: its time to restart the DSA in the background.
913: First, edit the \file{quiputailor} file for your DSA by changing the
914: line
915: \begin{quote}\small\begin{verbatim}
916: update off
917: \end{verbatim}\end{quote}
918: to
919: \begin{quote}\small\begin{verbatim}
920: update on
921: \end{verbatim}\end{quote}
922: This tells your DSA to automatically update its SLAVE EDB files on a regular
923: basis.
924:
925: Next, use \pgm{dish} to abort the DSA:
926: \begin{quote}\small\begin{verbatim}
927: % dish -user "@c=US@o=O_i@cn=Manager"
928: Welcome to Dish (DIrectory SHell)
929: Enter password for "@c=US@o=O_i@cn=Manager":
930: Dish -> dsacontrol -abort
931: *** Problem with DSA ***
932: Dish -> quit
933: \end{verbatim}\end{quote}
934: Now run the \file{startup.sh} script:
935: \begin{quote}\small\begin{verbatim}
936: % $(ETCDIR)quipu/wildlife/startup.sh
937: \end{verbatim}\end{quote}
938: Take a look at the log files it creates and once you're satisfied
939: that it is operational,
940: use \pgm{dish} one last time before considering things up and running.
941:
942: Finally,
943: it's time for the last bit of system administration:
944: \begin{enumerate}
945: \item Add an entry to the file \file{/etc/rc.local}:
946: \begin{quote}\smaller\begin{verbatim}
947: if [ -d $(ETCDIR)quipu/wildlife ]; then
948: $(ETCDIR)quipu/wildlife/startup.sh & \
949: (echo -n ' wildlife') > /dev/console
950: fi
951: \end{verbatim}\end{quote}
952: in the section where the network servers are started.
953: If your \file{rc.local} file starts \man tsapd(8c),
954: then place this entry after the one which starts \pgm{tsapd}.
955:
956: The next time your system reboots,
957: check to make sure that your DSA started.
958: On {\em some\/} systems running Sun's ``Yellow Pages'',
959: it has been observed that YP prevents the \pgm{ros.quipu} from starting.
960: No cause or cure is known for this.
961: The problem just seems to ``go away'' after a while.
962:
963: \item Based on the time that the \verb"c=US" manager gave you,
964: modify the \file{crontab} file according; e.g.,
965: \begin{quote}\small\begin{verbatim}
966: 0 4 * * * $(ETCDIR)quipu/wildlife/nightly.sh
967: \end{verbatim}\end{quote}
968: If the directory database for the Level-1 DSA is owned by a user-ID other
969: than \verb"root" (e.g., \verb"daemon"),
970: then instead the line should look something like this:
971: \begin{quote}\smaller\begin{verbatim}
972: 0 4 * * * su daemon -c "/bin/sh $(ETCDIR)quipu/wildlife/nightly.sh"
973: \end{verbatim}\end{quote}
974: or perhaps
975: this
976: \begin{quote}\small\begin{verbatim}
977: 0 4 * * * su daemon -c "sh $(ETCDIR)quipu/wildlife/nightly.sh"
978: \end{verbatim}\end{quote}
979: Be sure that the ownership of the \file{nightly.sh} file matches that of the
980: userid that will be running under cron.
981: Verify that the user's shell, paths, and so on, are all correct as well.
982: \end{enumerate}
983:
984: Congratulations!
985: Your Level-1 DSA has now joined the pilot DMD.
986: Further,
987: the Manager of \verb"c=US" has elevated you to the role of
988: junior \camayoc/ by adding your electronic mail address to the
989: \verb"wpp-camayocs" mailing list.
990: Each \camayoc/ is expected to share experiences with others so as to
991: expand and advance understanding of running a white pages service using the
992: OSI Directory.
993:
994: \section {Configuring the White Pages}
995: The very last step you need do is to configure the white pages service which
996: resides on top of the OSI Directory.
997:
998: You should now determine if a substantive portion of your user community does
999: not have easy access to a machine running the pilot project software.
1000: If this is the case,
1001: then you will probably want to make the white pages service available via the
1002: network (either via TELNET or by emulating WHOIS) or via electronic mail.
1003:
1004: \subsection {White Pages via TELNET}
1005: Choose a machine in your local environment which is running the pilot project
1006: software.
1007: This machine will offer the white pages service via TELNET.
1008:
1009: On this machine,
1010: add a line to the \file{/etc/passwd} file for a user called \verb"fred"
1011: \begin{quote}\smaller\begin{verbatim}
1012: fred::30:30:Anonyous White Pages User:/:$(SBINDIR)fredsh
1013: \end{verbatim}\end{quote}
1014: where group-id \verb"30" is the \verb"guest".
1015:
1016: \subsubsection {Fred-only hosts}
1017: After bringing up the software for both the Directory and the White Pages,
1018: you might wish to copy the executables to other machines,
1019: just to make \pgm{fred} available.
1020: To do this, you need the following files:
1021: \begin{itemize}
1022: \item In the ISODE \verb"BINDIR" directory:
1023: \begin{quote}\begin{tabular}{l}
1024: \pgm{dish}\\
1025: \pgm{editentry}\\
1026: \pgm{fred}
1027: \end{tabular}\end{quote}
1028:
1029: \item In the ISODE \verb"SBINDIR" directory:
1030: \begin{quote}\begin{tabular}{l}
1031: \file{fredrc}\\
1032: \file{dsaptailor}\\
1033: \file{oidtable.*}\\
1034: \file{isobjects}\\
1035: \file{isologs}\\
1036: \file{isomacros}\\
1037: \file{isotailor}
1038: \end{tabular}\end{quote}
1039: Note that the \file{isotailor} file need not be present,
1040: depending on the dynamic changes to your system configuration.
1041:
1042: \item In the ISODE \verb"SBINDIR" directory:
1043: \begin{quote}\begin{tabular}{l}
1044: \pgm{fredsh}\\
1045: \pgm{in.whitepages}
1046: \end{tabular}\end{quote}
1047: Note that you need \pgm{in.whitepages} only if you plan on using this host to
1048: offer the white pages via WHOIS emulation.
1049: \end{itemize}
1050:
1051: \subsection {White Pages via WHOIS}\label{wp:whois}
1052: Choose a machine in your local environment which is running the pilot project
1053: software.
1054: This machine will offer the white pages service via a network port offering an
1055: emulation of the WHOIS service.
1056:
1057: On this machine,
1058: edit the file \file{/etc/services} so that it has an entry like this:
1059: \begin{quote}\small\begin{verbatim}
1060: whitepages 17005/tcp
1061: \end{verbatim}\end{quote}
1062:
1063: Next,
1064: edit the file \file{/etc/servers} so that it has an entry like this:
1065: \begin{quote}\small\begin{verbatim}
1066: whitepages tcp $(SBINDIR)in.whitepages
1067: \end{verbatim}\end{quote}
1068: Because most user interfaces to WHOIS,
1069: e.g., \man whois(1c),
1070: do not allow the user to specify a special port,
1071: you should probably also add this line as well:
1072: \begin{quote}\small\begin{verbatim}
1073: whois tcp $(SBINDIR)in.whitepages
1074: \end{verbatim}\end{quote}
1075: If you already have a line for \verb"whois" in the \file{servers} file,
1076: then you are already running a WHOIS service,
1077: and you should {\bf not\/} add a second \verb"whois" line.
1078: This machine is not a good choice for running the white pages via WHOIS
1079: emulation.
1080:
1081: Note that on newer systems derived from Berkeley \unix/,
1082: \file{/etc/servers} is called \file{/etc/inetd.conf}.
1083:
1084: \subsubsection {The whitepages Command}
1085: On those systems which are to access the white pages via the network and not
1086: locally
1087: (i.e., those systems which are not running the pilot project software),
1088: you should determine how a user invokes the WHOIS service via the network.
1089: For \unix/ systems,
1090: you should provide a shell script like this:
1091: \begin{quote}\small\begin{verbatim}
1092: : run this script through /bin/sh
1093:
1094: exec /usr/ucb/whois -h wp.psi.com "$*"
1095: \end{verbatim}\end{quote}
1096: where the name of a host running the pilot project software is substituted for
1097: \verb"whitepages", e.g., \verb"wp.psi.com".
1098: This host must have the files \file{/etc/services} and \file{/etc/servers}
1099: edited as described above.
1100:
1101: \subsection {White Pages via mail}\label{wp:mail}
1102: In addition,
1103: you might want to make the whitepages available via electronic mail.
1104: To do this,
1105: choose a machine in your local environment which is running the pilot project
1106: software.
1107:
1108: On this machine,
1109: edit the file \file{/usr/lib/aliases} so that it has an entry like this:
1110: \begin{quote}\small\begin{verbatim}
1111: whitepages: "|/usr/local/bin/fred -m"
1112: \end{verbatim}\end{quote}
1113: After editing the \file{aliases} file,
1114: you will need to run the \pgm{newaliases} command as the super-user:
1115: \begin{quote}\small\begin{verbatim}
1116: # newaliases
1117: \end{verbatim}\end{quote}
1118: Also make sure that the \file{sendmail.cf} file lists \pgm{sh} and not
1119: \pgm{csh} as the \verb"prog" mailer.
1120:
1121: Once these changes are in place,
1122: Whenever someone sends to the address \verb"whitepages" on this machine,
1123: the subject line or body of the message will be interrogated for WHOIS-like
1124: commands and the appropriate reply generated.
1125:
1126: Note that on systems not running \man sendmail(8c),
1127: a similar procedure is followed.
1128: However,
1129: it's up to you to figure out how to define aliases that run commands on
1130: receipt of mail.
1131:
1132: You should tell the local PostMaster about the white pages service.
1133: In this fashion,
1134: when the PostMaster get queries from other sites,
1135: they can the sender of the message
1136: (and the Postmaster at the sender's site)
1137: about the service.
1138:
1139: \subsection {An Undocumented Feature}
1140: In some environments,
1141: in which the IP-address of a host is reasonably trustworthy,
1142: it may be desirable to have an automatic means of mapping an IP-address into a
1143: Distinguished Name.
1144: \pgm{fred} provides such a mechanism under the following conditions:
1145: \begin{enumerate}
1146: \item Create a file called \file{fredmap} in the ISODE \verb"ETCDIR"
1147: directory.
1148:
1149: The syntax of this file is a series of entries, one to a line.
1150: Each line contains:
1151: \begin{itemize}
1152: \item a IP-address mask
1153: (in the familiar ``dot'' notation, e.g., \verb"255.255.255.0");
1154:
1155: \item a IP-network address
1156: (in the familiar ``dot'' notation, e.g., \verb"192.52.180");
1157:
1158: \item a Distinguished Name
1159: (e.g., \verb|"c=US@o=DMD@cn=anon"|);
1160: and,
1161:
1162: \item the password to use when binding to that DN
1163: (e.g, \verb|"secret"|).
1164: \end{itemize}
1165: Blanks and/or tab characters are used to separate items.
1166: However, double-quotes may be used to prevent separation for items containing
1167: embedded whitspace.
1168: The sharp character (`\verb"#"') at the beginning of a line indicates a
1169: commentary line.
1170:
1171: This file should be mode \verb"0640", owned by user \verb"root" and
1172: some previously unused group, e.g., \verb"wp".
1173:
1174: \item After installing \pgm{fred} with the
1175: \begin{quote}\small\begin{verbatim}
1176: # (cd others/quipu; ./make inst-pilot)
1177: \end{verbatim}\end{quote}
1178: command
1179: (this was done way back in Section~\ref{isode:install} on
1180: page~\pageref{isode:install}),
1181: make the group of the binary the same as the \file{fredmap} file,
1182: and change the mode to \verb"02755".
1183:
1184: \item When a local user invokes \pgm{fred}
1185: \pgm{fred} looks-up the local IP-address,
1186: reads the \file{fredmap} file looking for the first entry satisfying:
1187: $$\mbox{(local IP-address)} \land \mbox{(IP-address mask)}\ \equiv\
1188: \mbox{(IP-network address)}$$
1189: Upon finding such an entry,
1190: \pgm{fred} will bind to the Directory using the DN and password for that entry.
1191:
1192: \item When \pgm{fred} is accessed via the network
1193: (e.g., with the \verb"in.whitepages" mechanism described in
1194: Section~\ref{wp:whois} on page~\pageref{wp:whois}),
1195: \pgm{fred} will automatically read the \file{fredmap} file,
1196: looking for the first entry satisfying:
1197: $$\mbox{(remote IP-address)} \land \mbox{(IP-address mask)}\ \equiv\
1198: \mbox{(IP-network address)}$$
1199: Upon finding such an entry,
1200: \pgm{fred} will bind to the Directory using the DN and password for that entry.
1201: \end{enumerate}
1202: Of course,
1203: the ordering of entries in the \file{fredmap} file is important!
1204: It is suggested that the file begin with host-specific entries
1205: (those with an IP-address mask of \verb"255.255.255.255"),
1206: and then entries follow in decreasing order by the number of bits on in the
1207: IP-address mask.
1208:
1209: Although use of a ``default'' entry,
1210: one which will match any IP-address,
1211: is strongly discouraged,
1212: it is possible to define such an entry.
1213: This should be the very last entry in the \file{fredmap} file.
1214: The format of this entry is simply:
1215: \begin{quote}\small\begin{verbatim}
1216: 0.0.0.0 0.0.0.0 "some DN" "some password"
1217: \end{verbatim}\end{quote}
1218:
1219: It should be noted that this scheme provides a convenient mechanism for
1220: allowing ``local'' users to automatically be authorized as specific entries in
1221: the local DMD.
1222: By doing so,
1223: this eases the administrative burden of assigning passwords to users in an
1224: environment which contains read-only but, nonetheless, sensistive information.
1225: The information is protected via access control,
1226: e.g.,
1227: \begin{quote}\smaller\begin{verbatim}
1228: acl= prefix # c=US@o=DMD # read # attributes # <attribute-list>
1229: acl= self # write # attributes # <attribute-list>
1230: acl= others # none # attributes # <attribute-list>
1231: \end{verbatim}\end{quote}
1232: Note that for a writeable environment,
1233: whilst the access control scheme is still used,
1234: this simplification of locally anonymous DNs usually can not be made.
1235:
1236: Note that under the current QUIPU access scheme,
1237: the access control list above will prevent any user,
1238: regardless of the DN they are bound as (including local users),
1239: from searching on the values of the attributes named in
1240: \verb"<attribute-list>".
1241: As such, a less restrictive set of rules might be:
1242: \begin{quote}\smaller\begin{verbatim}
1243: acl= prefix # c=US@o=DMD # read # attributes # <attribute-list>
1244: acl= self # write # attributes # <attribute-list>
1245: acl= others # compare # attributes # <attribute-list>
1246: \end{verbatim}\end{quote}
1247: which will enable searching for all users.
1248: However,
1249: it will also allow any user to compare specific values against the attributes
1250: named in \verb"<attribute-list>".
1251:
1252: Of course,
1253: this simplification is severely limited in that it works only for
1254: IP-addresses, and further assumes that such addresses are trustworthy.
1255: The trustworthiness depends entire upon the network environment in which
1256: \pgm{fred} runs.
1257: For example,
1258: since IP-addresses can be readily forged,
1259: one might rely on routers on the edge of the local environment to simply drop
1260: IP datagrams with local source IP-addresses that originate from the outside
1261: world.
1262: In this case,
1263: entries in the \file{fredmap} file containing local IP-addresses can be
1264: thought to be ``reasonably'' secure against outside attack.
1265: Of course,
1266: nothing prevents a local host from forging a local IP-address.
1267: If the trust policy is simply to distinguish between local and non-local
1268: users,
1269: then the \file{fredmap} mechanism is adequite.
1270:
1271: Given all of these concerns,
1272: this ``undocumented feature'' is a useful, albeit non-OSI, local mechanism.
1273:
1274: \section {Other Services}
1275: There are some additional programs that you might wish to install for your
1276: user community.
1277:
1278: \subsection {Faces}
1279: When \pgm{fred} and \pgm{dish} display the entry for someone,
1280: they check to see if there is a photograph associated with the user.
1281: This is stored in facsimile format in the \verb"photo" attribute for the entry.
1282: If a photograph is present,
1283: then the \file{dsaptailor} file is consulted for directives
1284: indicating how the picture should be displayed.
1285: The most common entry is:
1286: \begin{quote}\small\begin{verbatim}
1287: photo xterm Xphoto
1288: \end{verbatim}\end{quote}
1289: which says that if the user's terminal type is \verb"xterm" then the program
1290: \pgm{Xphoto} should be run.
1291:
1292: Although there are many different programs that can be used to display a
1293: photograph,
1294: only the \pgm{XPhoto} is supported by the sponsors of the pilot.
1295:
1296: \subsubsection {XPhoto}
1297: To generate the \pgm{XPhoto} program,
1298: run the following command:
1299: \begin{quote}\small\begin{verbatim}
1300: % (cd others/quipu/photo; ./make all XPhoto)
1301: \end{verbatim}\end{quote}
1302: To install the program,
1303: become the super-user and do:
1304: \begin{quote}\small\begin{verbatim}
1305: # (cd others/quipu/photo; ./make inst-all)
1306: \end{verbatim}\end{quote}
1307: Next,
1308: add this line at the end of the \file{dsaptailor} file:
1309: \begin{quote}\small\begin{verbatim}
1310: photo xterm Xphoto
1311: \end{verbatim}\end{quote}
1312:
1313: \subsubsection {xwho and xface}
1314: There are two other programs which consult the Directory for people's faces.
1315: These are \pgm{xwho}, who for X windows;
1316: and,
1317: \pgm{xface}, face agent for X windows.
1318:
1319: To generate these programs,
1320: first generate \pgm{Xphoto} as described above.
1321: next:
1322: \begin{quote}\small\begin{verbatim}
1323: % (cd others/image; ./make all)
1324: \end{verbatim}\end{quote}
1325: To install the program,
1326: become the super-user and do:
1327: \begin{quote}\small\begin{verbatim}
1328: # (cd others/image; ./make inst-all)
1329: \end{verbatim}\end{quote}
1330:
1331: The \pgm{xwho} program is free-standing,
1332: but requires that the local system run the \man rwhod(8c) daemon.
1333:
1334: The \pgm{xface} program runs, for each user, in the background.
1335: When a mail reading program displays a message,
1336: it sends a wake-up call to \pgm{xface} which must then try to find the picture
1337: associated with the sender of the message.
1338:
1339: At present,
1340: only one mail reading system has been modified to communicate with
1341: \pgm{xface},
1342: the \MH/ system.
1343: The file \file{others/image/mhlsbr.c} is a replacement for the
1344: \file{uip/mhlsbr.c} in the \MH/ distribution.
1345: Once \MH/ has been modified,
1346: the manual entry for \man xface(1c) describes how the user tells \MH/ to
1347: display faces.
1348:
1349: Finally,
1350: the file \pgm{others/image/READ-ME} describes how images may be collected and
1351: placed in the Directory.
1352:
1353: \subsection {Mail Composition}
1354: In addition to using the Directory when messages are being displayed,
1355: the White Pages may also be consulted when a message is being composed.
1356:
1357: At present,
1358: only one mail composition system has been modified to use the White Pages,
1359: the \MH/ system.
1360:
1361: The file \file{others/quipu/uips/fred/MH-patches} contains a patch set to \MH/
1362: to use this facility along with instructions for apply the patch set.
1363:
1364: Once installed,
1365: users can specify a name by bracketing a White Pages query between
1366: ``\verb"<<"'' and ``\verb">>"'' using the \verb"whois" syntax of the \pgm{fred}
1367: command, e.g.,
1368: \begin{quote}\small\begin{verbatim}
1369: To: << rose -org psi >>
1370: \end{verbatim}\end{quote}
1371: At the \whatnow/ prompt, the user can say \verb"whom" to have the names
1372: expanded into addresses.
1373: Alternately, the \verb"send" option can be used as well.
1374: For each query appearing between ``\verb"<<"'' and ``\verb">>"'',
1375: \pgm{fred} will be asked to perform a White Pages resolution.
1376: All matches are printed and the user is asked to select one.
1377: If one is not selected,
1378: the user remains with \pgm{fred},
1379: to make more queries,
1380: until eventually one is selected
1381: (or the user exits \pgm{fred} to abort the expansion process).
1382:
1383: Note that expansion can occur only if \verb"whom" or \verb"send" is invoked
1384: interactively.
1385: If the \verb"push" option is used instead,
1386: then the expansion will fail because \pgm{fred} will be unable to query
1387: the user to select/confirm the right entry to use for the substitution.
1388:
1389: \section {Tell The Users!}
1390: OK, everything is installed and running,
1391: so it's time for you to tell your users about the system!
1392: Print out copies of \thebook/ and the accompanying
1393: {\em White Pages Quick Reference Sheet},
1394: and start distributing them.
1395: Also, encourage your users to subscribe to the
1396: \begin{quote}\begin{verbatim}
1397: [email protected]
1398: \end{verbatim}\end{quote}
1399: discussion group.
1400: This is done by sending a message to the
1401: \begin{quote}\begin{verbatim}
1402: [email protected]
1403: \end{verbatim}\end{quote}
1404: mailbox and asking to be added.
1405:
1406: \subsection {More New and Exciting Stuff}
1407: New and exciting white pages applications are written from time to time.
1408: You should contact \verb"wpp-manager" to see if there's something fun that you
1409: can try out.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.