Annotation of 43BSDReno/contrib/isode-beta/doc/manual/q-dish.tex, revision 1.1.1.1

1.1       root        1: % run this through LaTeX with the appropriate wrapper
                      2: 
                      3: \chapter{The OSI Directory}
                      4: \label{dir_model}
                      5: 
                      6: This Chapter is designed as a quick introduction to the model of X.500
                      7: directories, to provide the reader with sufficient information to be able to
                      8: understand the following Chapters.
                      9: 
                     10: \section {The Model}
                     11: The OSI Directory is intended to support human user querying, allowing
                     12: users to find, {\em inter alia}, telephone and address information of
                     13: organisations and other users.  
                     14: 
                     15: It is also intended to support electronic
                     16: communication such as message handling systems and file transfer.
                     17: The Directory provides name to address mapping to support, for example, OSI
                     18: presentation address look-ups. Message handling systems will be provided with 
                     19: support for user-friendly naming, security and
                     20: distribution lists.
                     21: 
                     22: \tagfigure[tp]{q-dit}{Example DIT}{qfig:dit}
                     23: 
                     24: In essence the Directory is a database with certain key characteristics.
                     25: \begin{itemize}
                     26: \item
                     27: The Directory is intended to be very large and highly distributed. It is
                     28: anticipated that the Directory will be distributed largely on an
                     29: organisational basis.
                     30: \item
                     31: The Directory is hierarchically structured, the entries being arranged in
                     32: the form of a tree called the Directory Information Tree (DIT).
                     33: An example DIT is shown in Figure~\ref{qfig:dit}. 
                     34: Entries near the root of the tree will usually represent
                     35: objects such as countries (e.g., `GB') and organisations (e.g., `University 
                     36: College London'), entries at or near the leaves
                     37: of the tree will represent people (e.g., `Colin Robbins'), 
                     38: equipment or application processes.
                     39: 
                     40: \item
                     41: Read and search operations will dominate over modification operations.
                     42: \item
                     43: Temporary inconsistencies in the data are acceptable.  This greatly
                     44: facilitates the replication of data in the Directory by obviating concerns
                     45: about record locking and atomic operations.
                     46: \end{itemize}
                     47: 
                     48: 
                     49: \section{Information Representation}
                     50: There are various structures needed to represent the data required in the
                     51: directory database. These are described
                     52: briefly below.
                     53: 
                     54: \subsection {Object Identifiers}
                     55: An important part of the OSI world is the Object Identifier (OID).
                     56: 
                     57: An OID is a hierarchy of numbers used to uniquely describe various objects
                     58: within the OSI world: for example, ``1.0.8571.1.1'' describes the FTAM
                     59: protocol; ``0.9.2342.19200300.99.1'' 
                     60: defines a QUIPU Attribute Type.
                     61: The strings of numbers look ``horrible'' and can be difficult to remember.
                     62: As such, QUIPU provides a mapping from OIDs to ``strings'', so that 
                     63: easy to remember strings can be used in place of the numeric OIDs, for
                     64: example ``iso ftam'' or ``quipuAttributeType''.
                     65: 
                     66: The mapping are defined in a set of oidtables which are discussed
                     67: in Section~\ref{oidtables}. 
                     68: 
                     69: \subsection {Attributes}
                     70: 
                     71: \tagfigure[tp]{q-entry}{Structure of an Entry}{qfig:entry}
                     72: 
                     73: The directory holds information about various entities, such as a person or
                     74: an organisation.  The information is held in an information object,
                     75: typically referred to as an {\em entry}. 
                     76: An entry consists of a set of one of more attributes
                     77: (see Figure~\ref{qfig:entry}).
                     78: 
                     79: An attribute is represented by an attribute type, and set of attribute values.
                     80: An attribute with a single value is represented as follows:-
                     81: \begin{quote}  
                     82: $<$Attribute Type$>$ ``='' $<$Attribute Value$>$
                     83: \end{quote}
                     84: The attribute type can either be a string (which must be in the attribute
                     85: oidtable --- see Section~\ref{oidtables}) or the OID in a dotted decimal
                     86: format.
                     87: 
                     88: Each attribute value is represented by a string, the format of the attribute value
                     89: depends upon the
                     90: syntax defined in the oidtables, but in general will be a string.
                     91: 
                     92: So
                     93: \begin{quote}\begin{verbatim}  
                     94: roomNumber = G24
                     95: 2.5.4.20   = 453-5674
                     96: commonName = Colin Robbins & Colin John Robbins
                     97: photo      = {ASN} 0308207b4001488001fd...
                     98: \end{verbatim}\end{quote}
                     99: is an example of an entry, with 4 attributes. The ``commonName'' attribute
                    100: is multi-valued, 
                    101: with the two values separated by the ``\&'' symbol.
                    102: Notice how the ``photo'' attribute does not have a specific string format,
                    103: so a hexadecimal ``ASN.1'' representation is used.
                    104: ``2.5.4.20'' is an Object Identifier represented in numeric form.
                    105: 
                    106: 
                    107: \subsection {Names}
                    108: \label{quipu_name}
                    109: Within an entry, some attributes (generally one) have special importance,
                    110: and are called {\em distinguished attributes}.  The collection of these
                    111: attributes form the {\em Relative Distinguished Name}
                    112: (RDN).\index{RDN}
                    113: 
                    114: An RDN is usually represented by a single valued attribute, thus
                    115: \begin{quote}  \begin{verbatim}
                    116: commonName = "Alan Turland"
                    117: organization = "University College London"
                    118: \end{verbatim}\end{quote}
                    119: are valid RDNs. 
                    120: 
                    121: An RDN made up of multiple distinguished attributes uses the \verb+%+ symbol
                    122: to separate the values, for
                    123: example
                    124: \begin{quote}  \begin{verbatim}
                    125: userid = quipu % commonName = "Colin Robbins"
                    126: \end{verbatim}\end{quote}
                    127: 
                    128: A {\em Distinguished Name} (DN) is the sequence of RDNs that uniquely define
                    129: a node in the Directory Information Tree (DIT).
                    130: These are represented as follows:-
                    131: \begin{quote}
                    132: RDN [ ``@'' RDN \ldots]
                    133: \end{quote}
                    134: So
                    135: \begin{quote}\small\begin{verbatim}
                    136: countryName = GB @ organization = University College London 
                    137: \end{verbatim}\end{quote}
                    138: is an example of a valid DN.
                    139: 
                    140: In some cases an RDN or DN is specified relative to a node other than the
                    141: root in the DIT.
                    142: To be unambiguous a DN may be rooted using a leading ``@'', for example
                    143: \begin{quote}\small\begin{verbatim}
                    144: @ countryName = GB @ organization = University College London 
                    145: \end{verbatim}\end{quote}
                    146: 
                    147: 
                    148: \section{Directory User Agent}
                    149: The Directory User Agent (DUA) is the entity you as a user will connect to,
                    150: it will help you formulate your queries, and then pass them to the
                    151: Directory, and show you the results.
                    152: 
                    153: The X.500 standard defines only the protocol the DUA should use when taking
                    154: to the Directory, and as such DUAs come in many varieties, but the basic
                    155: concepts are the same.
                    156: 
                    157: A DUA talks to the directory using the Directory Access Protocol
                    158: (DAP)\index{DAP}.
                    159: 
                    160: The following Chapters of this Part of the Manual describe five such
                    161: interfaces: 
                    162: \begin{describe}
                    163: \item [dish:]  The DIrectory SHell\\
                    164:                This interface give a user full access to the DAP, and
                    165: as such may be complex for novice users.
                    166: \item [sid:]   Steve's Interface to Dish\\
                    167:                A set of scripts that make Dish usable for novice users.
                    168: \item [fred:]  FRont End to Dish\\
                    169:                Fred provides a White Pages User Interface, which hides most
                    170: of the complexity of the OSI directory.
                    171: \item [widget:] A curses based windowing interface,
                    172: \item [sunint:] A suntools based windowing interface.
                    173: \end{describe}
                    174: 
                    175: We should point out here that 
                    176: Widget and Sunint are not considered fully developed interfaces,
                    177: but are included to give would be DUA developers examples of how 
                    178: the procedural interface discussed in Section~\ref{proc_model} can be used.
                    179: 
                    180: 
                    181: \section{Directory System Agent}
                    182: 
                    183: \tagfigure[tp]{q-dsa}{DUA/DSA Interaction}{qfig:dsa}
                    184: 
                    185: The Directory System Agent (DSA) is the entity that generates the results to
                    186: requests from a DUA.
                    187: It may handle the request itself, ask another DSA (using the Directory System
                    188: Protocol\index{DSP}), or advise the DUA to
                    189: contact another DSA (see Figure~\ref{qfig:dsa}).
                    190: This part of the directory is discussed more in Parts III and V of this
                    191: manual.  Here we shall concentrate on the DUA.
                    192: 
                    193: 
                    194: \chapter{DISH}
                    195: \label{dish}
                    196: 
                    197: This Chapter describes DISH, a DIrectory SHell interface to the Directory.
                    198: It provides an interface to the Directory in an similar manner
                    199: to the way that \MH/ provides an interface to a message handling systems.
                    200: As with \MH/, dish can either be invoked as a single process with the full
                    201: repertoire of commands built in, or it can be invoked by individual shell
                    202: commands.
                    203: This latter style allows dish to be used with others tools to provide very
                    204: flexible access to the directory.
                    205: 
                    206: Dish provides a very powerful interface onto the Directory and gives a user
                    207: access to the full Directory Access Protocol(DAP).
                    208: The price of such comprehensiveness is complexity.
                    209: Dish has a large number of flags, and both the syntax and volume of typing
                    210: required can seem forbidding to the novice user.
                    211: One compromise solution is to use dish to build interfaces which are easier
                    212: to use and more intuitive, for example SID (see Chapter~\ref{DUA:sid}).
                    213: 
                    214: To run DISH in interactive mode invoke \man dish(1c), then issue any of the
                    215: commands described in Sections~\ref{dish_start} through \ref{sequences}.
                    216: This mode of operation is especially useful for novice users.
                    217: The process of connecting to the Directory -- binding --
                    218: takes place automatically when the program is invoked, and an unbind
                    219: is issued when you quit.  
                    220: 
                    221: The arguments to \man dish(1c) are the same as for bind (see 
                    222: Section~\ref{dish_bind}), with the addition of a `-pipe' flag
                    223: which is used to start dish in ``shell'' mode (see Section~\ref{dish_shell})
                    224: (NOTE: ``dish -pipe \&'' has the same effect as the shell command ``bind'').
                    225: 
                    226: \section {Commands}
                    227: 
                    228: Each of the DISH commands described below has a large number of valid flags,
                    229: the full names of the flags are given below, however the shortest unique
                    230: name is sufficient to select the flag.
                    231: Similarly, when dish is used interactively the shortest unique name is taken
                    232: for the command name (e.g. ``l'' for ``list'').
                    233: There is an exception in that ``sh'' is interpreted as ``showentry'', 
                    234: ``shown'' must be typed for ``showname''.
                    235: 
                    236: The additional flag \tt -help \rm \ can be specified with 
                    237: every command to get limited runtime help.
                    238: 
                    239: \subsection{Moveto}
                    240: \label{dish_start}
                    241: With nearly every command it is possible to supply the distinguished name of
                    242: the object you want to reference.
                    243: In the syntax this is represented by 
                    244: \begin{verbatim}
                    245:        <object>.  
                    246: \end{verbatim}
                    247: An initial `\tt @\rm ' in an object description specifies that the name
                    248: is relative to the root of the Directory Information Tree (DIT), 
                    249: otherwise the name is relative to the current
                    250: position in the DIT.  
                    251: The special name component `..' is used to mean `one
                    252: position up' from the current position.  
                    253: Some examples of valid names and their interpretation relative to
                    254: how a distinguished name is built up are shown below by the following
                    255: sequence of names:
                    256: 
                    257: \begin{description}
                    258: 
                    259: \item [\verb+"@c=GB@o=University College London@ou=Computer Science"+:]
                    260: The specified object is \\
                    261: ``c= GB @ o= University College London @ ou= Computer Science''.
                    262: 
                    263: \item [\verb+"cn=Colin Robbins"+:]
                    264: describes the object
                    265: cn=Colin Robbins relative to the current 
                    266: position (``c= GB @ o= University College London @ ou= Computer Science @ cn= Colin Robbins''). 
                    267: Spaces in a name will be seen as the start of a separate 
                    268: argument by the shell, so the name must be quoted.
                    269: 
                    270: \item [\verb+"..@cn=Steve Titcombe"+:]
                    271: describes the entry 
                    272: cn=Steve Titcombe at the same level
                    273: in the DIT as the current position (``c= GB @ o= University College London @
                    274: ou= Computer Science @ cn= Steve Titcombe'').
                    275: 
                    276: \end{description}
                    277: 
                    278: Objects can also be expressed in the form of sequence numbers and nicknames.
                    279: See sections \ref{sequences} and \ref{quipurc}.
                    280: 
                    281: When you specify an object, the current position in the DIT is not changed.
                    282: To change the current position you should use
                    283: \begin{verbatim}
                    284: moveto [-[no]pwd] [-[no]check] 
                    285:        [-sequence <name>] [-nosequence] <position>
                    286: \end{verbatim}
                    287: 
                    288: The \tt -pwd \rm \ flag tells moveto to print the current position in the
                    289: DIT.
                    290: The current position can also be changed with the \tt -move\rm \ flag to 
                    291: showentry and list (see Sections~\ref{dua:list} and ~\ref{dua:show}).
                    292: 
                    293: The \tt -nocheck \rm \ flag tells moveto NOT to check the entry exists,
                    294: normally, moveto will invoke a `\verb"read"' to check the named entry exists.
                    295: 
                    296: 
                    297: \subsection{Showentry}
                    298: \label{dua:show}
                    299: 
                    300: \begin{verbatim}
                    301: showentry [<object>] [-[no]cache] [-[no]name]
                    302:           [-[no]move] [<any of the read arguments>]
                    303: \end{verbatim}
                    304: 
                    305: Showentry will show the distinguished 
                    306: name of the current entry (unless \tt -noname\rm \ is specified), 
                    307: followed by each attribute
                    308: specified in the read arguments. 
                    309: If the `\tt -all\rm ' is given all attributes will be shown.
                    310: If insufficient information resides in the local cache, a `\tt read\rm ' will
                    311: be performed.
                    312: 
                    313: \tt -cache\rm \ is used the tell showentry to use cached information only ---
                    314: do not issue a read operation. 
                    315: This is used to see what the DUA has cached, and then get information when
                    316: the local DSA is unavailable.
                    317: 
                    318: \tt -nocache\rm \ is used to enforce a directory read, this is used to update the cache
                    319: directly.
                    320: 
                    321: \tt -move\rm \ is used to tell dish to change the current position in the DIT
                    322: to the object specified. 
                    323: 
                    324: \subsubsection{read flags}
                    325: 
                    326: These flags are used by showentry(1), showname(1), search(1) and modify(1).
                    327: 
                    328: \begin{quote}\begin{verbatim}
                    329: [-[no]types <attribute-type> *] [-[no]all] 
                    330: [-[no]value] [-[no]show] 
                    331: [-[no]key] [-edb]
                    332: [-proc <syntax> <process>]
                    333: [-sequence <name>] [-nosequence]
                    334: \end{verbatim}\end{quote}
                    335: 
                    336: The \tt all\rm \ flag request that all attribute are read (default).
                    337: 
                    338: The \tt value\rm \ flag reads the attribute value, which is the default, 
                    339: the inverse is to read the attribute types only.
                    340: 
                    341: The \tt novalue\rm \ flag says print the attribute types only.
                    342: 
                    343: The \tt show\rm \ flag displays the information read.
                    344: 
                    345: The \tt key\rm \ flag determines whether the key (attribute type) will 
                    346: be shown along with the attribute value.
                    347: 
                    348: The \tt edb\rm \ flag requests that the data is displayed in ``EDB'' format,
                    349: that is, a format which can be used in QUIPU data files.
                    350: 
                    351: The \tt type\rm \ flag requests that only the supplied attributes are 
                    352: read from the DSA, the inverse of this \tt -notype \rm \ does not 
                    353: prevent the attributes being read (as there is no
                    354: easy mechanism to perform this within X.500), 
                    355: but it does stop them being shown.
                    356: 
                    357: The \tt proc\rm \ flag is used to instruct the display routines to uses an
                    358: external process to display the attribute.
                    359: For example if you have a process that displays presentation elements
                    360: representing ``OID's'' in a particular
                    361: way, then you can use
                    362: \begin{quote}\begin{verbatim}
                    363: showentry -proc OID /usr/bin/oid_display_process
                    364: \end{verbatim}\end{quote}
                    365: then all OIDs will be displayed using ``/usr/bin/oid\_display\_process''.
                    366: 
                    367: The \tt sequence\rm \ flag is used to control sequences, sequences
                    368:  are described in Section~\ref{sequences}.
                    369: 
                    370: \subsection{List}
                    371: \label{dua:list}
                    372: \begin{verbatim}
                    373: list [<object>] [-nocache] [-noshow] [-[no]move]
                    374: \end{verbatim}
                    375: This function displays all the children below your current position.
                    376: 
                    377: \tt -nocache\rm \ tells list to re-read the directory - do not use cached information.
                    378: 
                    379: \tt -noshow\rm \ tells list not to display the names found, but 
                    380: still construct sequences (see section \ref{sequences}).
                    381: 
                    382: \tt -move\rm \ is used to tell dish to change the current position in the DIT
                    383: to the object specified. 
                    384: 
                    385: \subsection{Search}
                    386: \label{search}
                    387: 
                    388: \begin{verbatim}
                    389: search  [[-object] <object>] 
                    390:         [-baseobject] [-singlelevel] [-subtree]
                    391:         [[-filter] <filter>] 
                    392:         [-[no]relative] [-[no]searchaliases]
                    393:         [-[no]partial] [-hitone]
                    394:         [<any of the read arguments>]
                    395: \end{verbatim}
                    396: 
                    397: Search the DIT starting at the object specified, for entries that match a
                    398: filter.
                    399: When an entry is found to match the filter, its distinguished name is printed
                    400: unless a `\tt-show\rm ' option is 
                    401: specified, when the entry is displayed.
                    402: 
                    403: If no filter is specified the default filter (which matches any object in
                    404: the DIT) is used.
                    405: 
                    406: If no flags are given, then the sole allowed parameter is taken to be the
                    407: filter (NOT the base object as in ALL the other commands).
                    408: The flags \tt -filter\rm \ and \tt -object \rm \ are supplied to allow the
                    409: user to specify if both a filter and base object (NOTE only one need be
                    410: flagged).
                    411: For example, the following are all valid search commands
                    412: \begin{quote}\begin{verbatim}
                    413: search
                    414: search <filter>
                    415: search -filter <filter>
                    416: search -object <object>
                    417: search -filter <filter> -object <object>
                    418: search <filter> -object <object>
                    419: search -filter <filter> <object>
                    420: \end{verbatim}\end{quote}
                    421: Whereas 
                    422: \begin{quote}\begin{verbatim}
                    423: search <object>           (interpreted as a filter !)
                    424: search <filter> <object>
                    425: \end{verbatim}\end{quote}
                    426: are not valid.
                    427: 
                    428: The flag `\tt -singlelevel\rm ' will search all the children
                    429: from the current position. 
                    430: The flag `\tt -subtree\rm ' searches all the 
                    431: levels below the current position recursively.
                    432: The default is
                    433: `\tt -singlelevel\rm '.
                    434: 
                    435: For example:- 
                    436: \begin{verbatim}
                    437: search -object 
                    438:    "@c=GB@o=University College London@ou=Computer Science"
                    439:    -subtree -filter "cn=colin robbins" -type telephonenumber -show
                    440: \end{verbatim}
                    441: will search the subtree below `c=GB @ o=University College London @ ou=Computer Science' for
                    442: an exact match of ``colin robbins'', and call showentry to 
                    443: display the {\em telephonenumber} attribute.
                    444: 
                    445: The \tt -norelative\rm \ flag is used to tell \verb"showname" to print the full
                    446: distinguished name of the results, otherwise the name relative to the current
                    447: position is printed.
                    448: 
                    449: The \tt -[no]searchaliases\rm \ flag direct the search as to whether aliases
                    450: encountered in the search should be dereferenced and searched.
                    451: 
                    452: The \tt -hitone\rm \ flag is used to tell Dish to consider it an error if
                    453: the search returns more than one entry.  This is particularly useful when
                    454: using Dish from shell scripts (see Section~\ref{dish_shell}).
                    455: 
                    456: From time to time, search will not be able to do the entire search, and will
                    457: return partial results, the \tt -nopartial\rm \ directs dish not to print
                    458: the partial result information.  To see the full set of partial results, both
                    459: \tt -partial\rm \ and \tt -show\rm \ are needed, otherwise a summary is
                    460: printed.
                    461: 
                    462: \subsubsection{More on Matching}
                    463: 
                    464: As well as an exact equality match, the 
                    465: following types of match can be specified
                    466: \begin{quote}\begin{verbatim}
                    467: ~=     Approximately equals.
                    468: >=     Greater than or equal.
                    469: <=     Less than or equal.
                    470: \end{verbatim}\end{quote}
                    471: 
                    472: When searching for an exact match (`=')
                    473: the `\tt *\rm ' character is used as a wildcard, and a substring
                    474: match takes place (unless only a `\tt *\rm ' is specified, when a {\em
                    475: presence} match is used - hence any entry 
                    476: containing that attribute will be matched). 
                    477: 
                    478: Filter items can be linked with {\em and} `\tt \&\rm ', or {\em or} 
                    479: `\tt $|$\rm '.  Brackets `\tt( )\rm ' 
                    480: should be used to enforce the boolean 
                    481: ordering of the expressions, otherwise the evaluation is left to right.
                    482: A {\em not} `\tt !\rm ' can be used to specify the boolean not operator.
                    483: 
                    484: If a filter does not have a type specified e.g., ``-filter steve'',
                    485: then an approximate match for the specified common name is assumed
                    486: (in this case ``-filter cn$\tilde{\ }$=steve'' is assumed).
                    487: 
                    488: A more complex example of a filter 
                    489: that searches for anybody whose is a member of staff 
                    490: or a student, who has a ``drink'' attribute,
                    491: whose name approximately matches ``steve'', but whose surname is 
                    492: not ``Kille'':-
                    493: \begin{verbatim}
                    494:       cn~=steve & (userClass = staff | userClass = student) &
                    495:                   (! surname = Kille) & drink = *
                    496: \end{verbatim}
                    497: 
                    498: A list of all the attributes is given in 
                    499: Chapter~\ref{syntaxes}, together with a description of the type matching of
                    500: matching allowed.
                    501: 
                    502: \subsection {Add Entry}
                    503: \label{dish:add}
                    504: 
                    505: \begin{verbatim}
                    506: add [<object>] [-draft <draft> [-noedit]] [-newdraft]
                    507:     [-template <draft>] [-objectclass <objectclass>]
                    508: \end{verbatim}
                    509: 
                    510: Add is used to add entries to the DIT.
                    511: This invokes editentry
                    512: on the draft entry.
                    513: If there is not a draft entry specified a draft entry of the specified 
                    514: objectclass (default --- thornperson \& quipuObject) is created.
                    515: The default draft file is ``.dishdraft'' in your home directory, this can be
                    516: altered with the -draft option.
                    517: 
                    518: When editing has finished the entry is added to the DIT
                    519: (the \tt -noedit\rm \ flag following a \tt -draft\rm \ stops the editor
                    520: being invoked).
                    521: 
                    522: \tt -newdraft\rm \ causes the current draft to be overwritten with a new
                    523: template of the appropriate objectclass.
                    524: 
                    525: \tt -template\rm \ is used to specify a template that should be used during
                    526: editing.
                    527: 
                    528: On successful completion of the add, the draft entry is renamed with a suffix of
                    529: ``.old''.
                    530: 
                    531: \subsection{Editentry}
                    532: 
                    533: \begin{verbatim}
                    534: editentry <draft>
                    535: \end{verbatim}
                    536: 
                    537: editentry invokes an editor (as defined by the users
                    538: \$EDITOR environment variable) on the current draft entry.
                    539: In a future release it is hoped to have an editor that knows about the syntax
                    540: of an entry, and thus ensures that the entry you have supplied is syntactically
                    541: correct.
                    542: 
                    543: \subsection {Delete Entry}
                    544: \begin{verbatim}
                    545: delete [<object>]
                    546: \end{verbatim}
                    547: The specified entry is removed from the DIT.
                    548: 
                    549: \subsection {Modify Entry}
                    550: \label{dish:modify}
                    551: \begin{verbatim}
                    552: modify [<object>] [-draft <draft> [-noedit]] [-newdraft] 
                    553:        [<any of the showentry arguments>]
                    554: \end{verbatim}
                    555: Modify is used to modify existing entries in the DIT.  Initially showentry
                    556: is used to get the current DIT entry, and place a copy of if in your
                    557: .dishdraft file.  If the -draft option is specified the given file is used.
                    558: After editing, any changes to the entry are sent to the directory
                    559: (the \tt -noedit\rm \ flag following a \tt -draft\rm \ stops the editor
                    560: being invoked).
                    561: 
                    562: The draft file is handled in the same way as with add, except, when a
                    563: new draft is created, the current values of the attributes are read from the
                    564: directory.
                    565: 
                    566: \subsection {ModifyRDN}
                    567: \begin{verbatim}
                    568: modifyrdn [<object>] -name <newrdn> [-[no]delete]
                    569: \end{verbatim}
                    570: This is used to modify the RDN of an entry.
                    571: 
                    572: The \tt -nodelete\rm \ flag is used to prevent the old RDN being removed as
                    573: an attribute of the entry.
                    574: 
                    575: 
                    576: \subsection{Showname}
                    577: \label{showname}
                    578: 
                    579: \begin{verbatim}
                    580: showname [<object>] [-compact] [-[no]cache] 
                    581:          [<any of the read arguments>]
                    582: \end{verbatim}
                    583: 
                    584: A name can be printed either in compact form, just showing the distinguished
                    585: name, or by showing the distinguished attributes.
                    586: 
                    587: \subsection{Compare}
                    588: \label{dua:compare}
                    589: \begin{verbatim}
                    590: compare [<object>] -attribute <attribute> [-[no]print]
                    591: \end{verbatim}
                    592: For example
                    593: \begin{quote}\begin{verbatim}
                    594: compare userclass=student
                    595: \end{verbatim}\end{quote}
                    596: This command has a return value of true or false (1 or 0).
                    597: 
                    598: If `\tt -print\rm ' is specified the strings ``TRUE'' or ``FALSE'' are printed.
                    599: 
                    600: \subsection {Squid}
                    601: 
                    602: \begin{verbatim}
                    603: squid [-sequence [<sequence name>]] 
                    604:       [-alias <alias>] [-version]
                    605: \end{verbatim}
                    606: 
                    607: The command \pgm {squid} (Status QUIpu Dish) with no 
                    608: parameters will inform you of the current status
                    609: of you dish process for example:
                    610: \begin{quote}\begin{verbatim}
                    611: Connected to Armadillo at Internet=128.40.16.220+2005
                    612: Current position: @c=GB@o=Nottingham University
                    613: User name: @c=GB@o=University College London@
                    614:            ou=Computer Science@cn=Colin Robbins
                    615: Current sequence 'default'
                    616: \end{verbatim}\end{quote}
                    617: 
                    618: \tt -sequence\rm \ makes squid print the specified sequence.
                    619: Sequences are described in Section~\ref{sequences}.
                    620: 
                    621: \tt -alias\rm \ adds the given DN to the current sequence.
                    622: 
                    623: \tt -version\rm \ print the version number of the dish process and
                    624: associated libraries.
                    625: 
                    626: \subsection {Bind}
                    627: \label{dish_bind}
                    628: 
                    629: \begin{verbatim}
                    630: bind [-noconnect] [[-user] [<username>]] 
                    631:      [-password [<password>]] [-[no]refer] [-call <dsaname>] 
                    632:      [-simple] [-protected] [-strong] [-noauthentication]
                    633: \end{verbatim}
                    634: 
                    635: This is used to (re)connect to the directory.  This is not normally
                    636: required, as each command will bind as necessary, but allows advanced users
                    637: to contact specified DSA's.
                    638: 
                    639: \tt -noconnect\rm \ is used to start dish (and cache) without connection to a
                    640: directory.
                    641: 
                    642: For an explanation of the `\tt -cache\rm ' flag see Section~\ref{dua_cache}
                    643: 
                    644: \tt -norefer\rm \ is used to tell Dish whether to automatically follow
                    645: referrals issued by the DSA.
                    646: 
                    647: To connect to the directory you need to be authenticated.
                    648: The are four flags to control the level of authentication required.
                    649: \tt -noauthentication\rm \ will gain you ``public'' rights to the directory,
                    650: thus you typically won't be able to modify data.
                    651: \tt -simple\rm \ and \tt -protected \rm \ present a textual password to the
                    652: directory which it the uses to authenticate you.
                    653: Using \tt -simple\rm \ the password is sent across the network ``in the
                    654: clear'', whereas \tt -protected \rm \ encrypts it, thus you are advised to
                    655: used \tt -protected \rm \ if your directory supports it.
                    656: 
                    657: The \tt -strong \rm \ flag tells Dish to send strong authentication
                    658: credentials to the directory. This is not fully implemented in this version
                    659: of QUIPU.
                    660: 
                    661: To connect to the DSA using ``simple'' or ``protected'' authentication, 
                    662: you must supply a
                    663: distinguished name (\tt -user\rm ) and password (\tt -password\rm ).
                    664: This however reveals you password to anybody who is looking at your 
                    665: terminal, but is useful for issuing bind operations from
                    666: a shell script. To prevent this you need to place the 
                    667: password in your \unix/ protected ``.quipurc'' (see Section~\ref{quipurc}).
                    668: Alternatively, if you do not supply a password, you will be prompted for one.
                    669: 
                    670: 
                    671: \subsection {Unbind}
                    672: 
                    673: \begin{verbatim}
                    674: unbind [-noquit]
                    675: \end{verbatim}
                    676: 
                    677: This is used to break the connection to a DSA.
                    678: If -noquit is specified, the dish process does not die (This is used to
                    679: maintain the cache).
                    680: 
                    681: To be ``friendly''
                    682: to other users, you should unbind 
                    683: when you have finished using the directory --- put an \tt unbind\rm \ in
                    684: you ``.logout'' file if you use \verb"dish" from the shell.
                    685: 
                    686: \section {Sequences}
                    687: \label{sequences}
                    688: 
                    689: Results returned by {\em search} and {\em list} may be long, and for 
                    690: this reason have a reference number printed beside them.
                    691: The reference number can be used as the ``object'' in any of the calls to the 
                    692: directory.  Thus
                    693: \begin{quote}\begin{verbatim}
                    694: showentry 6
                    695: \end{verbatim}\end{quote}
                    696: shows the entry labelled with the sequence number
                    697: ``6'' by a previous {\em search} or {\em list}.
                    698: 
                    699: When you come into dish
                    700: by default, the resultant numbers of list and search operations 
                    701: are added to a sequence called ``default''.
                    702: 
                    703: To get a different sequence (hence renumber from 1 again), you can change
                    704: this to ``mysequence'' with a 
                    705: \begin{quote}\begin{verbatim}
                    706: -sequence mysequence
                    707: \end{verbatim}\end{quote}
                    708: flag.
                    709: 
                    710: To completely remove the concept of sequences (so no numbers are printed by list
                    711: or search) use ``\tt -nosequence\rm ''.
                    712: 
                    713: The special keyword ``\tt reset\rm '' is used to reset the current sequence,
                    714: thus causing future operations to be renumbered from 1.
                    715: This is different to setting a new sequence, as the old sequence values are
                    716: removed.
                    717: 
                    718: Occasionally you will want to search an entry defined in one sequence,
                    719: putting the results in another, for this purpose the special token
                    720: ``result'' is recognised, thus
                    721: \begin{quote}\begin{verbatim}
                    722: search 4 -sequence xxx -sequence result yyy
                    723: \end{verbatim}\end{quote}
                    724: will search entry 4 as defined by sequence ``xxx'', but place the results in
                    725: sequence ``yyy''.
                    726: 
                    727: \section {Service Controls}
                    728: \label{dish_serv}
                    729: 
                    730: All the commands described in Sections~\ref{dua:show} 
                    731: through \ref{dua:compare} 
                    732: have additional flags to control the type of service provided.  The
                    733: advice to a novice user is let these flags take their default values. 
                    734: 
                    735: The flags recognised are listed below:-
                    736: 
                    737: \begin{description}
                    738: 
                    739: \item [-(no)preferchain] Advise the DSA (not) to chain the operation if
                    740: required.
                    741: 
                    742: \item [-(no)chaining] (Prohibit) Allow the use of chaining.
                    743: 
                    744: \item [-(dont)usecopy] (Prohibit) Allow the use of a cached or slave 
                    745: copy of the data.  
                    746: Note this refers to data cached in the DSA, there are separate flags
                    747: (already described)
                    748: for data cached in the DUA.
                    749: 
                    750: \item [-(dont)dereferencealias] (Do not) dereference aliases if found in
                    751: the path of a query.
                    752: 
                    753: \item [-low] Flag the query as low priority.
                    754: \item [-medium] Flag the query as medium (default) priority.
                    755: \item [-high]  Flag the query as high priority.
                    756: 
                    757: \item [-timelimit $n$] Set the time limit to $n$ seconds.
                    758: \item [-notimelimit] Do not specify a time limit.
                    759: 
                    760: \item [-sizelimit $n$] Set the size limit to $n$ entries.
                    761: \item [-nosizelimit] Do not specify a size limit.
                    762: 
                    763: \item [-(no)localscope] (Do not) limit operation to local scope.
                    764: 
                    765: \item [-(no)refer] (Do not) automatically follow referrals issued by the DSA.
                    766: 
                    767: \item [-strong]        Ask the DSA to use strong authentication when sending the
                    768: results.
                    769: 
                    770: \end{description}
                    771: 
                    772: 
                    773: 
                    774: \section {Tailoring}
                    775: 
                    776: There are two levels of tailoring that control the operation of the DISH DUA.
                    777: First of all there is the system wide tailor file \file{dsaptailor}
                    778: (found in the ISODE \verb"ETCDIR" directory, usually \file{/usr/etc/}), and
                    779: then users private tailor file \file{.quipurc}.
                    780: 
                    781: The file \file{dsaptailor} is described in Section~\ref{dua:tailor}.
                    782: 
                    783: \subsection {.quipurc}
                    784: \label{quipurc}\index{.quipurc}
                    785: The file \file{.quipurc} is read by \verb"dish" on start up, and
                    786: has the following format:-
                    787: 
                    788: \begin{verbatim}
                    789: flag:  value
                    790: \end{verbatim}
                    791: 
                    792: The following flags are currently recognised:-
                    793: \begin{description}
                    794: 
                    795: \item [username] The name of the user to bind as.
                    796: 
                    797: \item [password] The password to use when binding.  For this reason care
                    798: should be taken to ensure you .quipurc file is not publicly readable.
                    799: 
                    800: \item [cache\_time] How long to keep the dish process alive after unbinding
                    801: (specified in minutes)
                    802: 
                    803: \item [connect\_time] How long to keep a connection open, it there is no
                    804: activity (specified in minutes)
                    805: 
                    806: \item [service] A list of default service control flags 
                    807: (as defined in Section~\ref{dish_serv}).
                    808: 
                    809: \item [sequence] Add the supplied DN parameter to the default sequence.
                    810: 
                    811: \item [dsap] This can be followed by one of the dsaptailor options
                    812: described in the Section~\ref{dua:tailor}.\index{dsaptailor}
                    813: 
                    814: \item [isode] 
                    815: This can be followed by one of the ISODE tailor options
                    816: described in \volone/ of this Manual.
                    817: 
                    818: \item [notype] The argument is expected to be an attribute type.
                    819: This attribute will not be displayed by showentry by default.
                    820: 
                    821: \item [type] The only valid argument for this entry is ``unknown'', and says 
                    822: that unknown attributes should be shown, by default, they are not shown.
                    823: 
                    824: \item [certificate] Used for strong authentication.
                    825: 
                    826: \item [secret\_key] Used for strong authentication.
                    827: 
                    828: \item [$<$dish command$>$] A list of default flags 
                    829: to be used when `command' is used.
                    830: For example
                    831: \begin{verbatim}
                    832: showname: -compact
                    833: \end{verbatim}
                    834: says that ``showname'' should always be invoked with the 
                    835: \tt -compact \rm \ flag set.
                    836: 
                    837: \item [$<$nickname$>$] A nickname entry, for example
                    838: \begin{quote}\smaller\begin{verbatim}
                    839: cjr: ``c= GB @ o= University College London @ ou= Computer Science @ CN= Colin Robbins''
                    840: \end{verbatim}\end{quote}
                    841: This can then be used in distinguished name arguments, for example
                    842: \begin{quote}\begin{verbatim}
                    843: showentry cjr
                    844: \end{verbatim} \end{quote}
                    845: will show the entry for `Colin Robbins'.
                    846: 
                    847: \end{description}
                    848: 
                    849: 
                    850: \section {Remote Management of the DSA}\label{dua:mgmt}
                    851: \begin{verbatim}
                    852: dsacontrol [-[un]lock <entry>] [-dump <directory>] 
                    853:            [-tailor <string>] [-abort] 
                    854:            [-restart] [-info] [-refresh <entry>]
                    855:            [-resync <entry>] -slave [<entry>]
                    856: \end{verbatim}
                    857: 
                    858: If the \pgm{dish} program is bound to the DSA as the Directory manager
                    859: (See Section~\ref{dish_bind} on binding),
                    860: then it may be used to (primitively) manage the DSA.
                    861: This feature is discussed in \cite{QUIPU.Design} and Section~\ref{dsa:mgmt}
                    862: of this Manual.
                    863: 
                    864: \tt (un)lock\rm \ used to (un)lock subtrees of the DIT held locally. This
                    865: (allows) prevents users to modify the DIT.
                    866: 
                    867: \tt dump\rm \ causes a copy of the local DIT to be dumped into the specified 
                    868: directory.
                    869: Note that when the DSA dumps its in-core database,
                    870: it does so relative to the (possibly remote) \unix/ directory from which the
                    871: DSA was started,
                    872: not the directory that \man dish(1c) was invoked in!
                    873: So it is best to specify path names in full to ensure the database is dumped
                    874: where you expect it to be!
                    875: 
                    876: \tt tailor\rm \ is used to pass tailor command to a running DSA.  The format of
                    877: ``string'' is the same as a line in the ``quiputailor'' file.
                    878: For example:-
                    879: \begin{quote}\begin{verbatim}
                    880: dsacontrol -tailor "dsaplog level=all"
                    881: \end{verbatim}\end{quote}
                    882: will turn the DSA logging on full.
                    883: 
                    884: \tt refresh\rm \ tells the DSA to re-read sub-tree `entry' from disk.
                    885: As with all `dsacontrol' commands, `entry' must be the full DN of the target
                    886: entry, the dish concept of `current position' is not used.
                    887: Also, if relating to a disk operation, the CASE of the DN must be correct
                    888: as well.
                    889: 
                    890: \tt resync\rm \ tells the DSA to re-write the sub-tree `entry' to disk.
                    891: 
                    892: \tt slave\rm \ tell the DSA to update its SLAVE EDB files, see Section
                    893: \ref{slave_update} for details.
                    894: 
                    895: \tt abort\rm \ tells the DSA to stop.
                    896: \tt restart\rm \ tells the DSA to stop, then restart.
                    897: 
                    898: \tt info\rm \ asks the DSA to return some statistics about its database.
                    899: 
                    900: The error messages returned from a DSA are somewhat obscure.
                    901: There are 3 things dish may report: 
                    902: \verb+DONE+ --- the operation has been successfully completed; 
                    903: \verb+Access rights insufficient+ --- you are not bound as the DSA manager;
                    904: \verb+Unwilling to perform+ --- the DSA was unable to perform the task, this
                    905: generally means the argument to dsacontrol was wrong.
                    906: 
                    907: \section {Caching in the DUA}
                    908: \label {dua_cache}
                    909: 
                    910: All results returned from read and list operations are cached in memory
                    911: in the DUAs.  The cache is then used if possible to answer queries.
                    912: The cache is kept for ``cache\_time'' minutes as specified in the tailor
                    913: files.
                    914: 
                    915: Disk caching has not been implemented yet,
                    916: but it is intended to extend the in-core caching, 
                    917: so that the cached data can be written to disk.  When the DUA's start up, the
                    918: user will have the option to read this cache.
                    919: Similar support for private data may be provided.
                    920: 
                    921: \section {Running DISH from the Shell}
                    922: \label{dish_shell}
                    923: 
                    924: Each of the dish commands mentioned in this Chapter to
                    925: \ref{dua:mgmt}
                    926: can be applied directly to the shell, without having to first invoke
                    927: \pgm{dish}.  This has the advantage that the result can be piped through
                    928: programs like \pgm{more} thus giving the user flexibility in how
                    929: they view the data.
                    930: 
                    931: Chapter~\ref{quipu:install} describes how to install this ``extra'' feature of
                    932: dish.
                    933: 
                    934: \subsection {Dishinit}
                    935: A program called \pgm{dishinit} 
                    936: \label{dishinit}
                    937: can be use to 
                    938: bind to the directory as the manager, read certain information
                    939: and create a 
                    940: default \verb".quipurc"
                    941: file for a specified user.
                    942: This is a useful utility for new databases.
                    943: If the \verb"dsaptailor" variable \verb"dishinit" is set to \verb"on",
                    944: dishinit will be invoked by \verb"dish" whenever is can not find a 
                    945: .quipurc file.
                    946: 
                    947: \verb"dishinit" needs three parameters to be set in order to bind as the 
                    948: manager, and search the local subtree.
                    949: These parameters are defined at the top of the dishinit script and are:-
                    950: \begin{description}
                    951: \item [manager] The DN of the manager of the local DSA
                    952: \item [password] The managers password (the script should be protected 
                    953: with \unix/ file protection).
                    954: \item [position] The DN of the local sub-set of the DIT. This is where 
                    955: the entries for users will be looked for
                    956: \end{description}
                    957: 
                    958: \subsection{Example Scripts}
                    959: Two example scripts have been supplied as part of ISODE, and can be found in
                    960: the \file{others/quipu/uips/dish} directory.
                    961: \begin{description}
                    962: \item [dsaping] contacts all the DSAs at a given level in the DIT, and
                    963: gathers some statistics.
                    964: \item [dsalist] produces a list of all the (known) DSAs in the DIT.
                    965: \end{description}
                    966: 
                    967: Each time a new shell is invoked and a dish command entered, a new DISH will
                    968: be invoked.  This is sometimes not required.  To prevent this from happening
                    969: an environment variable ``DISHPROC'' can be set, and should be the TCP
                    970: address to use for communication, for example
                    971: \begin{quote}\begin{verbatim}
                    972: 127.0.0.1 12345
                    973: \end{verbatim}\end{quote}
                    974: where 127.0.0.1 is the IP address, and 12345 is the TCP port.
                    975: The two example scripts show how the TCP port may be generated if required
                    976: under \verb+sh+.
                    977: For \verb+csh+ you might use
                    978: \begin{verbatim}
                    979: if (${?DISHPROC} == 0) then
                    980:         setenv DISHPROC "127.0.0.1 `expr $$ + 10000`"
                    981: endif
                    982: \end{verbatim}
                    983: 
                    984: For people not running in the TCP environment this is not a problem, as
                    985: ``named pipes'' are used, with the pipe name being bound to the terminal
                    986: identifier, the section below identifies these files.
                    987: 
                    988: \subsection {Files}
                    989: 
                    990: When the multiple command version of dish is compile on a machine that does
                    991: not support sockets, name pipes are used 
                    992: to communicate with the
                    993: a background process.
                    994: 
                    995: The file ``/tmp/dish$<$pid$>$'' is used by dish to write results to the calling
                    996: processes, where the ``pid'' is the process id of the calling process.
                    997: 
                    998: The file ``/tmp/dish--$<$tty$>$--$<$uid$>$'' is used by calling process to send commands to
                    999: dish, where ``tty'' is the users terminal number, and ``uid'' their user id.
                   1000: 
                   1001: \chapter {SID}
                   1002: \index{sid}
                   1003: \label{DUA:sid}
                   1004: SID (Steve's Interface to Dish) is a Directory User Agent, designed to be
                   1005: incredibly easy to use.
                   1006: It is implemented as a simple set of scripts to the DISH DUA.
                   1007: 
                   1008: There are a lot of flags to DISH, this can make it awkward to use, and in
                   1009: general shows too much directory specific information.
                   1010: Fred has a centralised view of the world, and does not give
                   1011: the advantages of a shell based interface.
                   1012: 
                   1013: SID is a simple approach of giving appropriate aliases to access DISH
                   1014: commands.   It is targetted for searching for people and organisations.
                   1015: It may be useful ``as is'' to others, and also give an indication as to how
                   1016: DISH may be used.
                   1017: 
                   1018: 
                   1019: \section {Quickstart}
                   1020: 
                   1021: 
                   1022: \begin{description}
                   1023: \item[WARNING] Before you start to try SID, you must have the variable
                   1024: DISHPROC set in your environment.  The mechanism suggested in
                   1025: Section~\ref{profile} is a good way to achieve this.  To experiment,
                   1026: csh users can type the incantation:
                   1027: \begin{verbatim}
                   1028: % setenv DISHPROC "127.0.0.1 `expr $$ + 1000`"
                   1029: \end{verbatim}
                   1030: \end{description}
                   1031: 
                   1032: 
                   1033: To find users within your Organisation is very easy.  
                   1034: The default setup is optimised for
                   1035: your particular Organisational Unit.  Simply use the command {\bf psearch}
                   1036: with a single argument to identify the user looked for.  This will identify
                   1037: all users with this key as a substring.  For example:
                   1038: 
                   1039: \begin{quote}\small\begin{verbatim}
                   1040: % psearch steve
                   1041: countryName=GB
                   1042: organisation=University College London
                   1043: department=Computer Science
                   1044: 
                   1045: 1   cn=Steve Kille
                   1046: telephoneNumber    - +44-1-380-7294 (work)
                   1047: telephoneNumber    - 01-350-2888 (home)
                   1048: 2   cn=Stephen Titcombe
                   1049: telephoneNumber    - +44-1-387-7050 x 3674/5 
                   1050: telephoneNumber    - Term = 01-388-4741
                   1051: 3   cn=Stephen Sackin
                   1052: 4   cn=Steve Wilbur
                   1053: telephoneNumber    - +44-1-380-7287
                   1054: 5   cn=Stephen Usher
                   1055: telephoneNumber    - +44-1-387-7050 x 3674/5 
                   1056: 6   cn=Kevin Steptoe
                   1057: 7   cn=Tomasz Stepniak
                   1058: 8   cn=Stefan Penter
                   1059: telephoneNumber    - +44-1-387-7050 x 3674/5 
                   1060: 9   cn=Stephania Loizidou
                   1061: 10  cn=Steve Hodges
                   1062: telephoneNumber    - +44-1-387-7050 x 3674/5 
                   1063: 11  cn=Steve Davey
                   1064: telephoneNumber    - +44-1-387-7050 x 7280 or 7289
                   1065: 12  cn=Steve Chan
                   1066: telephoneNumber    - +44-1-387-7050 x 3674/5 
                   1067: 13  cn=Steven Britton
                   1068: telephoneNumber    - +44-1-387-7050 x 3715
                   1069: 14  cn=Stephen Beckles
                   1070: telephoneNumber    - +44-1-387-7050 x 3674/5 
                   1071: 15  cn=Steven Bacall
                   1072: telephoneNumber    - +44-1-387-7050 x 3674/5 
                   1073: telephoneNumber    - dd 01-387-6978 (Campbell House)
                   1074: \end{verbatim}\end{quote}
                   1075: 
                   1076: 
                   1077: Each match will have an associated number.  To show a given entry, just use
                   1078: the command {\bf showentry}, with the number identifying the entry as the
                   1079: single argument.  For example to show entry 1 (Steve Kille):
                   1080: 
                   1081: \begin{quote}\smaller\begin{verbatim}
                   1082: % showentry 1
                   1083: c=GB@o=University College London@ou=Computer Science@cn=Steve Kille
                   1084: Address            - 35 Elspeth Road
                   1085:                      London
                   1086:                      SW11 1DW
                   1087: userClass - csresstaff
                   1088: photo - (See X window, pid 598)
                   1089: roomNumber         - G24
                   1090: favouriteDrink     - Pinta - Brakspears
                   1091: info               - Directory worker
                   1092: rfc822Mailbox      - [email protected]
                   1093: textEncodedORaddress - /Pn=Stephen.Kille/Ou=cs/O=ucl/ \
                   1094:                      Prmd=uk.ac/admd=gold 400/c=gb/
                   1095: userid             - steve
                   1096: telephoneNumber    - +44-1-380-7294 (work)
                   1097: telephoneNumber    - 01-350-2888 (home)
                   1098: description        - New Description
                   1099: surname            - Kille
                   1100: name               - Steve E. Kille
                   1101: name               - Stephen Kille
                   1102: name               - Steve Kille
                   1103: \end{verbatim}\end{quote}
                   1104: 
                   1105: If you are running X windows, a picture will be displayed if it is present.
                   1106: 
                   1107: If you wish to search all of your Organisation, simply give a second argument 
                   1108: to {\bf
                   1109: psearch}.  For example, to search UCL give `ucl' as shown:
                   1110: 
                   1111: \begin{quote}\small\begin{verbatim}
                   1112: % psearch baker ucl
                   1113: Searching for People matching "baker" under:
                   1114: countryName=GB
                   1115: organisation=University College London
                   1116: 
                   1117: 4   ou=French Lang and Lit@cn=F Baker
                   1118: telephoneNumber  - 3077
                   1119: 5   ou=Economics@cn=V Bashkar
                   1120: telephoneNumber  - 2286
                   1121: 6   ou=Biochemistry@cn=J Basra
                   1122: telephoneNumber  - 2185
                   1123: 7   ou=Bartlett School@cn=H Bowker
                   1124: telephoneNumber  - 7453
                   1125: 8   ou=Anatomy and Embryol@cn=D Becker
                   1126: telephoneNumber  - 3293
                   1127: 9   ou=Computer Science@cn=Malcolm Booker
                   1128: telephoneNumber  - +44-1-387-7050 x 3645 
                   1129: 10  ou=Computer Science@cn=Imtiaz Bashir
                   1130: telephoneNumber  - +44-1-387-7050 x 7304 
                   1131: 11  ou=Computer Science@cn=Benjamin Bacarisse
                   1132: telephoneNumber  - +44-1-380-7212 (work)
                   1133: telephoneNumber  - 01 987 2746 (home)
                   1134: 12  ou=Surgery@cn=L Baker
                   1135: telephoneNumber  - 82-5255
                   1136: 13  ou=History Of Art@cn=B A Boucher
                   1137: telephoneNumber  - 7210
                   1138: 14  ou=Geological Sciences@cn=J R Baker
                   1139: telephoneNumber  - 2382
                   1140: 15  ou=Secretary's Office@cn=I H Baker
                   1141: telephoneNumber  - 3000
                   1142: \end{verbatim}\end{quote}
                   1143: 
                   1144: 
                   1145: \section {Example Usage}
                   1146: 
                   1147: A typical sequence to find someone outside you organisation is now shown:
                   1148: 
                   1149: 
                   1150: \begin{quote}\small\begin{verbatim}
                   1151: % osearch nott
                   1152: Searching in country "gb" for Organisations matching "nott"
                   1153: 1   o=Nottingham University
                   1154: telephoneNumber  - +44-0602-484848x2862
                   1155: 2   o=NPL
                   1156: 3   o=JNT
                   1157: telephoneNumber  - +44-0235-445724
                   1158: % psearch smith 1
                   1159: Searching for People matching "smith" under:
                   1160: countryName=GB
                   1161: organisation=Nottingham University
                   1162: 
                   1163: 4   ou=Computer Science@cn=Hugh Smith
                   1164: telephoneNumber  - extn 2862 (Departmental Secretary)
                   1165: % showentry 4
                   1166: c=GB@o=Nottingham University@ou=Computer Science@cn=Hugh Smith
                   1167: photo            - (See X window, pid 1076)
                   1168: telephoneNumber  - extn 2862 (Departmental Secretary)
                   1169: description      - lecturer
                   1170: surname          - Smith
                   1171: name             - Hugh.Smith
                   1172: name             - Hugh Smith
                   1173: \end{verbatim}
                   1174: \end{quote}
                   1175: 
                   1176: 
                   1177: 
                   1178: \section {Use of Nicknames}
                   1179: 
                   1180: It is convenient to have nicknames (privaet aliases) set up for commonly accessed parts of the
                   1181: Directory Information Tree.  These can be set up in the QUIPU Profile (see
                   1182: Section~\ref{profile}), which sets up the nickname ``us''.
                   1183: Two nicknames used in the examples are:
                   1184: 
                   1185: \begin{description}
                   1186: \item[ucl]  Country GB; Organsisation University College London.
                   1187: \item[cs] Country GB; Organsisation University College London;
                   1188: Organisational Unit Computer Science.
                   1189: \end{description}
                   1190: 
                   1191: Aliases may be used as an alternative to sequence numbers.
                   1192: 
                   1193: \section {SID Commands}
                   1194: 
                   1195: The initial SID commands are:
                   1196: 
                   1197: \begin{description}
                   1198: 
                   1199: \item[osearch] (Organisation Search) Search for an organisation.  The first argument is the
                   1200: organisation being searched for.  For example:
                   1201: 
                   1202: \begin{verbatim}
                   1203: % osearch nott
                   1204: \end{verbatim}
                   1205: 
                   1206: This searches for any organisations approximating to this string, or
                   1207: containing it as a substring.
                   1208: 
                   1209: The second (optional) argument is the two letter country code (e.g., GB, US,
                   1210: ES, etc.).  Use {\bf clist} to find these codes.  The default country is the
                   1211: previous one searched.  Example:
                   1212: 
                   1213: \begin{verbatim}
                   1214: % osearch nyser us
                   1215: \end{verbatim}
                   1216: 
                   1217: \item[psearch] (Person Search) Search for a person.  The first argument is a key to identify
                   1218: the person.  Approximate and substring matches are made.
                   1219: There are two ways of using psearch.  
                   1220: 
                   1221: 
                   1222: \begin{enumerate}
                   1223: \item Search an identified organisation, using the second argument to
                   1224: osearch.  Examples where the organisation is identified by a nickname:
                   1225: 
                   1226: \begin{verbatim}
                   1227: % psearch kirstein ucl
                   1228: \end{verbatim}
                   1229: 
                   1230: Example where the organisation is identified by a sequence number, returned
                   1231: by a previous osearch command.
                   1232: 
                   1233: \begin{verbatim}
                   1234: % psearch steve 29 
                   1235: \end{verbatim}
                   1236: 
                   1237: 
                   1238: \item Move explicitly to an organistion, and then use psearch with only one
                   1239: argument.  This is useful when repeated searches will be made from one point.
                   1240: Example:
                   1241: 
                   1242: \begin{verbatim}
                   1243: % moveto  ucl
                   1244: % psearch kirstein
                   1245: \end{verbatim}
                   1246: 
                   1247: \end{enumerate}
                   1248: 
                   1249: 
                   1250: 
                   1251: \item[clist] (Country List) Used to give a list of countries, with friendly descriptions,
                   1252: as well as the two letter code.
                   1253: 
                   1254: \item[ousearch] (Organisational Unit Search) Search for an OU.  Analogous to psearch.  This is
                   1255: appropriate for use where organisations are large, and a full search takes
                   1256: too long.
                   1257: 
                   1258: \item[dlist] (Directory List) This uses the search command to provide a listing of directory
                   1259: information, without a clutter of wild South American animals.
                   1260: 
                   1261: \end{description}
                   1262: 
                   1263: \section {Standard DISH commands}
                   1264: 
                   1265: The following DISH commands are useful ``as is'' for normal users, and are
                   1266: considered to be a part of SID.
                   1267: 
                   1268: \begin{description}
                   1269: \item[showentry] Show an entry.  The sinle argument is typically the numeric
                   1270: key returned by a search.  This will be used a lot, and it is likely to be
                   1271: worthwhile setting up an alias.  The author uses ``ds'' (directory show).
                   1272: Example, using a sequence number returned by a search.
                   1273: 
                   1274: \begin{verbatim}
                   1275: % showentry 36
                   1276: \end{verbatim}
                   1277: 
                   1278: 
                   1279: \item[moveto] Move to a defined location.  Example of moving to a nickname
                   1280: defined location:
                   1281: 
                   1282: \begin{verbatim}
                   1283: % moveto ucl
                   1284: \end{verbatim}
                   1285: 
                   1286: 
                   1287: \item[modify] To modify your own entry, this command is used with the single
                   1288: argument ``me''.  For example:
                   1289: 
                   1290: \begin{verbatim}
                   1291: % modify me
                   1292: \end{verbatim}
                   1293: 
                   1294: \end{description}
                   1295: 
                   1296: 
                   1297: \section {QUIPU Profile}
                   1298: \label {profile}
                   1299: This is a suggested template for ``.quipurc'', note that this is very
                   1300: similar to the default file installed by \pgm{dishinit} described in
                   1301: Section~\ref{dishinit}.
                   1302: 
                   1303: 
                   1304: \begin{quote}\smaller\begin{verbatim}
                   1305: username:c=GB@o=University College London@ou=Computer Science@cn=Steve Kille
                   1306: me:c=GB@o=University College London@ou=Computer Science@cn=Steve Kille
                   1307: password:steve
                   1308: 
                   1309: position: @c=GB@o=University College London@ou=Computer Science
                   1310: notype: acl
                   1311: notype: treestructure
                   1312: notype: masterdsa
                   1313: notype: slavedsa
                   1314: notype: objectclass
                   1315: notype: lastmodifiedby
                   1316: notype: lastmodifiedtime
                   1317: notype: userpassword
                   1318: cache_time: 30
                   1319: connect_time: 2
                   1320: 
                   1321: us: c=us
                   1322: moveto: -pwd
                   1323: showentry: -name
                   1324: 
                   1325: \end{verbatim}\end{quote}
                   1326: 
                   1327: You must set the environment variable DISHPROC.  This can be done by the
                   1328: following in the .login file (csh).
                   1329: 
                   1330: \begin{verbatim}
                   1331: if (${?DISHPROC} == 0) then
                   1332:         setenv DISHPROC "127.0.0.1 `expr $$ + 1000`"
                   1333: endif
                   1334: \end{verbatim}

unix.superglobalmegacorp.com

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