Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

This is an old revision of the document!


Access Requirements

Access Requirement Strings (ARS) are used to specify the requirements of a specific Synchronet user account in order to have access to speicific or functions of a Synchronet BBS.

Overview

You will find in SCFG and other Synchronet configuration files, places where the sysop may specify requirements to access a specific area or feature of the BBS. Usually these items will have ARS (Access Requirement String) or just “Requirements” as part of the name.

Most Access Requirements are “default allow”, meaning, if there are no requirements specified (i.e. the requirement string is blank), then the default behavior is allow access to that specific area/function to any user.

Some Requirement strings are “default deny”, meaning, if there are no requirements specified (i.e. the requirement string is blank), then no user will match that requirement. Examples of “default deny” requirements:

  • Operator Requirements
  • Exemption Requirements
  • Moderated Posting User
  • Pre-pack QWK Requirements

Configuration

SCFG has an interactive Requirements dialog screen which allows easy addition or clearing of the most common requirement parameters.

╔══════════════════════════════════════════════════════════╗
║                  Main Group Requirements                 ║
╠══════════════════════════════════════════════════════════╣
║ │Requirement String ()                                   ║
║ │Clear Requirements                                      ║
║ │Set Required Level                                      ║
║ │Set Required Flag                                       ║
║ │Set Required Age                                        ║
║ │Set Required Sex                                        ║
║ │Set Required Connect Rate                               ║
║ │Set Required Post/Call Ratio (percentage)               ║
║ │Set Required Number of Credits                          ║
║ │Set Required Upload/Download Byte Ratio (percentage)    ║
║ │Set Required Upload/Download File Ratio (percentage)    ║
║ │Set Required Time of Day                                ║
║ │Set Required Day of Week                                ║
║ │Set Required Node Number                                ║
║ │Set Required User Number                                ║
║ │Set Required Time Remaining                             ║
║ │Set Required Days Till Expiration                       ║
╚══════════════════════════════════════════════════════════╝

From this dialog screen, you can edit the Requirement String directly, or use the additional menu options to add the most common requirement parameters (and values) or clear the requirement string.

Syntax

Access Requirement Strings can consist entirely of English keywords and numbers or use short-hand symbols to fit a large number of security requirements into the limited space allowed for access requirement strings. Short-hand symbols and key words may be used interchangeably and combined in the same string. For clarity, it is suggested you use the keywords whenever possible. The string syntax is as follows:

usage: [not] [param] [not] [equal] <value> [or] [and] [...]

where: not      is the word "NOT" or the symbol '!' to specify reverse logic
       param    is one of any keywords (or short-hand symbols) that specifies
                a specific required parameter (default is LEVEL)
       equal    is the word "EQUAL", "EQUALS", the words "EQUAL TO", or the
                symbol '=' to specify exact equality required
       value    the required value (for either minimum requirement or equality)
       or       the word "OR" or the symbol '|' used to specify that ANY of two
                or more parameter values MAY be met to match the requirement
       and      the word "AND" or the symbol '&' may be used for clarity in
                reading when specifying that two or more parameter values MUST
                be met to match the requirement

Logic Operators

Logic operators may exist between one or more Boolean or Value Parameters. When no logic operator is specified, the default logic requirement is GREATER_OR_EQUAL and when multiple parameters are specified, AND (i.e. all the specified parameters must be evaluated to a TRUE condition).

Keyword Symbol Description
AND & More than one requirement (optional)
NOT ! Logical negation (e.g. NOT EQUAL)
EQUAL = Equality required
OR FIXME Either of two or more parameters is required
( Begin nested requirement
) End nested requirement

Boolean Parameters

Boolean parameters are evaluated as true or false without any specified value for comparison.

Keyword Symbol Description
ACTIVE User has an active account (not marked DELETED or INACTIVE)
ANSI $[ User has ANSI terminal
DELETED User account is marked DELETED
DOS BBS is running on MS-DOS
EXPERT User is in expert menu mode
GUEST User has the G (Guest) restriction
INACTIVE User account is marked INACTIVE
LINUX BBS is running on Linux
LOCAL $G Local execution (no remote user)
OS2 BBS is running on OS/2
QNODE User has the Q (QWK node) restriction
QUIET User is in quiet mode
RIP $* User is connected with a RIP-compatible terminal
SYSOP User has level 90+ or is a temporary sysop
WIN32 BBS is running on Windows
WIP User is connected with a WIP-compatible terminal
UNIX BBS is running on a UNIX clone

Value Parameters

Value parameters require a value (e.g. word or number) following the parameter keyword or symbol. This parameter is compared against the criteria of the system or the user using the current comparison logic.

Keyword Symbol Description
AGE $A User's age (years since birthdate, 0-255)
BPS $B User's current connect rate (bps)
CREDIT $C User's number of credits in Kilobytes (0-65535)
DAY $W Day of the week (Sun, Mon, Tue, etc. or 0-6)
DIR $J Current file directory (Internal code or 1-65535)
DLS Total number of files downloaded by user
DLK Total number of kilobytes in files downloaded by user
DLM Total number of megabytes in files downloaded by user
EXEMPT $X Exemptions flag (A-Z)
EXPIRE $E Days till user account expires (0-65535)
FILE_CMDS Number of executed file menu commands (0-65535)
FLAG $F User's flag (1-4) and (A-Z)
GROUP $M Current message group (1-65535)
HOST Client hostname
IP Client IP address
LASTON $Y Days since last logon (0-65535)
LEVEL $L User's level (0-99)
LIB $I Current file library (1-65535)
LOCAL $G Logged on locally (no value argument)
LOGONS Number of user logons
MAIN_CMDS Number of executed main menu commands (0-65535)
NODE $N Current node (1-250)
PCR $P User's post/call ratio (0-100)
PROT Protocol in use (e.g. Telnet, SSH, HTTP, etc.)
RANDOM $Q Random number between 0 and value argument (0-65535)
REST $Z Restrictions flag (A-Z)
SEX $S User's sex/gender (M or F)
SHELL User's selected command shell internal code
SUB $H Current message sub-board (Internal code or 1-65535)
TIME $T Time of day (HH:MM, 0-23:59)
TLEFT $R User's time left online (minutes, 0-255)
TUSED $O User's time online this call (minutes, 0-255)
UDR $K User's upload/download ratio (0-100)
UDFR $D User's upload/download file ratio (0-100)
ULS Total number of files uploaded by user
ULK Total number of kilobytes in files uploaded by user
ULM Total number of megabytes in files uploaded by user
USER $U User's number (1-xxxx)

Examples

See Also