Annotation of 43BSDReno/contrib/isode-beta/doc/whitepages/administrator/configuration.tex, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.