enigma-bbs/docs/configuration/acs.md

2.8 KiB

layout title
page Access Condition System (ACS)

Access Condition System (ACS)

ENiGMA½ uses an Access Condition System (ACS) that is both familure to oldschool BBS operators and has it's own style. With ACS, SysOp's are able to control access to various areas of the system based on various conditions such as group membership, connection type, etc. Various touch points in the system are configured to allow for acs checks. In some cases ACS is a simple boolean check while others (via ACS blocks) allow to define what conditions must be true for certain rights such as read and write (though others exist as well).

ACS Codes

The following are ACS codes available as of this writing:

Code Condition
LC Connection is local
AG_age_ User's age is >= age
AS_status_, AS[status,...] User's account status is group or one of [group,...]
EC_encoding_ Terminal encoding is set to encoding where 0 is CP437 and 1 is UTF-8
GM[group,...] User belongs to one of [group,...]
NN_node_ Current node is node
NP_posts_ User's number of message posts is >= posts
NC_calls_ User's number of calls is >= calls
SC Connection is considered secure (SSL, secure WebSockets, etc.)
TH_height_ Terminal height is >= height
TW_width_ Terminal width is >= width
TM[themeId,...] User's current theme ID is one of [themeId,...] (e.g. luciano_blocktronics)
TT[termType,...] User's current terminal type is one of [termType,...] (ANSI-BBS, utf8, xterm, etc.)
ID_n_, ID[id,...] User's ID is id or oen of [id,...]
WD_n_, WD[weekDay,...] Current day of week is weekDay or one of [weekDay,...] where 0 is Sunday, 1 is Monday, and so on.

* Many more ACS codes are planned for the near future.

ACS Strings

ACS strings are one or more ACS codes in addition to some basic language semantics.

The following logical operators are supported:

  • ! NOT
  • | OR
  • & AND (this is the default)

ENiGMA½ also supports groupings using ( and ). Lastly, some ACS codes allow for lists of acceptable values using [ and ] — for example, GM[users,sysops].

Examples

  • NC2: User must have called two more more times for the check to return true (to pass)
  • ID1: User must be ID 1 (the +op)
  • GM[elite,power]: User must be a member of the elite or power user group (they could be both)
  • ID1|GM[co-op]: User must be ID 1 (SysOp!) or belong to the co-op group
  • !TH24: Terminal height must NOT be 24

ACS Touch Points

The following touch points exist in the system. Many more are planned:

  • Message conferences and areas
  • File base areas
  • Menus within menu.hjson

See the specific areas documentation for information on available ACS checks.