
                            The Directory Structure
                                       
File Types

   The _Nightmare Object Library_ makes use of the following kinds of
   files:
   
   * _Configuration files_ _Extensions: .cfg (sometimes no
          extension)_
          These are special files used by _Nightmare_ objects to
          configure certain mud systems. One example is
          "/secure/cfg/groups.cfg" which the master object
          ("/secure/daemon/master") uses to determine who is in which
          group.
          
   * _Object Persistence Files_ _Extensions: .o (sometimes no
          extension)_
          These files store state information about LPC objects. They are
          used by the mud to preserve an object across time. For example,
          the persistence files in "/secure/save/players" save
          information about player objects across logins.
          
   * _LPC Source Files_ _Extensions: .c, .C, and .h_
          These files provide the LPC code that makes up the objects on
          the mud. Mud objects are named based on their file name minus
          the .c or .C extension. Note that .C extensions, for LPC->C
          support, are not currently supported by the _Nightmare Object
          Library_.
          
   Because object names are based on the file names from which they came
   (with the exception of virtual objects), security is based on an
   object's name, and thus security is intimately tied to the directory
   structure of the mudlib.
   
     _________________________________________________________________
                                      
The Two Directory Trees

   _Nightmare_ uses two directory trees which basically mirror each
   other:
     * The _/secure_ directory structure
     * The _/ (root)_ directory structure
       
   The _/secure_ directory structure contains files which are secure
   configuration files, object persistence files, and LPC source code
   files for high security systems. A high security system is either an
   LPC object which needs access to secure files or files which should be
   protected from modification except for by the most trusted objects.
   _Nightmare_ defines a trusted object as one having _SECURE_ group
   membership. See the [1]security documentation for more details on the
   _Nightmare_ security system.
   
   The root directory structure exists for objects that have lesser
   security requirements. The actual security for a given directory in
   the root directory tree can vary from the lowest security protection
   level ("/realms") to a moderately high security protection level
   ("/lib"). The objects created from the root directory structure
   generally have minimal priveledges.
   
     _________________________________________________________________
                                      
Inside the Trees

   Each tree has subdirectories under them which mirror each other. Each
   tree, for example, has the following subdirectories:
   
   * _cfg/_
          Configuration files
          
   * _cmds/_
          The LPC source files for simple commands
          
   * _daemon/_
          The LPC source files for special shared mud objects
          
   * _include/_
          The LPC source files for global header files
          
   * _lib/_
          The LPC source files for mudlib inheritables
          
   * _obj/_
          The LPC source files object instances in common use by all
          areas
          
   * _save/_
          Object persistence files
          
   * _tmp/_
          Miscellaneous temporary storage
          
   * _verbs/_
          The LPC source files for the parser system verb objects
          
   Thus "/secure/daemon" contains high security daemons, while "/daemon"
   contains run-of-the-mill daemons.
   
     _________________________________________________________________
                                      
Other Directories

   Each tree has a few directories which are not mirrored in the other
   tree. The reason for this is simply that the nature of that
   directory's contents imply security or lack thereof. For example, a
   secure "/realms" (creator home directories) makes no sense. Similarly,
   insecure simul efun files make no sense. Below is a brief description
   of each of these oddball directories.
   
  Secure Directories
  
   * _/secure/sefun/_
          The LPC source files for the simul efun object
          
  Root Directories
  
   * _/doc/_
          Textual documentation for the mud and the mudlib
          
   * _/domains/_
          The configuration files, documentation, object persistence
          files, and LPC source files for domains owned by the mud. This
          is distinguished from "/realms" which is made up of files owned
          by individual creators.
          
   * _/log/_
          Output from various logging systems in the mudlib
          
   * _/news/_
          Various news displayed to different types of users based on
          membership in given groups.
          
   * _/realms/_
          See the "/domains" descrption
          
   * _/shadows/_
          The LPC source files for approved shadow objects
          
   * _/www/_
          The HTML documents for the mud's HTTP daemon

References

   1. file://localhost/usr/local/www/Pages/LPC/Nightmare/Admins/security.html
