|
|
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.