The Nightmare Object Library makes use of the following kinds of files:
Configuration files
Extensions: .cfg (sometimes no extension)
Object Persistence Files
Extensions: .o (sometimes no extension)
LPC Source Files
Extensions: .c, .C, and .h
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.
Nightmare uses two directory trees which basically mirror each other:
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 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.
Each tree has subdirectories under them which mirror each other. Each tree, for example, has the following subdirectories:
cfg/
cmds/
daemon/
include/
lib/
obj/
save/
tmp/
verbs/
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/sefun/
/doc/
/domains/
/log/
/news/
/realms/
/shadows/
/www/