Message Base

General Information

In ENiGMA½, a message base is divided into two logical grouping components: Message Conferences and Areas. Message conferences are top level containers while areas are for a specific topic. Messages are always stored internally with a area tag.

Conferences

Message Conferences are the top level container for 1:n Message Areas via the messageConferences block in config.hjson. A common setup may include a local conference and one or more conferences each dedicated to a particular message network such as fsxNet, ArakNet, etc.

Each conference is represented by a entry under messageConferences. Each entries top level key is it’s conference tag.

:bulb: It is highly recommended to use snake_case style message conference tags and area tags!

Config Item Required Description
name :+1: Friendly conference name
desc :+1: Friendly conference description.
sort :-1: Set to a number to override the default alpha-numeric sort order based on the name field.
default :-1: Specify true to make this the default conference (e.g. assigned to new users)
areas :+1: Container of 1:n areas described below
acs :-1: A standard ACS block. See ACS below.

ACS

An optional standard ACS block can be supplied with the following rules:

  • read: ACS required to read (see) this conference. Defaults to GM[users].
  • write: ACS required to write (post) to this conference. Defaults to GM[users].

Example

{
  messageConferences: {
    local: { // conference tag
      name: Local
      desc: Local discussion
      sort: 1
      default: true
      acs: {
        read: GM[users] // default
      }
    }
  }
}

Message Areas

Message Areas are topic specific containers for messages that live within a particular conference. The top level key for an area sets it’s area tag. For example, “General Discussion” may live under a Local conference while an fsxNet conference may contain “BBS Discussion”.

Config Item Required Description
name :+1: Friendly area name.
desc :+1: Friendly area description.
sort :-1: Set to a number to override the default alpha-numeric sort order based on the name field.
default :-1: Specify true to make this the default area (e.g. assigned to new users)
acs :-1: A standard ACS block. See ACS below.
maxMessages :-1: The maximum number of messages to keep in the area. Defaults to 1024.
maxAgeDays :-1: The maximum age of messages to keep in the area. Defaults to 0, which means unlimited.
autoSignatures :-1: Set to false to disable auto-signatures in this area.
realNames :-1: Set to true to use real names in this area.

The default values for maxMessages and maxAgeDays can be changed globally in core/config_default.js, they’re located in the section messageAreaDefaults. The same file also defines several default events to be scheduled, which are located under eventScheduler. For example, the trimMessageAreas event is run every 24 hours and defines that the action trimMessageAreasScheduledEvent is performed.

ACS

An optional standard ACS block can be supplied with the following rules:

  • read: ACS required to read (see) this area. Defaults to GM[users].
  • write: ACS required to write (post) to this area. Defaults to GM[users].

Example

messageConferences: {
  local: {
    // ... see above ...
    areas: {
      enigma_dev: { // Area tag - required elsewhere!
        name: ENiGMA 1/2 Development
        desc: ENiGMA 1/2 development and discussion!
        sort: 1
        default: true
        maxMessages: 2000 // keep at most 2000 messages
        maxAgeDays: 365   // delete anything older than 1 year
        acs: {
          read: GM[users] // default
          write: GM[l33t] // super elite ENiGMA 1/2 users!
        }
      }
    }
  }
}

Importing

FidoNet style .na files as well as legacy AREAS.BBS files in common formats can be imported using oputil.js mb import-areas. See The oputil CLI for more information and usage.