sbbs/load/defs.js

163 lines
5.1 KiB
JavaScript

require('smbdefs.js','MSG_DELETE');
require('sbbsdefs.js','SUB_FIDO');
load('string.js');
load('lz-string.js');
/**
* ANSItex definitions
*/
/* Our home on disk */
const ANSITEX_HOME = system.mods_dir+'ansitex';
/* Frames location */
const FRAMES_HOME = ANSITEX_HOME+'/text/';
/* Load frames from msgbase */
const FRAMES_MSG_BASE = 'vtx_data';
/* Load frames from files */
const FRAMES_MSG_FILES = true;
const FRAMES_EOF_MARKER = "\r\n=== EOF";
const PAGE_LENGTH = 4; // The size of our page tag as stored in the msgbase for echomail/netmail
const NUMERIC_REGEX = /^[0-9]*$/;
/* Unit of cost */
const FRAME_COSTUNIT = 'c';
/** ACTIONS **/
/* Exit the script */
const ACTION_EXIT = 99;
/* Reload the current frame */
const ACTION_RELOAD = 1;
/* Goto a specific frame */
const ACTION_GOTO = 2;
/* Goto previous frame */
const ACTION_BACKUP = 3;
/* Goto next frame */
const ACTION_NEXT = 4;
/* Terminate the session */
const ACTION_TERMINATE = 5;
/* Submit form contents */
const ACTION_SUBMITRF = 6;
/* Star command entry */
const ACTION_STAR = 7;
/* Edit a frame */
const ACTION_EDIT = 8;
/** MODES **/
/* Typing * command on baseline */
const MODE_BL = 1;
/* Field Input */
const MODE_FIELD = 2;
/* Asking if form should be submitted */
const MODE_SUBMITRF = 3;
/* Response frame not sent */
const MODE_RFNOTSENT = 4;
/* Response frame sent */
const MODE_RFSENT = 5;
/* Response frame error */
const MODE_RFERROR = 6;
/** FRAME TYPES **/
// @todo Change these to bits
/* Information Frame, requires no response after viewed */
const FRAME_TYPE_INFO = 0; //'i';
/* Terminate Frame, contents displayed and then carrier dropped */
const FRAME_TYPE_TERMINATE = 15; //'t';
/**
* Frame the calls an External Method
* Contents indicate the method to be called with arguments
*/
const FRAME_TYPE_EXTERNAL = 13; //'x';
/**
* Frame calls a door
* Contents indicate the name of the door
*/
const FRAME_TYPE_DOOR = 11; //'X';
/**
* Frame renders a BBS from sbbslist
* Contents can be:
* + preview(bbs) - to show the BBS preview display
* + telnet(bbs) - to telgate to the BBS
*/
const FRAME_TYPE_BBS = 'b';
/**
* Response frame, input fields are embedded in the frame and after input the
* response will be submitted to the Service Provider, or to a method
*/
const FRAME_TYPE_RESPONSE = 1; //'r';
/* Login frame, enables the user to authenticate to the system, or to a CUG */
const FRAME_TYPE_LOGIN = 12; //'l';
/* Mail template frames - mail templates will have the user's stats for the area passed to render() */
const FRAME_TYPE_MAIL_TEMPLATE = 'm';
/* Frame is a message */
const FRAME_TYPE_MESSAGE = 2; // 'M';
const FRAME_TYPE_SYSTEM = 14;
/* Disable *# going backwards for the following frames */
const FRAMES_NO_HISTORY = ['980a','98b','981a','982a','983a','998a'];
/* Frames prefixed with this are owned by the system */
const SYSTEM_OWNER = 9;
// @todo can we get this from the message base?
const SYSTEM_ZONE = 516;
/* Time to wait for a key press */
const INACTIVE_TIMEOUT = 100000;
/* Idle time for un-authenticated users */
const INACTIVE_NOLOGIN = 30000;
/* Idle time for authenticated users */
const INACTIVE_LOGIN = 5*60000;
/* Home Frame */
const FRAME_HOME = {frame: '1',index: 'a'};
/* Login Frame */
const FRAME_LOGIN = {frame: '98',index: 'a'};
/* Registration Frame */
const FRAME_REGISTER = {frame: '981',index: 'a'};
/* SQRL Login */
const FRAME_SQRL = {frame: '982',index: 'a'};
/* Login Failed */
const FRAME_LOGIN_FAILED = {frame: '983',index: 'a'};
/* Home page after authentication */
const FRAME_HOME_AUTH = {frame: '98',index: 'b'};
/* Home page for initial connection */
const FRAME_HOME_CONNECT = {frame: '980',index: 'a'};
const FRAME_SYSTEM_ERROR = {frame: '998',index: 'a'};
/* Attributes saved/loaded from files */
const FRAME_SAVE_ATTRS = [
'content', // raw source content of a frame (as stored in vtx/tex files)
'cost', // integer, frame cost
'date', // date, date frame created
'dynamic_fields', // array of fields // @todo deprecate and work these out when loading and parsing a frame
'frame', // Page ID,
'index', // Page index,
'input_fields', // array of fields // @todo deprecate and work these out when loading and parsing a frame
'isAccessible', // boolean // @todo deprecate and merge into 'state'
'isPublic', // boolean // @todo deprecate and merge into 'state'
'key', // array, representing our key actions (0-9)
'state', // integer, representing type, accessible and public status
'type', // frame type // @todo deprecate and merge into 'state'
'version', // frame version (1)
'window' // processed frame data
];
/* The page that has our echomail area reading template */
const MAIL_TEMPLATE_FRAME = {frame: '199',index: 'a'};
/* The page that has our echomail area summary template */
const MAIL_TEMPLATE_AREA_SUMMARY = {frame: '198',index: 'a'};
// The maximum size (length) of embedded dynamic fields in frames
const DYNAMIC_FIELD_SIZE_MAX = 50;
/** ESCAPE CODES **/
const ESC = '\x1b';
const FIELD_PASSWORD_MASK = '*';
const FIELD_TEXT = 't';
const FIELD_PASSWORD = 'p';