enigma-bbs/docs/filebase/first-file-area.md

2.8 KiB
Raw Blame History

layout title
page Configuring a File Base

Configuring a File Base

ENiGMA½ offers a powerful and flexible file base. Configuration of file the file base and areas is handled via the fileBase section of config.hjson.

ENiGMA½ File Base Key Concepts

First, there are some core concepts you should understand:

  • Storage Tags
  • Areas (and Area Tags)

Storage Tags

Storage Tags define paths to physical (file) storage locations that are referenced in a file Area entry. Each entry may be either a fully qualified path or a relative path. Relative paths are relative to the value set by the areaStoragePrefix key (defaults to /path/to/enigma-bbs/file_base).

Below is an example defining some storage tags using the relative and fully qualified forms:

storageTags: {
	retro_pc_dos: "dos" // relative
	retro_pc_bbs: "pc/bbs" // still relative!
	bbs_stuff: "/path/to/bbs_stuff_storage" // fully qualified
}

On their own, storage tags don't do anything — they are simply pointers to storage locations on your system.

Areas

File base Areas are configured using the fileBase::areas configuration block in config.hjson. Valid members for an area are as follows:

Item Required Description
name 👍 Friendly area name.
desc 👎 Friendly area description.
storageTags 👍 An array of storage tags for physical storage backing of the files in this area. If uploads are enabled for this area, first storage tag location is utilized!
sort 👎 If present, provides the sort key for ordering. name is used otherwise.

Example areas section:

areas: {
	retro_pc: {
		name: Retro PC
		desc: Oldschool PC/DOS
		storageTags: [ "retro_pc_dos", "retro_pc_bbs" ]
	}
}

The above example defines an area called "Retro PC" which is referenced via the area tag of retro_pc. Two storage tags are used: retro_pc_dos, and retro_pc_bbs. These storage tags can be seen in the Storage Tags example above.

Example Configuration

This combines the two concepts described above. When viewing the file areas from ENiGMA½ a user will only see the "Retro PC" area, but the files in the area are stored in the two locations defined in the storageTags section. We also show a uploads area. Uploads are allowed due to the ACS block. See Uploads for more information.

fileBase: {
	areaStoragePrefix: /enigma-bbs/file_base

	storageTags: {
		retro_pc_dos: "dos"
		retro_pc_bbs: "pc/bbs"
	}

	areas: {
		retro_pc: {
			name: Retro PC
			desc: Oldschool PC/DOS
			storageTags: [ "retro_pc_dos", "retro_pc_bbs" ]
		}

		uploads: {
			name: Uploads
			desc: User uploads
			acs: {
				// allow any user to upload here
				write: GM[users]
			}
			storageTags: [ "user_uploads" ]
		}
	}
}