Synchronet JavaScript Object Model Reference

Generated for Synchronet v3.17b, compiled Jan 2 2019 03:01
Property and Method version numbers (when available) indicate the Synchronet version when the item was added or modified.
  1. [+]  global object
  2. [+]  js object
  3. [+]  system object
  4. [+]  server object
  5. [+]  client object
  6. [+]  user object
  7. [+]  bbs object
  8. [+]  console object
  9. [+]  msg_area object
  10. [+]  file_area object
  11. [+]  xtrn_area object
  12. [+]  uifc object
  13. [+]  MsgBase class
  14. [+]  File class
  15. [+]  Queue class
  16. [+]  Socket class
  17. [+]  COM class
  18. [+]  CryptContext class
  19. [+]  CryptKeyset class
  20. [+]  conio object

global object
Top-level functions and properties (common to all servers and services) - introduced in v3.10

global methods
Name Returns Usage Ver Description
logstringlog([level,] value [,value]) 3.11 add a line of text to the server and/or system log, values are typically string constants or variables, level is the debug level/priority (default: LOG_INFO)
readstringread([count]) 3.11 read up to count characters from input stream
readlnstringreadln([count]) 3.11 read a single line, up to count characters, from input stream
writevoidwrite(value [,value]) 3.11 send one or more values (typically strings) to the server output
write_rawvoidwrite_raw(value [,value]) 3.14 send a stream of bytes (possibly containing NULLs or special control code sequences) to the server output
writelnvoidwriteln(value [,value]) 3.11 send a line of text to the console or event log with automatic line termination (CRLF), values are typically string constants or variables (AKA print)
printfstringprintf(string format [,value][,value]) 3.10 print a formatted string - CAUTION: for experienced C programmers ONLY
alertvoidalert(value) 3.10 print an alert message (ala client-side JS)
promptstringprompt([value]) 3.10 displays a prompt (value) and returns a string of user input (ala clent-side JS)
confirmbooleanconfirm(value) 3.10 displays a Yes/No prompt and returns true or false based on user's confirmation (ala client-side JS, true = yes)
denybooleandeny(value) 3.15b displays a No/Yes prompt and returns true or false based on user's denial (true = no)
exitvoidexit([exit_code]) 3.11 stop script execution, optionally setting the global property exit_code to the specified numeric value
loadundefinedload([bool background or object scope,] string filename [,args]) 3.12 load and execute a JavaScript module (filename), optionally specifying a target scope object (default: this) and a list of arguments to pass to the module (as argv). Returns the result (last executed statement) of the executed script or a newly created Queue object if background is true).

Background (added in v3.12):
If background is true, the loaded script runs in the background (in a child thread) but may communicate with the parent script/thread by reading from and/or writing to the parent_queue (an automatically created Queue object). The result (last executed statement) of the executed script (or the optional exit_code passed to the exit() function) will be automatically written to the parent_queue which may be read later by the parent script (using load_result.read(), for example).
mswaitnumbermswait([milliseconds=1]) 3.13 millisecond wait/sleep routine (AKA sleep), returns number of elapsed clock ticks (in v3.13)
yieldvoidyield([forced=true]) 3.11 release current thread time-slice, a forced yield will yield to all other pending tasks (lowering CPU utilization), a non-forced yield will yield only to pending tasks of equal or higher priority. forced defaults to true
randomnumberrandom(max_number=100) 3.10 return random integer between 0 and max_number-1
timenumbertime() 3.10 return current time and date in Unix (time_t) format (number of seconds since Jan-01-1970)
beepvoidbeep([frequency=500] [,duration=500]) 3.10 produce a tone on the local speaker at specified frequency for specified duration (in milliseconds)
soundbooleansound([filename]) 3.10 play a waveform (.wav) sound file (currently, on Windows platforms only)
ctrlstringctrl(number or string) 3.11 return ASCII control character representing character passed - Example: ctrl('C') returns ''
asciiundefinedascii([string text] or [number value]) 3.10 convert single character to numeric ASCII value or vice-versa (returns number OR string)
ascii_strstringascii_str(text) 3.10 convert extended-ASCII in text string to plain ASCII, returns modified string
strip_ctrlstringstrip_ctrl(text) 3.10 strip control characters from string, returns modified string
strip_exasciistringstrip_exascii(text) 3.10 strip extended-ASCII characters from string, returns modified string
skipspstringskipsp(text) 3.15 skip (trim) white-space characters off beginning of string, returns modified string
truncspstringtruncsp(text) 3.10 truncate (trim) white-space characters off end of string, returns modified string
truncstrstringtruncstr(text, charset) 3.10 truncate (trim) string at first char in charset, returns modified string
lfexpandstringlfexpand(text) 3.10 expand line-feeds (LF) to carriage-return/line-feeds (CRLF), returns modified string
wildmatchbooleanwildmatch([case_sensitive=false,] string [,pattern='*'] [,path=false]) 3.14 returns true if the string matches the wildcard pattern (wildcards supported are '*' and '?'), if path is true, '*' will not match path delimeter characters (e.g. '/')
backslashstringbackslash(path) 3.12 returns directory path with trailing (platform-specific) path delimeter (i.e. "slash" or "backslash")
fullpathstringfullpath(path) 3.15 Creates an absolute or full path name for the specified relative path name.
file_getnamestringfile_getname(path/filename) 3.11 returns filename portion of passed path string
file_getextstringfile_getext(path/filename) 3.11 returns file extension portion of passed path/filename string (including '.') or undefined if no extension is found
file_getcasestringfile_getcase(path/filename) 3.11 returns correct case of filename (long version of filename on Windows) or undefined if the file doesn't exist
file_cfgnamestringfile_cfgname(path, filename) 3.12 returns completed configuration filename from supplied path and filename, optionally including the local hostname (e.g. path/file.host.domain.ext or path/file.host.ext) if such a variation of the filename exists
file_getdosnamestringfile_getdosname(path/filename) 3.15 returns DOS-compatible (Micros~1 shortened) version of specified path/filename(on Windows only)
returns unmodified path/filename on other platforms
file_existsbooleanfile_exists(path/filename) 3.10 verify a file's existence
file_removebooleanfile_remove(path/filename) 3.10 delete a file
file_removecasebooleanfile_removecase(path/filename) 3.14 delete files case insensitively
file_renamebooleanfile_rename(path/oldname, path/newname) 3.11 rename a file, possibly moving it to another directory in the process
file_copybooleanfile_copy(path/source, path/destination) 3.11 copy a file from one directory or filename to another
file_backupbooleanfile_backup(path/filename [,level=5] [,rename=false]) 3.11 backup the specified filename as filename.number.extension where number is the backup number 0 through level-1 (default backup level is 5), if rename is true, the original file is renamed instead of copied (default is false)
file_isdirbooleanfile_isdir(path/filename) 3.10 check if specified filename is a directory
file_attribnumberfile_attrib(path/filename) 3.10 get a file's permissions/attributes
file_datenumberfile_date(path/filename) 3.10 get a file's last modified date/time (in time_t format)
file_cdatenumberfile_cdate(path/filename) 3.17 get a file's creation date/time (in time_t format)
file_sizenumberfile_size(path/filename) 3.10 get a file's length (in bytes)
file_utimebooleanfile_utime(path/filename [,access_time=current] [,mod_time=current]) 3.11 change a file's last accessed and modification date/time (in time_t format), or change to current time
file_touchbooleanfile_touch(path/filename) 3.11 updates a file's last modification date/time to current time, creating an empty file if it doesn't already exist
file_mutexbooleanfile_mutex(path/filename [,text=local_hostname] [,max_age=0]) 3.12 attempts to create an mutual-exclusion (e.g. lock) file, optionally with the contents of text. If a non-zero max_age (supported in v3.13b+) is specified and the lock file exists, but is older than this value (in seconds), it is presumed stale and removed/over-written
file_comparebooleanfile_compare(path/file1, path/file2) 3.14 compare 2 files, returning true if they are identical, false otherwise
directoryarraydirectory(path/pattern [,flags=GLOB_MARK]) 3.10 returns an array of directory entries, pattern is the path and filename or wildcards to search for (e.g. '/subdir/*.txt'), flags is a bitfield of optional glob flags (default is GLOB_MARK)
dir_freespacenumberdir_freespace(directory [,unit_size=1]) 3.11 returns the amount of available disk space in the specified directory using the specified unit_size in bytes (default: 1), specify a unit_size of 1024 to return the available space in kilobytes.
disk_sizenumberdisk_size(directory [,unit_size=1]) 3.14 returns the total disk size of the specified directory using the specified unit_size in bytes (default: 1), specify a unit_size of 1024 to return the total disk size in kilobytes.
socket_selectarraysocket_select([array of socket objects or descriptors] [,timeout=0] [,write=false]) 3.11 checks an array of socket objects or descriptors for read or write ability (default is read), default timeout value is 0.0 seconds (immediate timeout), returns an array of 0-based index values into the socket array, representing the sockets that were ready for reading or writing, or null on error
mkdirbooleanmkdir(path/directory) 3.10 make a directory
mkpathbooleanmkpath(path/directory) 3.15 make a path to a directory (creating all necessary sub-directories)
rmdirbooleanrmdir(path/directory) 3.10 remove a directory
strftimestringstrftime(format [,time=current]) 3.10 return a formatted time string (ala C strftime)
formatstringformat(format [,args]) 3.10 return a formatted string (ala the standard C sprintf function)
html_encodestringhtml_encode(text [,ex_ascii=true] [,white_space=true] [,ansi=true] [,ctrl_a=true] [, state (object)]) 3.11 return an HTML-encoded text string (using standard HTML character entities), escaping IBM extended-ASCII, white-space characters, ANSI codes, and CTRL-A codes by default.Optionally storing the current ANSI state in state object
html_decodestringhtml_decode(html) 3.11 return a decoded HTML-encoded text string
word_wrapstringword_wrap(text [,line_length=79 [, orig_line_length=79 [, handle_quotes=true]]]]) 3.11 returns a word-wrapped version of the text string argument optionally handing quotes magically, line_length defaults to 79 orig_line_length defaults to 79 and handle_quotes defaults to true
quote_msgstringquote_msg(text [,line_length=79] [,prefix=" > "]) 3.11 returns a quoted version of the message text string argument, line_length defaults to 79, prefix defaults to " > "
rot13_translatestringrot13_translate(text) 3.11 returns ROT13-translated version of text string (will encode or decode text)
base64_encodestringbase64_encode(text) 3.11 returns base64-encoded version of text string or null on error
base64_decodestringbase64_decode(text) 3.11 returns base64-decoded text string or null on error
crc16_calcnumbercrc16_calc(text) 3.11 calculate and return 16-bit CRC of text string
crc32_calcnumbercrc32_calc(text) 3.11 calculate and return 32-bit CRC of text string
chksum_calcnumberchksum_calc(text) 3.11 calculate and return 32-bit checksum of text string
md5_calcstringmd5_calc(text [,hex=false]) 3.11 calculate and return 128-bit MD5 digest of text string, result encoded in base64 (default) or hexadecimal
resolve_ipstringresolve_ip(hostname [,array=false]) 3.11 resolve IP address of specified hostname (AKA gethostbyname). If array is true (added in 3.17), will return an array of all addresses rather than just the first one
resolve_hoststringresolve_host(ip_address) 3.11 resolve hostname of specified IP address (AKA gethostbyaddr)
netaddr_typenumbernetaddr_type(email_address) 3.12 returns the proper message net_type for the specified email_address, (e.g. NET_INTERNET for Internet e-mail or NET_NONE for local e-mail)
list_named_queuesarraylist_named_queues() 3.12 returns an array of named queues (created with the Queue constructor)
flags_strundefinedflags_str([string] or [number]) 3.13 convert a string of security flags (letters) into their numeric value or vice-versa (returns number OR string) - (added in v3.13)
requireundefinedrequire([object scope,] string filename, propname [,args]) 3.17 load and execute a JavaScript module (filename), optionally specifying a target scope object (default: this) and a list of arguments to pass to the module (as argv) IF AND ONLY IF the property named propname is not defined in the target scope (a defined symbol with a value of undefined will not cause the script to be loaded). Returns the result (last executed statement) of the executed script or null if the script is not executed.

global properties
Name Type Ver Description
argcnumberN/Anumber of arguments passed to the script
argvarrayN/Aarray of argument strings (argv.length == argc)
errnonumberN/Alast system error number
errno_strstringN/Adescription of last system error
socket_errnonumberN/Alast socket-related error number (same as errno on Unix platforms)

js object
JavaScript engine internal control object - introduced in v3.11

js methods
Name Returns Usage Ver Description
evalundefinedjs.eval(script) 3.11 evaluate a JavaScript string in its own (secure) context, returning the result
gcvoidjs.gc(forced=true) 3.11 perform a garbage collection operation (freeing memory for unused allocated objects), if forced is true (the default) a garbage collection is always performed, otherwise it is only performed if deemed appropriate by the JavaScript engine
on_exitvoidjs.on_exit(to_eval) 3.13 add a string to evaluate/execute (LIFO stack) upon script's termination
report_errorvoidjs.report_error(error [,fatal=false]) 3.13 report an error using the standard JavaScript error reporting mechanism (including script filename and line number), if fatal is true, immediately terminates script
get_parentobjectjs.get_parent(object) 3.14 return the parent of the specified object
get_sizenumberjs.get_size([object]) 3.16 return the size in bytes the object uses in memory (forces GC)
flatten_stringvoidjs.flatten_string([string]) 3.16 flattens a string, optimizing allocated memory used for concatenated strings

js properties
Name Type Ver Description
versionstring 3.11 JavaScript engine version information (AKA system.js_version)
auto_terminateboolean 3.11 set to false to disable the automatic termination of the script upon external request
terminatedboolean 3.11 termination has been requested (stop execution as soon as possible)
counternumber 3.16 number of operation callbacks performed in this runtime
time_limitnumber 3.16 maximum number of operation callbacks, used for infinite-loop detection (0=disabled)
yield_intervalnumber 3.11 interval of periodic time-slice yields (lower number=higher frequency, 0=disabled)
gc_intervalnumber 3.11 interval of periodic garbage collection attempts (lower number=higher frequency, 0=disabled)
gc_attemptsnumber 3.11 number of garbage collections attempted in this runtime - READ ONLY
globalobject 3.14 global (top level) object - READ ONLY
load_path_listobject N/A load() search path array.
For relative load paths (e.g. not beginning with '/' or '\'), the path is assumed to be a sub-directory of the (configurable) mods or exec directories and is searched accordingly. So, by default, load("somefile.js") will search in this order:
mods/load/somefile.js
exec/load/somefile.js
mods/somefile.js
exec/somefile.js
exec_pathstring N/A full path and filename of JS file executed
exec_filestring N/A JS filename executed (with no path)
exec_dirstring N/A directory of executed JS file
startup_dirstring N/A Either the configured startup directory in SCFG (for externals) or the cwd when jsexec is started
scopeobject N/A global scope for this script

system object
Global system-related properties and methods - introduced in v3.10

system methods
Name Returns Usage Ver Description
usernamestringsystem.username(number) 3.11 returns name of user in specified user record number, or empty string if not found
aliasstringsystem.alias(alias) 3.10 returns name of user that matches alias (if found in ctrl/alias.cfg)
matchusernumbersystem.matchuser(username [,sysop_alias=true]) 3.10 exact user name matching, returns number of user whose name/alias matches username or 0 if not found, matches well-known sysop aliases by default
matchuserdatanumbersystem.matchuserdata(field, data [,usernumber, match_next=false]) 3.10 search user database for data in a specific field (see U_* in sbbsdefs.js), returns first matching user record number, optional usernumber specifies user record to skip, or record at which to begin searching if optional match_next is true
trashcanbooleansystem.trashcan(basename, find_string) 3.10 search text/basename.can for pseudo-regexp
findstrbooleansystem.findstr(path/filename, find_string) 3.10 search any file for pseudo-regexp
zonestrstringsystem.zonestr([timezone=local]) 3.10 convert time zone integer to string, defaults to system timezone if timezone not specified
timestrstringsystem.timestr([time=current]) 3.10 convert time_t integer into a time string, defaults to current time if time not specified
datestrstringsystem.datestr([time=current]) 3.10 convert time_t integer into a date string (in either MM/DD/YY or DD/MM/YY format), defaults to current date if time not specified. If time is a string in the appropriate format, returns the time_t.
secondstrstringsystem.secondstr(seconds) 3.10 convert elapsed time in seconds into a string in hh:mm:ss format
spamlogbooleansystem.spamlog([protocol, action, reason, host, ip, to, from]) 3.10 log a suspected SPAM attempt
hacklogbooleansystem.hacklog([protocol, user, text, host, ip, port]) 3.10 log a suspected hack attempt
filter_ipbooleansystem.filter_ip([protocol, reason, host, ip, username, filename]) 3.11 add an IP address (with comment) to an IP filter file. If filename is not specified, the ip.can file is used
get_node_messagestringsystem.get_node_message(node_number) 3.11 read any messages waiting for the specified node and return in a single string
put_node_messagebooleansystem.put_node_message(node_number, message_text) 3.10 send a node a short text message, delivered immediately
get_telegramstringsystem.get_telegram(user_number) 3.11 returns any short text messages waiting for the specified user
put_telegrambooleansystem.put_telegram(user_number, message_text) 3.10 sends a user a short text message, delivered immediately or during next logon
new_userobjectsystem.new_user(name/alias [,client object]) 3.10 creates a new user record, returns a new User object representing the new user account, on success.
returns an numeric error code on failure (optional client object argument added in v3.15a. As of 3.16c, the global client object is used if the argument is omitted)
del_userbooleansystem.del_user(number) 3.16 delete the specified user account
execnumbersystem.exec(command-line) 3.11 executes a native system/shell command-line, returns 0 on success
popenarraysystem.popen(command-line) 3.11 executes a native system/shell command-line, returns array of captured output lines on success (only functional on UNIX systems)
check_syspassbooleansystem.check_syspass(password) 3.11 compares the supplied password against the system password and returns true if it matches
check_namebooleansystem.check_name(name/alias) 3.15 checks that the provided name/alias string is suitable for a new user account, returns true if it is valid
check_pidbooleansystem.check_pid(process-ID) 3.15 checks that the provided process ID is a valid executing process on the system, returns true if it is valid
terminate_pidbooleansystem.terminate_pid(process-ID) 3.15 terminates executing process on the system with the specified process ID, returns true on success

system properties
Name Type Ver Description
namestring 3.10 BBS name
operatorstring 3.10 operator name
qwk_idstring 3.10 system QWK-ID (for QWK packets)
settingsnumber 3.10 settings bitfield (see SYS_* in sbbsdefs.js for bit definitions)
psnamestring 3.10 PostLink name
psnumnumber 3.10 PostLink system number
inet_addrstring 3.11 Internet address (host or domain name)
locationstring 3.10 location (city, state)
timezonenumber 3.10 timezone (use system.zonestr() to get string representation)
pwdaysnumber 3.10 days between forced password changes
deldaysnumber 3.10 days to preserve deleted user records
lastusernumber 3.11 last user record number in user database (includes deleted and inactive user records)
lastuseronstring 3.10 name of last user to logoff
freediskspacenumber 3.10 amount of free disk space (in bytes)
freediskspaceknumber 3.10 amount of free disk space (in kilobytes)
nodesnumber 3.10 total number of BBS nodes
lastnodenumber 3.10 last displayable node number
newuser_passwordstring 3.10 new user password
newuser_magic_wordstring 3.10 new user magic word
newuser_levelnumber 3.10 new user level
newuser_flags1number 3.10 new user flag set #1
newuser_flags2number 3.10 new user flag set #2
newuser_flags3number 3.10 new user flag set #3
newuser_flags4number 3.10 new user flag set #4
newuser_restrictionsnumber 3.10 new user restriction flags
newuser_exemptionsnumber 3.10 new user exemption flags
newuser_creditsnumber 3.10 new user credits
newuser_minutesnumber 3.10 new user extra minutes
newuser_command_shellstring 3.10 new user command shell
newuser_editorstring 3.10 new user external editor
newuser_settingsnumber 3.10 new user settings
newuser_download_protocolstring 3.10 new user file transfer protocol (command key)
newuser_expiration_daysnumber 3.10 new user expiration days
newuser_questionsnumber 3.10 new user questions bitfield (see UQ_* in sbbsdefs.js for bit definitions)
expired_levelnumber 3.10 expired user level
expired_flags1number 3.10 expired user flag set #1
expired_flags2number 3.10 expired user flag set #2
expired_flags3number 3.10 expired user flag set #3
expired_flags4number 3.10 expired user flag set #4
expired_restrictionsnumber 3.10 expired user restriction flags
expired_exemptionsnumber 3.10 expired user exemption flags
node_dirstring 3.10 node directory
ctrl_dirstring 3.10 control file directory
data_dirstring 3.10 data file directory
text_dirstring 3.10 text file directory
temp_dirstring 3.10 temporary file directory
exec_dirstring 3.10 executable file directory
mods_dirstring 3.10 modified modules directory (optional)
logs_dirstring 3.10 log file directory
devnullstring 3.11 platform-specific "null" device filename
temp_pathstring 3.12 platform-specific temporary file directory
cmd_shellstring 3.14 platform-specific command processor/shell
clock_ticksnumber 3.11 amount of elapsed processor time in clock 'ticks'
clock_ticks_per_secondnumber 3.11 number of clock ticks per second
timernumber 3.14 high-resolution timer, in seconds (fractional seconds supported)
local_host_namestring 3.11 private host name that uniquely identifies this system on the local network
host_namestring N/A public host name that uniquely identifies this system on the Internet (usually the same as system.inet_addr)
socket_libstring N/A socket library version information
uptimenumber N/A time/date system was brought online (in time_t format)
full_versionstring N/A Synchronet full version information (e.g. '3.10k Beta Debug')
compiled_whenstring N/A date and time compiled
versionstring N/A Synchronet version number (e.g. '3.10')
revisionstring N/A Synchronet revision letter (e.g. 'k')
beta_versionstring N/A Synchronet alpha/beta designation (e.g. ' beta')
version_noticestring N/A Synchronet version notice (includes version and platform)
version_numnumber N/A Synchronet version number in decimal (e.g. 31301 for v3.13b)
version_hexnumber N/A Synchronet version number in hexadecimal (e.g. 0x31301 for v3.13b)
platformstring N/A platform description (e.g. 'Win32', 'Linux', 'FreeBSD')
architecturestring N/A architecture description (e.g. 'i386', 'i686', 'x86_64')
msgbase_libstring N/A message base library version information
compiled_withstring N/A compiler used to build Synchronet
copyrightstring N/A Synchronet copyright display
js_versionstring N/A JavaScript engine version information
os_versionstring N/A operating system version information
fido_addr_listobject N/A array of FidoNet Technology Network (FTN) addresses associated with this system

system.stats object
System statistics - introduced in v3.10

system.stats properties
Name Type Ver Description
total_logonsnumber 3.10 total logons
logons_todaynumber 3.10 logons today
total_timeonnumber 3.10 total time used
timeon_todaynumber 3.10 time used today
total_filesnumber 3.10 total files in file bases
files_uploaded_todaynumber 3.10 files uploaded today
bytes_uploaded_todaynumber 3.10 bytes uploaded today
files_downloaded_todaynumber 3.10 files downloaded today
bytes_downloaded_todaynumber 3.10 bytes downloaded today
total_messagesnumber 3.10 total messages in message bases
messages_posted_todaynumber 3.10 messages posted today
total_emailnumber 3.10 total messages in mail base
email_sent_todaynumber 3.10 email sent today
total_feedbacknumber 3.10 total feedback messages waiting
feedback_sent_todaynumber 3.10 feedback sent today
total_usersnumber 3.10 total user records (does not include deleted or inactive user records)
new_users_todaynumber 3.10 new users today

system.node_list array
BBS node listing - introduced in v3.10

system.node_list properties
Name Type Ver Description
statusnumber 3.10 status (see nodedefs.js for valid values)
errorsnumber 3.10 error counter
actionnumber 3.10 current user action (see nodedefs.js)
useronnumber 3.10 current user number
connectionnumber 3.10 connection speed (0xffff = Telnet or RLogin)
miscnumber 3.10 miscellaneous bitfield (see nodedefs.js)
auxnumber 3.10 auxillary value
extauxnumber 3.10 extended auxillary value
dirstring 3.15 node directory

server object
Server-specifc properties - introduced in v3.10

server properties
Name Type Ver Description
versionstring 3.10 server name and version number
version_detailstring 3.10 detailed version/build information
interface_ip_addressstring 3.11 First bound IPv4 address (0.0.0.0 = ANY) (obsolete since 3.17, see interface_ip_addr_list)
optionsnumber 3.11 bit-field of server-specific startup options
clientsnumber 3.11 number of active clients (if available)
interface_ip_addr_listobject N/A Array of IP addresses of bound network interface (0.0.0.0 = ANY)

client object
Represents a TCP/IP client session - introduced in v3.10

client properties
Name Type Ver Description
socketobject 3.10 instance of Socket class representing client's TCP/IP connection
ip_addressstring 3.10 client's IP address (in dotted-decimal format)
host_namestring 3.10 client's host name (up to 64 characters)
portnumber 3.10 client's TCP or UDP port number
connect_timenumber 3.10 date/time of initial connection (in time_t format)
protocolstring 3.10 protocol description (e.g. 'Telnet', 'FTP', etc.)
user_namestring N/A user's name/alias (if logged in)

user object
Instance of User class, representing current user online - introduced in v3.10

To create a new user object: var u = new User(number)

user methods
Name Returns Usage Ver Description
compare_arsbooleanuser.compare_ars(string ars) 3.10 Verify user meets access requirements string
adjust_creditsbooleanuser.adjust_credits(count) 3.14 Adjust user's credits by count (negative to subtract)
adjust_minutesbooleanuser.adjust_minutes(count) 3.14 Adjust user's extra minutes count (negative to subtract)
posted_messagebooleanuser.posted_message([count]) 3.14 Adjust user's posted-messages statistics by count (default: 1) (negative to subtract)
sent_emailbooleanuser.sent_email([count] [,bool feedback]) 3.14 Adjust user's email/feedback-sent statistics by count (default: 1) (negative to subtract)
uploaded_filebooleanuser.uploaded_file([bytes] [,files]) 3.14 Adjust user's files/bytes-uploaded statistics
downloaded_filebooleanuser.downloaded_file([bytes] [,files]) 3.14 Adjust user's files/bytes-downloaded statistics
get_time_leftnumberuser.get_time_left(start_time) 3.14b Returns the user's available remaining time online, in seconds,
based on the passed start_time value (in time_t format)
Note: this method does not account for pending forced timed events

user properties
Name Type Ver Description
numbernumber 3.10 record number (1-based)
aliasstring 3.10 alias/name
namestring 3.10 real name
handlestring 3.10 chat handle
ip_addressstring 3.10 IP address last logged on from
notestring 3.10 Sysop note (AKA ip_address on 3.16 and before)
host_namestring 3.10 host name last logged on from
computerstring 3.10 AKA host_name
commentstring 3.10 sysop's comment
netmailstring 3.10 external e-mail address
emailstring 3.10 local Internet e-mail address - READ ONLY
addressstring 3.10 street address
locationstring 3.10 location (e.g. city, state)
zipcodestring 3.10 zip/postal code
phonestring 3.10 phone number
birthdatestring 3.10 birth date in either MM/DD/YY or DD/MM/YY format depending on system configuration
agenumber 3.10 calculated age in years - READ ONLY
connectionstring 3.10 connection type (protocol)
modemstring 3.10 AKA connection
screen_rowsnumber 3.10 terminal rows (lines)
genderstring 3.10 gender type (e.g. M or F)
cursubstring 3.10 current/last message sub-board (internal code)
curdirstring 3.10 current/last file directory (internal code)
curxtrnstring 3.10 current/last external program (internal code) run
editorstring 3.10 external message editor (internal code) or blank if none
command_shellstring 3.10 command shell (internal code)
settingsnumber 3.10 settings bitfield - see USER_* in sbbsdefs.js for bit definitions
qwk_settingsnumber 3.10 QWK packet settings bitfield - see QWK_* in sbbsdefs.js for bit definitions
chat_settingsnumber 3.10 chat settings bitfield - see CHAT_* in sbbsdefs.js for bit definitions
temp_file_extstring 3.10 temporary file type (extension)
new_file_timenumber 3.11 new file scan date/time (time_t format)
download_protocolstring 3.10 file transfer protocol (command key)
logontimenumber 3.10 logon time (time_t format)
cachedboolean 3.14 record is currently cached in memory
is_sysopboolean 3.15 user has a System Operator's security level

user.stats object
User statistics (all READ ONLY) - introduced in v3.10

user.stats properties
Name Type Ver Description
laston_datenumber 3.10 date of previous logon (time_t format)
firston_datenumber 3.10 date of first logon (time_t format)
total_logonsnumber 3.10 total number of logons
logons_todaynumber 3.10 total logons today
total_timeonnumber 3.10 total time used (in minutes)
timeon_todaynumber 3.10 time used today
timeon_last_logonnumber 3.10 time used last session
total_postsnumber 3.10 total messages posted
total_emailsnumber 3.10 total e-mails sent
total_feedbacksnumber 3.10 total feedback messages sent
email_todaynumber 3.10 e-mail sent today
posts_todaynumber 3.10 messages posted today
bytes_uploadednumber 3.10 total bytes uploaded
files_uploadednumber 3.10 total files uploaded
bytes_downloadednumber 3.10 total bytes downloaded
files_downloadednumber 3.10 total files downloaded
leech_attemptsnumber 3.10 suspected leech downloads
mail_waitingnumber 3.12 number of e-mail messages currently waiting
mail_pendingnumber 3.12 number of e-mail messages sent, currently pending deletion

user.security object
User security settings - introduced in v3.10

user.security properties
Name Type Ver Description
passwordstring 3.10 password
password_datenumber 3.10 date password last modified (time_t format)
levelnumber 3.10 security level (0-99)
flags1number 3.10 flag set #1 (bitfield) can use +/-[A-?] notation
flags2number 3.10 flag set #2 (bitfield) can use +/-[A-?] notation
flags3number 3.10 flag set #3 (bitfield) can use +/-[A-?] notation
flags4number 3.10 flag set #4 (bitfield) can use +/-[A-?] notation
exemptionsnumber 3.10 exemption flags (bitfield) can use +/-[A-?] notation
restrictionsnumber 3.10 restriction flags (bitfield) can use +/-[A-?] notation
creditsnumber 3.10 credits
free_creditsnumber 3.10 free credits (for today only)
minutesnumber 3.10 extra minutes (time bank)
extra_timenumber 3.10 extra minutes (for today only)
expiration_datenumber 3.10 expiration date/time (time_t format)

user.limits object
User limitations based on security level (all READ ONLY) - introduced in v3.11

user.limits properties
Name Type Ver Description
time_per_logonnumber 3.11 time (in minutes) per logon
time_per_daynumber 3.11 time (in minutes) per day
logons_per_daynumber 3.11 logons per day
lines_per_messagenumber 3.11 lines per message (post or email)
email_per_daynumber 3.11 email sent per day
posts_per_daynumber 3.11 messages posted per day
free_credits_per_daynumber 3.11 free credits given per day

bbs object
Controls the Telnet/SSH/RLogin BBS experience - introduced in v3.10

bbs methods
Name Returns Usage Ver Description
atcodestringbbs.atcode(code_string) 3.10 returns @-code value, specified code string does not include @ character delimiters
textstringbbs.text(line_number) 3.10 returns specified text string from text.dat
replace_textbooleanbbs.replace_text(line_number, text) 3.10 replaces specified text string in memory
revert_textbooleanbbs.revert_text([line_number=all]) 3.10 reverts specified text string to original text string; if line_number unspecified, reverts all text lines
load_textbooleanbbs.load_text(base_filename) 3.10 load an alternate text.dat from ctrl directory, automatically appends '.dat' to basefilename
newuservoidbbs.newuser() 3.10 interactive new user procedure
loginbooleanbbs.login(user_name [,password_prompt] [,user_password] [,system_password]) 3.10 login with user_name, displaying password_prompt for user's password (if required), optionally supplying the user's password and the system password as arguments so as to not be prompted
logonbooleanbbs.logon() 3.10 interactive logon procedure
logoffvoidbbs.logoff([prompt=true]) 3.15 interactive logoff procedure, pass false for prompt argument to avoid yes/no prompt
logoutvoidbbs.logout() 3.10 non-interactive logout procedure
hangupvoidbbs.hangup() 3.10 hangup (disconnect) immediately
nodesyncvoidbbs.nodesync([clearline=false]) 3.10 synchronize with node database, checks for messages, interruption, etc. (AKA node_sync), clears the current console line if there's a message to print when clearline is true.
auto_msgvoidbbs.auto_msg() 3.10 read/create system's auto-message
time_bankvoidbbs.time_bank() 3.10 enter the time banking system
qwk_secvoidbbs.qwk_sec() 3.10 enter the QWK message packet upload/download/config section
text_secvoidbbs.text_sec() 3.10 enter the text files section
xtrn_secvoidbbs.xtrn_sec() 3.10 enter the external programs section
xfer_policyvoidbbs.xfer_policy() 3.10 display the file transfer policy
batch_menuvoidbbs.batch_menu() 3.10 enter the batch file transfer menu
batch_downloadbooleanbbs.batch_download() 3.10 start a batch download
batch_add_listvoidbbs.batch_add_list(list_filename) 3.10 add file list to batch download queue
send_filebooleanbbs.send_file(filename [,protocol]) 3.14 send specified filename (complete path) to user via user-prompted (or optionally specified) protocol
receive_filebooleanbbs.receive_file(filename [,protocol]) 3.14 received specified filename (complete path) frome user via user-prompted (or optionally specified) protocol
temp_xfervoidbbs.temp_xfer() 3.10 enter the temporary file tranfer menu
user_syncvoidbbs.user_sync() 3.10 read the current user data from the database
user_configvoidbbs.user_config() 3.10 enter the user settings configuration menu
sys_infovoidbbs.sys_info() 3.10 display system information
sub_infovoidbbs.sub_info([sub-board=current]) 3.10 display message sub-board information (current sub-board, if unspecified)
dir_infovoidbbs.dir_info([directory=current]) 3.10 display file directory information (current directory, if unspecified)
user_infovoidbbs.user_info() 3.10 display current user information
vervoidbbs.ver() 3.10 display software version information
sys_statsvoidbbs.sys_stats() 3.10 display system statistics
node_statsvoidbbs.node_stats([node_number=current]) 3.10 display current (or specified) node statistics
list_usersvoidbbs.list_users([mode=UL_ALL]) 3.10 display user list(see UL_* in sbbsdefs.js for valid mode values)
edit_uservoidbbs.edit_user([user_number=current]) 3.10 enter the user editor
change_uservoidbbs.change_user() 3.10 change to a different user
list_logonsvoidbbs.list_logons() 3.10 display the logon list
read_mailvoidbbs.read_mail([which=MAIL_YOUR] [,user_number=current] [,loadmail_mode=0]) 3.10 read private e-mail(see MAIL_* in sbbsdefs.js for valid which values)
emailbooleanbbs.email(to_user_number [,mode=WM_EMAIL] [,top=none] [,subject=none]) 3.10 send private e-mail to a local user
netmailbooleanbbs.netmail(address [,mode=WM_NONE] [,subject=none]) 3.10 send private netmail
bulk_mailvoidbbs.bulk_mail([ars]) 3.10 send bulk private e-mail, if ars not specified, prompt for destination users
upload_filebooleanbbs.upload_file([directory=current]) 3.10 upload file to file directory specified by number or internal code
bulk_uploadbooleanbbs.bulk_upload([directory=current]) 3.10 add files (already in local storage path) to file directory specified by number or internal code
resort_dirbooleanbbs.resort_dir([directory=current]) 3.10 re-sort the file directory specified by number or internal code)
list_filesnumberbbs.list_files([directory=current] [,filespec="*.*" or search_string] [,mode=FL_NONE]) 3.10 list files in the specified file directory, optionally specifying a file specification (wildcards) or a description search string, and mode (bitfield)
list_file_infonumberbbs.list_file_info([directory=current] [,filespec="*.*"] [,mode=FI_INFO]) 3.10 list extended file information for files in the specified file directory
post_msgbooleanbbs.post_msg([sub-board=current] [,mode=WM_MODE] [,object reply_header]) 3.13 post a message in the specified message sub-board (number or internal code) with optinal mode (bitfield)
If reply_header is specified (a header object returned from MsgBase.get_msg_header()), that header will be used for the in-reply-to header fields (this argument added in v3.13)
cfg_msg_scanvoidbbs.cfg_msg_scan([type=SCAN_CFG_NEW]) 3.10 configure message scan (type is either SCAN_CFG_NEW or SCAN_CFG_TOYOU)
cfg_msg_ptrsvoidbbs.cfg_msg_ptrs() 3.10 change message scan pointer values
reinit_msg_ptrsvoidbbs.reinit_msg_ptrs() 3.10 re-initialize new message scan pointers
scan_subsvoidbbs.scan_subs([mode=SCAN_NEW] [,all=false]) 3.10 scan sub-boards for messages
scan_dirsvoidbbs.scan_dirs([mode=FL_NONE] [,all=false]) 3.10 scan directories for files
scan_msgsbooleanbbs.scan_msgs([sub-board=current] [,mode=SCAN_READ] [,find]) 3.10 scan messages in the specified message sub-board (number or internal code), optionally search for 'find' string (AKA scan_posts)
list_msgsnumberbbs.list_msgs([sub-board=current] [,mode=SCAN_READ] [,message_number=0] [,find]) 3.14 list messages in the specified message sub-board (number or internal code), optionally search for 'find' string, returns number of messages listed
menubooleanbbs.menu(base_filename) 3.10 display a menu file from the text/menu directory
menu_existsbooleanbbs.menu_exists(base_filename) 3.17 returns true if the referenced menu file exists (i.e. in the text/menu directory)
log_keybooleanbbs.log_key(key [,comma=false]) 3.10 log key to node.log (comma optional)
log_strbooleanbbs.log_str(text) 3.10 log string to node.log
findusernumberbbs.finduser(username_or_number) 3.10 find user name (partial name support), interactive
trashcanbooleanbbs.trashcan(base_filename, search_string) 3.10 search file for psuedo-regexp (search string) in trashcan file (text/base_filename.can)
execnumberbbs.exec(cmdline [,mode=EX_NONE] [,startup_dir]) 3.10 execute a program, optionally changing current directory to startup_dir (see EX_* in sbbsdefs.js for valid mode bits)
exec_xtrnbooleanbbs.exec_xtrn(xtrn_number_or_code) 3.10 execute external program by number or internal code
user_eventbooleanbbs.user_event(event_type) 3.10 execute user event by event type (see EVENT_* in sbbsdefs.js for valid values)
telnet_gatevoidbbs.telnet_gate(address [,mode=TG_NONE]) 3.10 external Telnet gateway (see TG_* in sbbsdefs.js for valid mode bits)
rlogin_gatevoidbbs.rlogin_gate(address [,client-user-name=user.alias, server-user-name=user.name, terminal=console.terminal] [,mode=TG_NONE]) 3.16 external RLogin gateway (see TG_* in sbbsdefs.js for valid mode bits)
check_syspassbooleanbbs.check_syspass([sys_pw]) 3.10 verify system password, prompting for the password if not passed as an argument
good_passwordbooleanbbs.good_password(password) 3.10 check if requested user password meets minimum password requirements (length, uniqueness, etc.)
page_sysopbooleanbbs.page_sysop() 3.10 page the sysop for chat, returns false if the sysop could not be paged
page_gurubooleanbbs.page_guru() 3.10 page the guru for chat
multinode_chatvoidbbs.multinode_chat() 3.10 enter multi-node chat
private_messagevoidbbs.private_message() 3.10 use the private inter-node message prompt
private_chatvoidbbs.private_chat([local=false]) 3.10 enter private inter-node chat, or local sysop chat (if local=true)
get_node_messagevoidbbs.get_node_message([clearline=false]) 3.10 receive and display an inter-node message
put_node_messagebooleanbbs.put_node_message([node_number] [,text]) 3.17 send an inter-node message (specify a node_number value of -1 for 'all active nodes')
get_telegramvoidbbs.get_telegram([user_number=current], [clearline=false]) 3.10 receive and display waiting telegrams for specified (or current) user
put_telegrambooleanbbs.put_telegram([user_number] [,text]) 3.17 send a telegram (short multi-line stored message) to a user
list_nodesvoidbbs.list_nodes() 3.10 list all nodes
whos_onlinevoidbbs.whos_online() 3.10 list active nodes only (who's online)
spyvoidbbs.spy(node_number) 3.10 spy on a node
cmdstrstringbbs.cmdstr(command_string [,fpath=""] [,fspec=""]) 3.10 return expanded command string using Synchronet command-line specifiers
get_filespecstringbbs.get_filespec() 3.10 returns a file specification input by the user (optionally with wildcards)
get_newscantimenumberbbs.get_newscantime(time=current) 3.10 confirm or change a new-scan time, returns the new new-scan time value (time_t format)
select_shellbooleanbbs.select_shell() 3.10 prompt user to select a new command shell
select_editorbooleanbbs.select_editor() 3.10 prompt user to select a new external message editor
get_time_leftnumberbbs.get_time_left() 3.14b check the user's available remaining time online and return the value, in seconds
This method will inform (and disconnect) the user when they are out of time
compare_arsbooleanbbs.compare_ars(ars) 3.15 verify the current user online meets the specified Access Requirements String
select_nodenumberbbs.select_node(all_is_an_option=false) 3.17 Choose an active node to interact with.
Returns the selected node number, 0 (for none) or -1 for 'All'.
select_usernumberbbs.select_user() 3.17 Choose a user to interact with.

bbs.mods object
Global repository for 3rd party modifications - introduced in v3.12


bbs properties
Name Type Ver Description
sys_statusnumber 3.10 system status bitfield (see SS_* in sbbsdefs.js for bit definitions)
startup_optionsnumber 3.10 startup options bitfield (see BBS_OPT_* in sbbsdefs.js for bit definitions)
answer_timenumber 3.10 answer time, in time_t format
logon_timenumber 3.10 logon time, in time_t format
start_timenumber 3.14 time from which user's time left is calculated, in time_t format
new_file_timenumber 3.10 current file new-scan time, in time_t format
last_new_file_timenumber 3.10 previous file new-scan time, in time_t format
onlinenumber 3.10 online (see ON_* in sbbsdefs.js for valid values)
time_leftnumber 3.11 time left (in seconds)
event_timenumber 3.11 time of next exclusive event (in time_t format), or 0 if none
event_codestring 3.11 internal code of next exclusive event
node_numnumber 3.10 current node number
node_settingsnumber 3.10 current node settings bitfield (see NM_* in sbbsdefs.js for bit definitions)
node_statusnumber 3.17 current node action (see nodedefs.js for valid values)
node_errorsnumber 3.17 validation feedback user for this node (or 0 for no validation feedback required)
node_actionnumber 3.10 bytes uploaded during this session
node_useronnumber 3.17 bytes downloaded during this session
node_connectionnumber 3.17 files uploaded during this session
node_miscnumber 3.17 files downloaded during this session
node_auxnumber 3.17 messages posted during this session
node_extauxnumber 3.17 e-mails sent during this session
node_val_usernumber 3.10 feedback messages sent during this session
logon_ulbnumber 3.10 messages read during this session
logon_dlbnumber 3.10 menu subdirectory (overrides default)
logon_ulsnumber 3.10 menu file (overrides default)
logon_dlsnumber 3.10 total main menu commands received from user during this session
logon_postsnumber 3.10 total file menu commands received from user during this session
logon_emailsnumber 3.10 current message group
logon_fbacksnumber 3.10 current message sub-board
posts_readnumber 3.10 current message sub-board internal code
menu_dirstring 3.10 current file library
menu_filestring 3.10 current file directory
main_cmdsnumber 3.10 current file directory internal code
file_cmdsnumber 3.10 remote connection type
curgrpnumber 3.10 login name given during RLogin negotiation
cursubnumber 3.10 password specified during RLogin negotiation
cursub_codestring 3.14 terminal specified during RLogin negotiation
curlibnumber 3.10 client name
curdirnumber 3.10 current alternate upload path number
curdir_codestring 3.14 error level returned from last executed external program
connectionstring 3.10 message group name of message being read
rlogin_namestring 3.10 message group description of message being read
rlogin_passwordstring 3.15 message group number of message being read
rlogin_terminalstring 3.16 sub-board name of message being read
client_namestring 3.10 sub-board description of message being read
alt_ul_dirnumber 3.10 sub-board internal code of message being read
errorlevelnumber 3.12 sub-board number of message being read
smb_groupstring 3.10 message base attributes
smb_group_descstring 3.10 highest message number in message base
smb_group_numbernumber 3.10 total number of messages in message base
smb_substring 3.10 number of messages loaded from message base
smb_sub_descstring 3.10 current message number in message base
smb_sub_codestring 3.10 message recipient name
smb_sub_numbernumber 3.10 message recipient extension
smb_attrnumber 3.10 message recipient network address
smb_last_msgnumber 3.10 message recipient agent type
smb_total_msgsnumber 3.10 message sender name
smb_msgsnumber 3.10 message sender extension
smb_curmsgnumber 3.10 message sender network address
msg_tostring 3.10 message sender agent type
msg_to_extstring 3.10 message reply-to name
msg_to_netstring 3.10 message reply-to extension
msg_to_agentnumber 3.10 message reply-to network address
msg_fromstring 3.10 message reply-to agent type
msg_from_extstring 3.10 message subject
msg_from_netstring 3.10 message date/time
msg_from_agentnumber 3.10 message time zone
msg_replytostring 3.10 message date/time imported
msg_replyto_extstring 3.10 message attributes
msg_replyto_netstring 3.10 message auxiliary attributes
msg_replyto_agentnumber 3.10 message network attributes
msg_subjectstring 3.10 message header offset
msg_datenumber 3.10 message number (unique, monotonically incrementing)
msg_timezonenumber 3.10 message expiration
msg_date_importednumber 3.10 message forwarded
msg_attrnumber 3.10 message thread identifier (0 if unknown)
msg_auxattrnumber 3.10 message thread, back message number
msg_netattrnumber 3.10 message thread, next message number
msg_offsetnumber 3.10 message thread, message number of first reply to this message
msg_numbernumber 3.10 message identifier
msg_expirationnumber 3.10 message replied-to identifier
msg_forwardednumber 3.10 message delivery attempt counter
msg_thread_idnumber 3.16 file name
msg_thread_backnumber 3.12 file description
msg_thread_nextnumber 3.10 file directory (number)
msg_thread_firstnumber 3.10 file attribute flags
msg_idstring 3.10 file date
msg_reply_idstring 3.10 file size (in bytes)
msg_delivery_attemptsnumber 3.10 file credit value
file_namestring 3.17 file uploader (user name)
file_descriptionstring 3.17 file upload date
file_dir_numberstring 3.17 file last-download date
file_attrstring 3.17 file download count
file_datestring 3.17 number of files in batch upload queue
file_sizestring 3.17 number of files in batch download queue
file_creditsstring 3.17 current command shell/module command string value
file_uploaderstring 3.17 undefined
file_upload_datestring 3.17 undefined
file_download_datestring 3.17 undefined
file_download_countstring 3.17 undefined
batch_upload_totalnumber 3.10 undefined
batch_dnload_totalnumber 3.10 undefined
command_strstring 3.14 undefined

console object
Controls the remote terminal - introduced in v3.10

console methods
Name Returns Usage Ver Description
inkeystringconsole.inkey([mode=K_NONE] [,timeout=0]) 3.11 get a single key with optional timeout in milliseconds (defaults to 0, for no wait), returns an empty string if there is no input (e.g. timeout occurs), see K_* in sbbsdefs.js for mode bits
getkeystringconsole.getkey([mode=K_NONE]) 3.10 get a single key, with wait, see K_* in sbbsdefs.js for mode bits
getstrstringconsole.getstr([string] [,maxlen=128] [,mode=K_NONE] [,history[]]) 3.10 get a text string from the user, see K_* in sbbsdefs.js for mode bits.
history[], added in v3.17, allows a command history (string array) to be recalled using the up/down arrow keys.
getnumnumberconsole.getnum([maxnum[, default]]) 3.10 get a number between 1 and maxnum from the user with a default value of default
getkeysnumberconsole.getkeys(string keys [,maxnum]) 3.10 get one key from of a list of valid command keys, or a number between 1 and maxnum
gettemplatestringconsole.gettemplate(format [,string] [,mode=0]) 3.10 get a string based on template
ungetstrvoidconsole.ungetstr(keys) 3.10 put a data (e.g. a string of characters) in the keyboard input buffer
yesnobooleanconsole.yesno(question) 3.10 YES/no question - returns true if yes is selected
noyesbooleanconsole.noyes(question) 3.10 NO/yes question - returns true if no is selected
mnemonicsvoidconsole.mnemonics(text) 3.10 print a mnemonics string, command keys highlighted with tilde (~) characters
clearvoidconsole.clear([attribute]) 3.10 clear screen and home cursor, optionally (in v3.13b+) setting current attribute first
homevoidconsole.home() 3.11 send cursor to home position (x,y:1,1)
clearlinevoidconsole.clearline([attribute]) 3.10 clear current line, optionally (in v3.13b+) setting current attribute first
cleartoeolvoidconsole.cleartoeol([attribute]) 3.11 clear to end-of-line, optionally (in v3.13b+) setting current attribute first
crlfvoidconsole.crlf([count=1]) 3.10 output count number of carriage-return/line-feed pairs (new-lines)
pausevoidconsole.pause() 3.10 display pause prompt and wait for key hit
beepvoidconsole.beep([count=1]) 3.11 beep for count number of times (default count is 1)
printvoidconsole.print(value [,value]) 3.10 display one or more values as strings (supports Ctrl-A codes, Telnet-escaping, auto-screen pausing, etc.)
writevoidconsole.write(value [,value]) 3.10 display one or more values as raw strings (may include NULs)
writelnvoidconsole.writeln(value [,value]) 3.15 display one or more values as raw strings followed by a single carriage-return/line-feed pair (new-line)
putmsgvoidconsole.putmsg(text [,mode=P_NONE]) 3.10 display message text (Ctrl-A codes, @-codes, pipe codes, etc), see P_* in sbbsdefs.js for mode bits
centervoidconsole.center(text) 3.10 display a string centered on the screen
strlennumberconsole.strlen(text) 3.10 returns the number of characters in text, excluding Ctrl-A codes
printfilebooleanconsole.printfile(filename [,mode=P_NONE]) 3.10 print a message text file with optional mode
printtailbooleanconsole.printtail(filename, lines [,mode=P_NONE]) 3.10 print last x lines of file with optional mode
editfilebooleanconsole.editfile(filename) 3.10 edit/create a text file using the user's preferred message editor
uselectnumberconsole.uselect([number, title, item] [,ars]) 3.12 user selection menu, call for each item, then with no args to display select menu
savelinebooleanconsole.saveline() 3.10 push the current console line of text and attributes to a (local) LIFO list of //saved lines//
restorelinebooleanconsole.restoreline() 3.10 pop the most recently //saved line// of text and attributes and display it on the remote console
ansistringconsole.ansi(attribute [,current_attribute]) 3.10 returns ANSI sequence required to generate specified terminal attribute (e.g. YELLOW|HIGH|BG_BLUE), if current_attribute is specified, an optimized ANSI sequence may be returned
pushxyvoidconsole.pushxy() 3.11 save the current cursor position (x and y coordinates) in the remote terminal
popxyvoidconsole.popxy() 3.11 restore a saved cursor position to the remote terminal (requires terminal support, e.g. ANSI)
gotoxyvoidconsole.gotoxy([x,y] or [object { x,y }]) 3.11 move cursor to a specific screen coordinate (ANSI, 1-based values), arguments can be separate x and y coordinates or an object with x and y properties (like that returned from console.getxy())
upvoidconsole.up([rows=1]) 3.11 move cursor up one or more rows
downvoidconsole.down([rows=1]) 3.11 move cursor down one or more rows
rightvoidconsole.right([columns=1]) 3.11 move cursor right one or more columns
leftvoidconsole.left([columns=1]) 3.11 move cursor left one or more columns
getdimensionsvoidconsole.getdimensions() 3.11 query the number of rows and columns on the remote terminal
getxyobjectconsole.getxy() 3.11 query the current cursor position on the remote terminal and returns the coordinates as an object (with x and y properties)
lock_inputvoidconsole.lock_input([lock=true]) 3.10 lock the user input thread (allowing direct client socket access)
telnet_cmdbooleanconsole.telnet_cmd(command [,option=0] [,timeout=0]) 3.17 send Telnet command (with optional command option) to remote client, if the optional timeout is specified (in milliseconds, added in v3.17), then an acknowledgment will be expected and the return value will indicate whether or not one was received
handle_ctrlkeybooleanconsole.handle_ctrlkey(key [,mode=K_NONE]) 3.11 call internal control key handler for specified control key, returns true if handled
term_supportsbooleanconsole.term_supports([terminal_flags]) 3.14 either returns bool, indicating whether or not the current user/client supports all the specified terminal_flags, or returns the current user/client's terminal_flags (numeric bit-field) if no terminal_flags were specified
backspacevoidconsole.backspace() 3.15 send a destructive backspace sequence
creturnvoidconsole.creturn() 3.17 send a carriage return sequence
clearkeybuffervoidconsole.clearkeybuffer() 3.15 clear keyboard input buffer
getbytenumberconsole.getbyte([timeout=0]) 3.17 returns an unprocessed input byte from the remote terminal with optional timeout in milliseconds (defaults to 0, for no wait), returns null on failure (timeout)
putbytebooleanconsole.putbyte(value) 3.17 sends an unprocessed byte value to the remot terminal

console properties
Name Type Ver Description
statusnumber 3.10 status bit-field (see CON_* in sbbsdefs.js for bit definitions)
line_counternumber 3.10 current 0-based line counter (used for automatic screen pause)
current_columnnumber 3.15 current 0-based column counter (used to auto-increment line_counter when screen wraps)
last_line_lengthnumber 3.17 length of last line sent to terminal (before a carriage-return or line-wrap)
attributesnumber 3.10 current display attributes (set with number or string value)
top_of_screennumber 3.10 set to true if the terminal cursor is already at the top of the screen
screen_rowsnumber 3.10 number of remote terminal screen rows (in lines)
screen_columnsnumber 3.11 number of remote terminal screen columns (in character cells)
tabstopnumber 3.17 current tab stop interval (tab size), in columns
autotermnumber 3.10 bit-field of automatically detected terminal settings (see USER_* in sbbsdefs.js for bit definitions)
terminalstring 3.11 terminal type description (e.g. 'ANSI')
cterm_versionnumber 3.17 detected CTerm (SyncTERM) version as an integer > 1000 where major version is cterm_version / 1000 and minor version is cterm_version % 1000
inactivity_warningnumber 3.14b number of seconds before displaying warning (Are you really there?) due to user/keyboard inactivity
inactivity_hangupnumber 3.14b number of seconds before disconnection due to user/keyboard inactivity
timeoutnumber 3.10 user/keyboard inactivity timeout reference value (time_t format)
timeleft_warningnumber 3.10 number of low time-left (5 or fewer minutes remaining) warnings displayed to user
abortedboolean 3.10 input/output has been aborted
abortableboolean 3.10 remote output can be asynchronously aborted with Ctrl-C
telnet_modenumber 3.10 current Telnet mode bit-field (see TELNET_MODE_* in sbbsdefs.js for bit definitions)
wordwrapstring 3.10 word-wrap buffer (used by getstr) - READ ONLY
questionstring 3.10 current yes/no question (set by yesno and noyes)
getstr_offsetnumber 3.11 cursor position offset for use with getstr(K_USEOFFSET)
ctrlkey_passthrunumber 3.10 control key pass-through bit-mask, set bits represent control key combinations not handled by inkey() method This may optionally be specified as a string of characters. The format of this string is [+-][@-_]. If neither plus nor minus is the first character, the value will be replaced by one constructed from the string. A + indicates that characters following will be added to the set, and a - indicates they should be removed. ex: console.ctrlkey_passthru="-UP+AB" will clear CTRL-U and CTRL-P and set CTRL-A and CTRL-B.
input_buffer_levelnumber 3.12 number of bytes currently in the input buffer (from the remote client) - READ ONLY
input_buffer_spacenumber 3.12 number of bytes available in the input buffer - READ ONLY
output_buffer_levelnumber 3.12 number of bytes currently in the output buffer (from the local server) - READ ONLY
output_buffer_spacenumber 3.12 number of bytes available in the output buffer - READ ONLY

msg_area object
Message Areas - introduced in v3.10

msg_area properties
Name Type Description
settingsnumber message area settings (bitfield) - see MM_* in sbbsdefs.js for detailsFidoNet NetMail settings (bitfield) - see NMAIL_* in sbbsdefs.js for detailsInternet NetMail settings (bitfield) - see NMAIL_* in sbbsdefs.js for details
fido_netmail_settingsnumber message area settings (bitfield) - see MM_* in sbbsdefs.js for detailsFidoNet NetMail settings (bitfield) - see NMAIL_* in sbbsdefs.js for detailsInternet NetMail settings (bitfield) - see NMAIL_* in sbbsdefs.js for details
inet_netmail_settingsnumber message area settings (bitfield) - see MM_* in sbbsdefs.js for detailsFidoNet NetMail settings (bitfield) - see NMAIL_* in sbbsdefs.js for detailsInternet NetMail settings (bitfield) - see NMAIL_* in sbbsdefs.js for details

msg_area.grp object
Associative array of all groups (use name as index) - introduced in v3.12

msg_area.sub object
Associative array of all sub-boards (use internal code as index) - introduced in v3.11

msg_area.grp_list array
Message Groups (current user has access to) - introduced in v3.10

msg_area.grp_list properties
Name Type Description
indexnumber index into grp_list array (or -1 if not in array) (introduced in v3.12)
numbernumber unique number for this message group
namestring group name
descriptionstring group description
arsstring group access requirements

msg_area.grp_list.sub_list array
Message Sub-boards (current user has access to)

(all properties are READ ONLY except for scan_ptr, scan_cfg, and last_read) - introduced in v3.10
msg_area.grp_list.sub_list properties
Name Type Description
indexnumber index into sub_list array (or -1 if not in array) (introduced in v3.12)
grp_indexnumber group's index into grp_list array (introduced in v3.12)
numbernumber unique number for this sub-board
grp_numbernumber group number
grp_namestring group name (introduced in v3.12)
codestring sub-board internal code
namestring sub-board name
descriptionstring sub-board description
qwk_namestring sub-board QWK name
newsgroupstring newsgroup name (as configured or dymamically generated)
arsstring sub-board access requirements
read_arsstring sub-board reading requirements
post_arsstring sub-board posting requirements
operator_arsstring sub-board operator requirements
moderated_arsstring sub-board moderated-user requirements (if non-blank)
data_dirstring sub-board data storage location
fidonet_originstring FidoNet origin line
qwknet_taglinestring QWK Network tagline
settingsnumber toggle options (bitfield)
ptridxnumber index into message scan configuration/pointer file
qwk_confnumber QWK conference number
max_crcsnumber configured maximum number of message CRCs to store (for dupe checking)
max_msgsnumber configured maximum number of messages before purging
max_agenumber configured maximum age (in days) of messages before expiration
can_readboolean user has sufficient access to read messages
can_postboolean user has sufficient access to post messages
is_operatorboolean user has operator access to this message area
is_moderatedboolean user's posts are moderated
scan_ptrundefined user's current new message scan pointer (highest-read message number)
scan_cfgundefined user's message scan configuration (bitfield) see SCAN_CFG_* in sbbsdefs.js for valid bits
last_readundefined user's last-read message number

file_area object
File Transfer Areas - introduced in v3.10

file_area properties
Name Type Description
min_diskspacenumber minimum amount of available disk space (in kilobytes) required for user uploads to be allowed
settingsnumber file area settings (bitfield) - see FM_* in sbbsdefs.js for details
alt_pathsobject array of alternative file paths. NOTE: this array is zero-based, but alt path fields are one-based.

file_area.lib object
Associative array of all libraries (use name as index) - introduced in v3.12

file_area.dir object
Associative array of all directories (use internal code as index) - introduced in v3.11

file_area.lib_list array
File Transfer Libraries (current user has access to) - introduced in v3.10

file_area.lib_list properties
Name Type Description
indexnumber index into lib_list array (or -1 if not in array) (introduced in v3.12)
numbernumber unique number for this library
namestring library name
descriptionstring library description
arsstring library access requirements
linkstring library link (for HTML index)

file_area.lib_list.dir_list array
File Transfer Directories (current user has access to) - introduced in v3.10

file_area.lib_list.dir_list properties
Name Type Description
indexnumber index into dir_list array (or -1 if not in array) (introduced in v3.12)
numbernumber unique number for this directory
lib_indexnumber library index (introduced in v3.12)
lib_numbernumber library number
lib_namestring library name (introduced in v3.12)
codestring directory internal code
namestring directory name
descriptionstring directory description
pathstring directory file storage location
arsstring directory access requirements
upload_arsstring directory upload requirements
download_arsstring directory download requirements
exempt_arsstring directory exemption requirements
operator_arsstring directory operator requirements
extensionsstring allowed file extensions (comma delimited)
upload_semstring upload semaphore file
data_dirstring directory data storage location
settingsnumber toggle options (bitfield)
seqdevnumber sequential (slow storage) device number
sortnumber sort order (see SORT_* in sbbsdefs.js for valid values)
max_filesnumber configured maximum number of files
max_agenumber configured maximum age (in days) of files before expiration
upload_credit_pctnumber percent of file size awarded uploader in credits upon file upload
download_credit_pctnumber percent of file size awarded uploader in credits upon subsequent downloads
linkstring directory link (for HTML index)
can_uploadboolean user has sufficient access to upload files
can_downloadboolean user has sufficient access to download files
is_exemptboolean user is exempt from download credit costs
is_operatorboolean user has operator access to this directory
is_offlineboolean directory is for offline storage (introduced in v3.14)
is_uploadboolean directory is for uploads only (introduced in v3.14)
is_sysopboolean directory is for uploads to sysop only (introduced in v3.14)

xtrn_area object
External Program Areas - introduced in v3.10

xtrn_area.sec object
Associative array of all external program sections (use internal code as index) - introduced in v3.12

xtrn_area.prog object
Associative array of all external programs (use internal code as index) - introduced in v3.11

xtrn_area.sec_list array
Online Program (door) Sections (current user has access to) - introduced in v3.10

xtrn_area.sec_list properties
Name Type Description
indexnumber index into sec_list array (or -1 if not in index) (introduced in v3.12)
numbernumber unique number for this external program section
codestring external program section internal code
namestring external program section name
arsstring external program section access requirements
can_accessboolean user has sufficient access to enter this section (introduced in v3.15)

xtrn_area.sec_list.prog_list array
Online External Programs (doors) (current user has access to) - introduced in v3.10

xtrn_area.sec_list.prog_list properties
Name Type Description
indexnumber index into prog_list array (or -1 if not in index) (introduced in v3.12)
numbernumber program number
sec_indexnumber program section index (introduced in v3.12)
sec_numbernumber program section number
sec_codestring program section internal code (introduced in v3.12)
codestring internal code
namestring name
cmdstring command-line
clean_cmdstring clean-up command-line
startup_dirstring startup directory
arsstring access requirements
execution_arsstring execution requirements
settingsnumber toggle options (bitfield)
typenumber drop file type
eventnumber event type (0=none)
textranumber extra time given to users running this program
max_timenumber maximum time allowed in program
costnumber execution cost (credits to run this program)
can_accessboolean user has sufficient access to see this program
can_runboolean user has sufficient access to run this program

xtrn_area.event object
Associative array of all timed events (use internal code as index) - introduced in v3.11

xtrn_area.event properties
Name Type Description
cmdstring command-line
startup_dirstring startup directory
node_numnumber node number
timenumber time to execute
freqnumber frequency to execute
daysnumber days of week to execute (bitfield)
mdaysnumber days of month to execute (bitfield)
monthsnumber months of year to execute (bitfield)
last_runnumber date/time last run (in time_t format)
settingsnumber toggle options (bitfield)

xtrn_area.editor object
Associative array of all external editors (use internal code as index) - introduced in v3.11

xtrn_area.editor properties
Name Type Description
namestring name
cmdstring command-line
arsstring access requirements
settingsnumber toggle options (bitfield)
typenumber drop file type

uifc object
User InterFaCe object - used for jsexec menus - introduced in v3.14

uifc methods
Name Returns Usage Ver Description
initbooleanuifc.init(string title [, string mode]) 3.14 initialize. mode is a string representing the desired conio mode... one of STDIO, AUTO, X, CURSES, ANSI, CONIO, SDL, or OVERLAY.
bailvoiduifc.bail() 3.14 uninitialize
msgvoiduifc.msg(string text) 3.14 print a message
popvoiduifc.pop([string text]) 3.14 popup (or down) a message
inputstringuifc.input([number mode] [number left] [number top] [string default] [number maxlen] [number kmode]) 3.14 prompt for a string input
liststringuifc.list([number mode] [string title] [string array options] [uifc.list.CTX object]) 3.14 select from a list of options.
The context object can be created using new uifc.list.CTX() and if the same object is passed, allows WIN_SAV to work correctly.
The context object has the following properties:
cur, bar, top, left, width
showhelpvoiduifc.showhelp() 3.17 Shows the current help text

uifc properties
Name Type Ver Description
initializedboolean 3.14 uifc has been initialized
modenumber 3.14 current mode bits (see uifcdefs.js)
changesboolean 3.14 a change has occured in an input call. You are expected to set this to false before calling the input if you care about it.
save_numnumber 3.14 save buffer depth (advanced)
screen_lengthnumber 3.14 current screen length
screen_widthnumber 3.14 current screen width
list_heightnumber 3.14 when WIN_FIXEDHEIGHT is set, specifies the hight used by a list method
esc_delaynumber 3.14 delay before a single ESC char is parsed and assumed to not be an ANSI sequence (advanced)
help_textstring 3.14 text that will be displayed if F1 is pressed
background_colornumber 3.14 background colour
frame_colornumber 3.14 frame colour
text_colornumber 3.14 text colour
inverse_colornumber 3.14 inverse colour
lightbar_colornumber 3.14 lightbar colour

MsgBase class
Class used for accessing message bases - introduced in v3.10

To create a new MsgBase object: var msgbase = new MsgBase('code')
where code is a sub-board internal code, or mail for the e-mail message base

MsgBase methods
Name Returns Usage Ver Description
openbooleanMsgBase.open() 3.10 open message base
closebooleanMsgBase.close() 3.10 close message base (if open)
get_msg_headerobjectMsgBase.get_msg_header([by_offset=false,] number_or_id [,expand_fields=true] [,include_votes=false]) 3.12 returns a specific message header, null on failure.
New in v3.12: Pass false for the expand_fields argument (default: true) if you will be re-writing the header later with put_msg_header()
get_all_msg_headersarrayMsgBase.get_all_msg_headers([include_votes=false]) 3.16 returns an object of all message headers indexed by message number.
Message headers returned by this function include 2 additional properties: upvotes and downvotes.
Vote messages are excluded by default.
put_msg_headerbooleanMsgBase.put_msg_header([by_offset=false,] number, object header) 3.10 modify an existing message header
get_msg_bodystringMsgBase.get_msg_body([by_offset=false,] number_or_id [, message_header] [,strip_ctrl_a=false] [,rfc822_encoded=false] [,include_tails=true] [,plain_text=false]) 3.10 returns the entire body text of a specific message as a single String, null on failure. The default behavior is to leave Ctrl-A codes intact, perform no RFC-822 encoding, and to include tails (if any) in the returned body text. When plain_text is true, only the first plain-text portion of a multi-part MIME encoded message body is returned.
get_msg_tailstringMsgBase.get_msg_tail([by_offset=false,] number_or_id [, message_header] [,strip_ctrl_a]=false) 3.10 returns the tail text of a specific message, null on failure
get_msg_indexobjectMsgBase.get_msg_index([by_offset=false,] number, [include_votes=false]) 3.11 returns a specific message index, null on failure. The index object will contain the following properties:
attrAttribute bitfield
timeDate/time imported (in time_t format)
numberMessage number
offsetRecord number in index file
Indexes of regular messages will contain the following additional properties:
subjectCRC-16 of lowercase message subject
toCRC-16 of lowercase recipient's name (or user number if e-mail)
fromCRC-16 of lowercase sender's name (or user number if e-mail)
Indexes of vote messages will contain the following additional properties:
votevote value
remsgnumber of message this vote is in response to
remove_msgbooleanMsgBase.remove_msg([by_offset=false,] number_or_id) 3.11 mark message for deletion
save_msgbooleanMsgBase.save_msg(object header [,client=none] [,body_text=""] [,array rcpt_list=none]) 3.12 create a new message in message base, the header object may contain the following properties:
subjectMessage subject (required)
toRecipient's name (required)
to_extRecipient's user number (for local e-mail)
to_orgRecipient's organization
to_net_typeRecipient's network type (default: 0 for local)
to_net_addrRecipient's network address
to_agentRecipient's agent type
fromSender's name (required)
from_extSender's user number
from_orgSender's organization
from_net_typeSender's network type (default: 0 for local)
from_net_addrSender's network address
from_agentSender's agent type
from_ip_addrSender's IP address (if available, for security tracking)
from_host_nameSender's host name (if available, for security tracking)
from_protocolTCP/IP protocol used by sender (if available, for security tracking)
from_portTCP/UDP port number used by sender (if available, for security tracking)
sender_useridSender's user ID (if available, for security tracking)
sender_serverServer's host name (if available, for security tracking)
sender_timeTime/Date message was received from sender (if available, for security tracking)
replytoReplies should be sent to this name
replyto_extReplies should be sent to this user number
replyto_orgReplies should be sent to organization
replyto_net_typeReplies should be sent to this network type
replyto_net_addrReplies should be sent to this network address
replyto_agentReplies should be sent to this agent type
summaryMessage Summary (optional)
tagsMessage Tags (space-delimited, optional)
idMessage's RFC-822 compliant Message-ID
reply_idMessage's RFC-822 compliant Reply-ID
reverse_pathMessage's SMTP sender address
forward_pathArgument to SMTP 'RCPT TO' command
pathMessages's NNTP path
newsgroupsMessage's NNTP newsgroups header
ftn_msgidFidoNet FTS-9 Message-ID
ftn_replyFidoNet FTS-9 Reply-ID
ftn_areaFidoNet FTS-4 echomail AREA tag
ftn_flagsFidoNet FSC-53 FLAGS
ftn_pidFidoNet FSC-46 Program Identifier
ftn_tidFidoNet FSC-46 Tosser Identifier
dateRFC-822 formatted date/time
attrAttribute bitfield
auxattrAuxillary attribute bitfield
netattrNetwork attribute bitfield
when_written_timeDate/time (in time_t format)
when_written_zoneTime zone (in SMB format)
when_written_zone_offsetTime zone in minutes east of UTC
when_imported_timeDate/time message was imported
when_imported_zoneTime zone (in SMB format)
when_imported_zone_offsetTime zone in minutes east of UTC
thread_idThread identifier (originating message number)
thread_backMessage number that this message is a reply to
thread_nextMessage number of the next reply to the original message in this thread
thread_firstMessage number of the first reply to this message
field_list[].typeOther SMB header fields (type)
field_list[].dataOther SMB header fields (data)
can_readtrue if the current user can read this validated or unmoderated message

New in v3.12: The optional client argument is an instance of the Client class to be used for the security log header fields (e.g. sender IP address, hostname, protocol, and port). As of version 3.16c, the global client object will be used if this is omitted.

New in v3.12: The optional rcpt_list is an array of objects that specifies multiple recipients for a single message (e.g. bulk e-mail). Each object in the array may include the following header properties (described above):
to, to_ext, to_org, to_net_type, to_net_addr, and to_agent
vote_msgbooleanMsgBase.vote_msg(object header) 3.17 create a new vote in message base, the header object should contain the following properties:
fromSender's name (required)
from_extSender's user number (if applicable)
from_net_typeSender's network type (default: 0 for local)
from_net_addrSender's network address
reply_idThe Reply-ID of the message being voted on (or specify thread_back)
thread_backMessage number of the message being voted on
attrShould be either MSG_UPVOTE, MSG_DOWNVOTE, or MSG_VOTE (if answer to poll)
add_pollbooleanMsgBase.add_poll(object header) 3.17 create a new poll in message base, the header object should contain the following properties:
subjectPolling question (required)
fromSender's name (required)
from_extSender's user number (if applicable)
from_net_typeSender's network type (default: 0 for local)
from_net_addrSender's network address
close_pollbooleanMsgBase.close_poll(message number, user name or alias) 3.17 close an existing poll
how_user_votednumberMsgBase.how_user_voted(message number, user name or alias) 3.17 Returns 0 for no votes, 1 for an up-vote, 2 for a down-vote, or in the case of a poll-response: a bit-field of votes.

MsgBase properties
Name Type Ver Description
errorstring 3.10 last occurred message base error - READ ONLY
statusnumber 3.12 return value of last SMB Library function call - READ ONLY
filestring 3.10 base path and filename of message base - READ ONLY
retry_timenumber 3.10 message base open/lock retry timeout (in seconds)
retry_delaynumber 3.11 delay between message base open/lock retries (in milliseconds)
first_msgnumber 3.10 first message number - READ ONLY
last_msgnumber 3.10 last message number - READ ONLY
total_msgsnumber 3.10 total number of messages - READ ONLY
max_crcsnumber 3.10 maximum number of message CRCs to store (for dupe checking) - READ ONLY
max_msgsnumber 3.10 maximum number of messages before expiration - READ ONLY
max_agenumber 3.10 maximum age (in days) of messages to store - READ ONLY
attributesnumber 3.10 message base attributes - READ ONLY
subnumnumber 3.10 sub-board number (0-based, 65535 for e-mail) - READ ONLY
is_openboolean 3.10 true if the message base has been opened successfully - READ ONLY

MsgBase.cfg object
Configuration parameters for this message area (sub-boards only) - READ ONLY - introduced in v3.10

MsgBase.cfg properties
Name Type Description
indexundefined index into sub_list array (or -1 if not in array) (introduced in v3.12)
grp_indexundefined group's index into grp_list array (introduced in v3.12)
numbernumber unique number for this sub-board
grp_numbernumber group number
grp_namestring group name (introduced in v3.12)
codestring sub-board internal code
namestring sub-board name
descriptionstring sub-board description
qwk_namestring sub-board QWK name
newsgroupstring newsgroup name (as configured or dymamically generated)
arsstring sub-board access requirements
read_arsstring sub-board reading requirements
post_arsstring sub-board posting requirements
operator_arsstring sub-board operator requirements
moderated_arsstring sub-board moderated-user requirements (if non-blank)
data_dirstring sub-board data storage location
fidonet_originstring FidoNet origin line
qwknet_taglinestring QWK Network tagline
settingsnumber toggle options (bitfield)
ptridxnumber index into message scan configuration/pointer file
qwk_confnumber QWK conference number
max_crcsnumber configured maximum number of message CRCs to store (for dupe checking)
max_msgsnumber configured maximum number of messages before purging
max_agenumber configured maximum age (in days) of messages before expiration

File class
Class used for opening, creating, reading, or writing files on the local file system

Special features include:

  1. Exclusive-access files (default) or shared files
    1. optional record-locking
    2. buffered or non-buffered I/O
  2. Support for binary files
    1. native or network byte order (endian)
    2. automatic Unix-to-Unix (UUE), yEncode (yEnc) or Base64 encoding/decoding
  3. Support for ASCII text files
    1. supports line-based I/O
      1. entire file may be read or written as an array of strings
      2. individual lines may be read or written one line at a time
    2. supports fixed-length records
      1. optional end-of-text (etx) character for automatic record padding/termination
      2. Synchronet .dat files use an etx value of 3 (Ctrl-C)
    3. supports .ini formated configuration files
      1. concept and support of root ini sections added in v3.12
    4. optional ROT13 encoding/translation
  4. Dynamically-calculated industry standard checksums (e.g. CRC-16, CRC-32, MD5)
- introduced in v3.10

To create a new File object: var f = new File(filename)

File methods
Name Returns Usage Ver Description
openbooleanFile.open([mode="w+"] [,shareable=false] [,buffer_length]) 3.10 open file, shareable defaults to false, buffer_length defaults to 2048 bytes, mode (default: 'w+') specifies the type of access requested for the file, as follows:
open for reading; if the file does not exist or cannot be found, the open call fails
open an empty file for writing; if the given file exists, its contents are destroyed
open for writing at the end of the file (appending); creates the file first if it doesn't exist
r+ open for both reading and writing (the file must exist)
w+ open an empty file for both reading and writing; if the given file exists, its contents are destroyed
a+ open for reading and appending
open in binary (untranslated) mode; translations involving carriage-return and linefeed characters are suppressed (e.g. r+b)
open a non-shareable file (that must not already exist) for exclusive access (introduced in v3.17)

Note: When using the iniSet methods to modify a .ini file, the file must be opened for both reading and writing.

Note: To open an existing or create a new file for both reading and writing (e.g. updating an .ini file) use the exists property like so:
file.open(file.exists ? 'r+':'w+');
Note: When shareable is false, uses nopen() which will lock the file and perform automatic retries. The lock mode is as follows:
DENYWRITE - Allows other scripts to open the file for reading, but not for writing.
DENYALL - Does not allow other scripts to open the file when shareable is set to true
DENYALL - Does not allow other scripts to open the file when shareable is set to true
r+ DENYALL - Does not allow other scripts to open the file when shareable is set to true
w+ DENYALL - Does not allow other scripts to open the file when shareable is set to true
a+ DENYALL - Does not allow other scripts to open the file when shareable is set to true
When shareable is true uses fopen(), and will only attempt to open the file once and will perform no locking. The behavior when one script has a file opened with shareable set to a different value than is used with a new call is OS specific. On Windows, the second open will always fail and on *nix, the second open will always succeed.
popenbooleanFile.popen([mode="r+"] [,buffer_length]) 3.15 open pipe to command, buffer_length defaults to 2048 bytes, mode (default: 'r+') specifies the type of access requested for the file, as follows:
read the programs stdout;
write to the programs stdin
r+ open for both reading stdout and writing stdin
(only functional on UNIX systems)
closevoidFile.close() 3.10 close file
removebooleanFile.remove() 3.10 remove the file from the disk
clear_errorbooleanFile.clear_error() 3.10 clears the current error value (AKA clearError)
flushbooleanFile.flush() 3.10 flush/commit buffers to disk
rewindbooleanFile.rewind() 3.11 repositions the file pointer (position) to the beginning of a file and clears error and end-of-file indicators
truncatebooleanFile.truncate([length=0]) 3.14 changes the file length (default: 0) and repositions the file pointer (position) to the new end-of-file
lockbooleanFile.lock([offset=0] [,length=file_length-offset]) 3.10 lock file record for exclusive access (file must be opened shareable)
unlockbooleanFile.unlock([offset=0] [,length=file_length-offset]) 3.10 unlock file record for exclusive access
readstringFile.read([maxlen=file_length-file_position]) 3.10 read a string from file (optionally unix-to-unix or base64 decoding in the process), maxlen defaults to the current length of the file minus the current file position
readlnstringFile.readln([maxlen=512]) 3.10 read a line-feed terminated string, maxlen defaults to 512 characters
readBinnumberFile.readBin([bytes=4 [,count=1]) 3.10 read one or more binary integers from the file, default number of bytes is 4 (32-bits). if count is not equal to 1, an array is returned (even if no integers were read)
readAllarrayFile.readAll([maxlen=512]) 3.10 read all lines into an array of strings, maxlen defaults to 512 characters
raw_readstringFile.raw_read([maxlen=1]) 3.17 read a string from underlying file descriptor. Undefined results when mixed with any other read/write methods except raw_write, including indirect ones. maxlen defaults to one
raw_pollinbooleanFile.raw_pollin([timeout]) 3.17 waits up to timeout milliseconds (or forever if timeout is not specified) for data to be available via raw_read().
writebooleanFile.write(text [,length=text_length]) 3.10 write a string to the file (optionally unix-to-unix or base64 decoding in the process). If the specified length is longer than the text, the remaining length will be written as NUL bytes.
writelnbooleanFile.writeln([text]) 3.10 write a line-feed terminated string to the file
writeBinbooleanFile.writeBin(value(s) [,bytes=4]) 3.10 write one or more binary integers to the file, default number of bytes is 4 (32-bits).If value is an array, writes the entire array to the file.
writeAllbooleanFile.writeAll(array lines) 3.10 write an array of strings to file
raw_writebooleanFile.raw_write(text) 3.17 write a string to the underlying file descriptor. Undefined results when mixed with any other read/write methods except raw_read, including indirect ones.
printfnumberFile.printf(format [,args]) 3.10 write a formatted string to the file (ala fprintf) - CAUTION: for experienced C programmers ONLY
iniGetSectionsarrayFile.iniGetSections([prefix=none]) 3.11 parse all section names from a .ini file (format = '[section]') and return the section names as an array of strings, optionally, only those section names that begin with the specified prefix
iniGetKeysarrayFile.iniGetKeys([section=root]) 3.11 parse all key names from the specified section in a .ini file and return the key names as an array of strings. if section is undefined, returns key names from the root section
iniGetValueundefinedFile.iniGetValue(section, key [,default=none]) 3.11 parse a key from a .ini file and return its value (format = 'key = value'). returns the specified default value if the key or value is missing or invalid. to parse a key from the root section, pass null for section. will return a bool, number, string, or an array of strings determined by the type of default value specified
iniSetValuebooleanFile.iniSetValue(section, key, [value=none]) 3.12 set the specified key to the specified value in the specified section of a .ini file. to set a key in the root section, pass null for section.
iniGetObjectobjectFile.iniGetObject([section=root]) 3.11 parse an entire section from a .ini file and return all of its keys and values as properties of an object. if section is undefined, returns key and values from the root section
iniSetObjectbooleanFile.iniSetObject(section, object) 3.12 write all the properties of the specified object as separate key=value pairs in the specified section of a .ini file. to write an object in the root section, pass null for section.
iniGetAllObjectsarrayFile.iniGetAllObjects([name_property] [,prefix=none]) 3.11 parse all sections from a .ini file and return all (non-root) sections in an array of objects with each section's keys as properties of each object. name_property is the name of the property to create to contain the section's name (default is "name"), the optional prefix has the same use as in the iniGetSections method, if a prefix is specified, it is removed from each section's name
iniSetAllObjectsarrayFile.iniSetAllObjects(object array [,name_property="name"]) 3.12 write an array of objects to a .ini file, each object in its own section named after the object's name_property (default: name)
iniRemoveKeybooleanFile.iniRemoveKey(section, key) 3.14 remove specified key from specified section in .ini file.
iniRemoveSectionbooleanFile.iniRemoveSection(section) 3.14 remove specified section from .ini file.

File properties
Name Type Ver Description
namestring 3.10 filename specified in constructor - READ ONLY
modestring 3.10 mode string specified in open call - READ ONLY
existsboolean 3.10 true if the file is open or exists (case-insensitive) - READ ONLY
is_openboolean 3.10 true if the file has been opened successfully - READ ONLY
eofboolean 3.10 true if the current file position is at the end of file - READ ONLY
errornumber 3.10 the last occurred error value (use clear_error to clear) - READ ONLY
descriptornumber 3.10 the open file descriptor (advanced use only) - READ ONLY
etxnumber 3.10 end-of-text character (advanced use only), if non-zero used by read, readln, and write
debugboolean 3.10 set to true to enable debug log output
positionnumber 3.10 the current file position (offset in bytes), change value to seek within file
datenumber 3.11 last modified date/time (in time_t format)
lengthnumber 3.10 the current length of the file (in bytes)
attributesnumber 3.10 file mode/attributes
network_byte_orderboolean 3.11 set to true if binary data is to be written and read in Network Byte Order (big end first)
rot13boolean 3.11 set to true to enable automatic ROT13 translation of text
uueboolean 3.11 set to true to enable automatic Unix-to-Unix encode and decode on read and write calls
yencboolean 3.11 set to true to enable automatic yEnc encode and decode on read and write calls
base64boolean 3.11 set to true to enable automatic Base64 encode and decode on read and write calls
crc16number 3.11 calculated 16-bit CRC of file contents - READ ONLY
crc32number 3.11 calculated 32-bit CRC of file contents - READ ONLY
chksumnumber 3.11 calculated 32-bit checksum of file contents - READ ONLY
md5_hexundefined 3.11 calculated 128-bit MD5 digest of file contents as hexadecimal string - READ ONLY
md5_base64undefined 3.11 calculated 128-bit MD5 digest of file contents as base64-encoded string - READ ONLY
ini_key_lennumber 3.17 ini style: minimum key length (for left-justified white-space padded keys)

Queue class
Class for bi-directional message queues. Used for inter-thread/module communications. - introduced in v3.12

To create a new (named) Queue object: var q = new Queue(name)

Queue methods
Name Returns Usage Ver Description
pollundefinedQueue.poll([timeout=0]) 3.12 wait for any value to be written to the queue for up to timeout milliseconds (default: 0), returns true or the name (string) of the value waiting (if it has one), or false if no values are waiting
readundefinedQueue.read([string name] or [timeout=0]) 3.13 read a value from the queue, if name not specified, reads next value from the bottom of the queue (waiting up to timeout milliseconds)
peekundefinedQueue.peek([timeout=0]) 3.13 peek at the value at the bottom of the queue, wait up to timeout milliseconds for any value to be written (default: 0)
writebooleanQueue.write(value [,name=none]) 3.12 write a value (optionally named) to the queue

Queue properties
Name Type Ver Description
nameundefined 3.12 name of the queue (if it has one)
data_waitingboolean 3.12 true if data is waiting to be read from queue
read_levelnumber 3.12 number of values in the read queue
write_levelnumber 3.12 number of values in the write qeueue
ownerboolean 3.16 true if current thread is the owner/creator of the queue

Socket class
Class used for TCP/IP socket communications - introduced in v3.10

To create a new Socket object: load('sockdefs.js'); var s = new Socket(type, protocol)
where type = SOCK_STREAM for TCP (default) or SOCK_DGRAM for UDP
and protocol (optional) = the name of the protocol or service the socket is to be used for
To create a socket from a socket descriptor: var s = new Socket(true, descriptor)
where descriptor is the numerical value of an existing valid socket descriptor

Socket methods
Name Returns Usage Ver Description
closevoidSocket.close() 3.10 close (shutdown) the socket immediately
bindbooleanSocket.bind([port] [,ip_address]) 3.11 bind socket to a TCP or UDP port (number or service name), optionally specifying a network interface (via ip_address)
connectbooleanSocket.connect(host, port [,timeout=10.0]) 3.11 connect to a remote port (number or service name) on the specified host (IP address or host name), default timeout value is 10.0 (seconds)
listenbooleanSocket.listen() 3.10 place socket in a state to listen for incoming connections (use before an accept)
acceptobjectSocket.accept() 3.10 accept an incoming connection, returns a new Socket object representing the new connection
sendnumberSocket.send(data) 3.10 send a string (AKA write). Returns the number of bytes sent or undefined if an error occured. Versions before 3.17 returned a bool true if all bytes were sent and false otherwise.
sendlinebooleanSocket.sendline(data) 3.17 send a string (AKA write) with a carriage return line feed appended
sendtobooleanSocket.sendto(data, address, port) 3.10 send data to a specific host (IP address or host name) and port (number or service name), for UDP sockets
sendfilebooleanSocket.sendfile(path/filename) 3.10 send an entire file over the socket
sendBinbooleanSocket.sendBin(value [,bytes=4]) 3.11 send a binary integer over the socket, default number of bytes is 4 (32-bits)
recvstringSocket.recv([maxlen=512, [timeout_sec=120]]) 3.10 receive a string, default maxlen is 512 characters (AKA read)
peekstringSocket.peek([maxlen=512]) 3.10 receive a string, default maxlen is 512 characters, leaves string in receive buffer (TLS sockets will never return more than one byte)
recvlinestringSocket.recvline([maxlen=512] [,timeout=30.0]) 3.10 receive a line-feed terminated string, default maxlen is 512 characters, default timeout is 30 seconds (AKA readline and readln)
recvfromobjectSocket.recvfrom([binary=false] [,maxlen=512 or int_size=4]) 3.11 receive data (string or integer) from a socket (typically UDP)

returns object with ip_address and port of sender along with data properties

binary defaults to false, maxlen defaults to 512 chars, int_size defaults to 4 bytes (32-bits)

recvBinnumberSocket.recvBin([bytes=4]) 3.11 receive a binary integer from the socket, default number of bytes is 4 (32-bits)
getoptionnumberSocket.getoption(option) 3.10 get socket option value, option may be socket option name (see sockopts in sockdefs.js) or number
setoptionbooleanSocket.setoption(option, value) 3.10 set socket option value, option may be socket option name (see sockopts in sockdefs.js) or number
ioctlnumberSocket.ioctl(command [,argument=0]) 3.10 send socket IOCTL (advanced)
pollnumberSocket.poll([timeout=0] [,write=false]) 3.10 poll socket for read or write ability (default is read), default timeout value is 0.0 seconds (immediate timeout)

Socket properties
Name Type Ver Description
option_listobject 3.11 array of socket option names supported by the current platform
errornumber 3.10 error status for the last socket operation that failed - READ ONLY
is_connectedboolean 3.11 true if socket is in a connected state - READ ONLY
is_writeableboolean 3.12 true if socket can accept written data - Setting to false will shutdown the write end of the socket.
is_writableboolean 3.10 alias for is_writeable
data_waitingboolean 3.10 true if data is waiting to be read from socket - READ ONLY
nreadnumber 3.10 number of bytes waiting to be read - TLS sockets will never return more than 1 - READ ONLY
debugnumber 3.10 enable debug logging
descriptornumber 3.10 socket descriptor (advanced uses only)
nonblockingboolean 3.10 use non-blocking operation (default is false)
local_ip_addressstring 3.10 local IP address (string in dotted-decimal format)
local_portnumber 3.10 local TCP or UDP port number
remote_ip_addressstring 3.10 remote IP address (string in dotted-decimal format)
remote_portnumber 3.10 remote TCP or UDP port number
typenumber 3.11 socket type, SOCK_STREAM (TCP) or SOCK_DGRAM (UDP)
network_byte_orderboolean 3.16 true if binary data is to be sent in Network Byte Order (big end first), default is true
ssl_sessionboolean 3.16 set to true to enable SSL as a client on the socket
ssl_serverboolean N/A set to true to enable SSL as a server on the socket

COM class
Class used for serial port communications - introduced in v3.15b

To create a new COM object: var c = new COM('device')
where device = COMx (e.g. COM1) for Win32 or /dev/ttyXY for *nix (e.g. /dev/ttyu0)

COM methods
Name Returns Usage Ver Description
closevoidCOM.close() 3.15 close the port immediately
openbooleanCOM.open() 3.15 connect to a COM port
sendbooleanCOM.send(data) 3.15 send a string (AKA write)
sendfilebooleanCOM.sendfile(path/filename) 3.15 send an entire file over the port
sendBinbooleanCOM.sendBin(value [,bytes=4]) 3.15 send a binary integer over the port, default number of bytes is 4 (32-bits)
recvstringCOM.recv([maxlen=512 [,timeout=30]]) 3.15 receive a string, default maxlen is 512 characters, default timeout is 30 seconds (AKA read)
recvlinestringCOM.recvline([maxlen=512] [,timeout=30.0]) 3.15 receive a line-feed terminated string, default maxlen is 512 characters, default timeout is 30 seconds (AKA readline and readln)
recvBinnumberCOM.recvBin([bytes=4 [,timeout=30]) 3.15 receive a binary integer from the port, default number of bytes is 4 (32-bits), default timeout is 30 seconds

COM properties
Name Type Ver Description
errornumber 3.15 error status for the last COM operation that failed - READ ONLY
is_openboolean 3.15 true if port is in a connected state - READ ONLY
debugboolean 3.15 enable debug logging
descriptornumber 3.15 COM handle (advanced uses only)
network_byte_orderboolean 3.15 true if binary data is to be sent in Network Byte Order (big end first), default is true
baud_ratenumber 3.15 COM port Baud rate
devicestring 3.15 Device name
dtrboolean 3.15 Data Terminal Ready
ctsboolean 3.15 Clear To Send
dsrboolean 3.15 Data Set Ready
ringboolean 3.15 Ring Indicator
dcdboolean 3.15 Data Carrier Detect

CryptContext class
Class used for encryption/decryption - introduced in v3.16b

To create a new CryptContext object: var c = new CryptContext('algorithm')
where algorithm is a property of CryptContext.ALGO

CryptContext methods
Name Returns Usage Ver Description
generate_keyvoidCryptContext.generate_key() 3.16 Generate a new key for the context.
set_keyvoidCryptContext.set_key(key_str) 3.16 Set the key for the context directly.
derive_keyvoidCryptContext.derive_key(keying_data) 3.16 Derive the key from the keying data using keying_algo, keying_iterations, and keying_salt.
encryptstringCryptContext.encrypt(plaintext) 3.16 Encrypt the string and return as a new string.
decryptstringCryptContext.decrypt(ciphertext) 3.16 Decrypt the string and return as a new string.
create_signaturestringCryptContext.create_signature(sigContext) 3.16 Create a signature signed with the sigContext CryptContext object.

CryptContext properties
Name Type Ver Description
algonumber 3.16 Algorithm constant (CryptContext.ALGO.XXX):
  • CryptContext.ALGO.NONE
  • CryptContext.ALGO.DES
  • CryptContext.ALGO.3DES
  • CryptContext.ALGO.IDEA
  • CryptContext.ALGO.CAST
  • CryptContext.ALGO.RC2
  • CryptContext.ALGO.RC4
  • CryptContext.ALGO.AES
  • CryptContext.ALGO.DH
  • CryptContext.ALGO.RSA
  • CryptContext.ALGO.DSA
  • CryptContext.ALGO.ELGAMAL
  • CryptContext.ALGO.ECDSA
  • CryptContext.ALGO.ECDH
  • CryptContext.ALGO.MD5
  • CryptContext.ALGO.SHA1
  • CryptContext.ALGO.SHA2
  • CryptContext.ALGO.SHAng
  • CryptContext.ALGO.HMAC-SHA1
  • CryptContext.ALGO.HMAC-SHA2
  • CryptContext.ALGO.HMAC-SHAng
blocksizenumber 3.16 Cipher block size in bytes
hashvalueundefined 3.16 Output of hasing algorithms (ie: MD5, SHA1, etc)
ivundefined 3.16 Cipher IV
ivsizenumber 3.16 Cipher IV size in bytes
keying_algoundefined 3.16 The keying algorithm used to derive the key
keying_iterationsnumber 3.16 The number of iterates used to derive the key
keying_saltundefined 3.16 The salt value used to derive an encryption key from a key (Length must be between 8 and 64)
keysizenumber 3.16 Key size in bytes
labelundefined 3.16 Key label
modenumber 3.16 Mode constant (CryptContext.MODE.XXX):
  • CryptContext.MODE.None
  • CryptContext.MODE.ECB
  • CryptContext.MODE.CBC
  • CryptContext.MODE.CFB
  • CryptContext.MODE.GCM
algo_namestring 3.16 Algorithm name
mode_namestring 3.16 Mode name

CryptKeyset class
Class used for storing CryptContext keys - introduced in v3.16b

To create a new CryptKeyset object: var c = new CryptKeyset('filename' [ opts = CryptKeyset.KEYOPT.NONE ])
where filename is the name of the file to create, and opts is a value from CryptKeyset.KEYOPT

CryptKeyset methods
Name Returns Usage Ver Description
add_private_keyvoidCryptKeyset.add_private_key(CryptContext, password) 3.16 Add a private key to the keyset, encrypting it with .
add_public_keyvoidCryptKeyset.add_public_key(CryptCert) 3.16 Add a public key (certificate) to the keyset.
closevoidCryptKeyset.close() 3.16 Close the keyset.
delete_keyvoidCryptKeyset.delete_key(label) 3.16 Delete the key with
get_private_keyobjectCryptKeyset.get_private_key(label, password) 3.16 Returns a CryptContext from the private key with
get_public_keyobjectCryptKeyset.get_public_key(label) 3.16 Returns a CryptCert from the public key with

conio object
CONIO Library Object - introduced in v3.15

conio methods
Name Returns Usage Ver Description
initbooleanconio.init([mode]) 3.15 Initializes the conio library and creates a window if needed. Mode is a string with one of the following values:
"AUTO" (default)Automatically select the "best" output mode.
"ANSI"Use ANSI escape sequences directly
"STDIO"Use stdio, worst, but most compatible mode.
"X"Use X11 output *nix only)
"CONIO"Use the native conio library (Windows only)
"CONIO_FULLSCREEN"Use the native conio library and request full-screen (full-screen does not work on all versions of Windows) (Windows only)
"CURSES"Use the curses terminal library (*nix only)
"CURSES_IBM"Use the curses terminal library and write extended ASCII characters directly as-is, assuming the terminal is using CP437. (*nix only)
"SDL"Use the SDL library for output.
"SDL_FULLSCREEN"Use the SDL library for output (fullscreen).
"SDL_YUV"Use the SDL library for output using an overlay which allows hardware-based arbitrary scaling.
"SDL_YUV"Use the SDL library for output using an overlay which allows hardware-based arbitrary scaling (fullscreen).
suspendvoidconio.suspend() 3.15 Suspends conio in CONIO or CURSES modes so the terminal can be used for other things.
clreolvoidconio.clreol() 3.15 Clear to end of line
clrscrvoidconio.clrscr() 3.15 Clears the screen
wscrollvoidconio.wscroll() 3.15 Scrolls the currently defined window up by one line.
dellinevoidconio.delline() 3.15 Deletes the current line and moves lines below up by one line.
inslinevoidconio.insline() 3.15 Inserts a new blank line on the current line and scrolls lines below down to make room.
normvideovoidconio.normvideo() 3.15 Sets the current attribute to "normal" (light grey on black)
getchnumberconio.getch() 3.15 Waits for and returns a character from the user. Extended keys are returned as two characters.
getchenumberconio.getche() 3.15 Waits for a character from the user, then echos it. Extended keys can not be returned and are lost.
beepvoidconio.beep() 3.15 Beeps.
getfontnumberconio.getfont(fnum) 3.15 Returns the current font ID or -1 if fonts aren't supported.
hidemousenumberconio.hidemouse() 3.15 Hides the mouse cursor. Returns -1 if it cannot be hidden.
showmousenumberconio.showmouse() 3.15 Shows the mouse cursor. Returns -1 if it cannot be shown.
setcursortypevoidconio.setcursortype(type) 3.15 Sets the cursor type. Legal values:
0No cursor
1Solid cursor (fills whole cell)
2Normal cursor
gotoxyvoidconio.gotoxy(x, y) 3.15 Moves the cursor to the given x/y position.
putchnumberconio.putch(charcode) 3.15 Puts the character with the specified ASCII character on the screen and advances the cursor. Returns the character code passed in.
ungetchnumberconio.ungetch(charcode) 3.15 Pushes the specified charcode into the input buffer. The next getch() call will get this character.
loadfontvoidconio.loadfont(filename) 3.15 Loads the filename as the current font. Returns -1 on failure.
settitlevoidconio.settitle(title) 3.15 Sets the window title if possible.
setnamevoidconio.setname(name) 3.15 Sets the application name. In some modes, this overwrites the window title.
cputsvoidconio.cputs(string) 3.15 Outputs string to the console.
setfontnumberconio.setfont(font [, force, fnum]) 3.15 Sets a current font to the specified font. If force is set, will change video modes if the current one callot use the specified font. fnum selects which current font to change:
0Default font
1Main font
2First alternate font
3Second alternate font
4Third alternate font

Returns -1 on failure
getpassstringconio.getpass(prompt) 3.15 Prompts for a password, and waits for it to be entered. Characters are not echoed to the screen.
windowvoidconio.window(start_x, start_y, end_x, end_y) 3.15 Sets the current window.
cgetsvoidconio.cgets(max_len) 3.15 Inputs a string, echoing as it's typed, with the specified max_len (up to 255).
movetextvoidconio.movetext(start_x, start_y, end_x, end_y, dest_x, dest_y) 3.15 Copies the specified screen contents to dest_x/dest_y.
puttextbooleanconio.puttext(start_x, start_y, end_x, end_y, bytes) 3.15 Puts the contents of the bytes array onto the screen filling the specified rectange. The array is a sequences if integers between 0 and 255 specifying first the ascii character code, then the attribute for that character.
gettextarrayconio.gettext(start_x, start_y, end_x, end_y) 3.15 Returns an array containing the characters and attributes for the specified rectangle.

conio properties
Name Type Ver Description
wscrollboolean 3.15 Allows windows to scroll
directvideoboolean 3.15 Enables direct video writes (does nothing)
hold_updateboolean 3.15 Do not update the screen when characters are printed
puttext_can_moveboolean 3.15 Calling puttext() (and some other things implemended using it) can move the cursor position
modenumber 3.15 The current video mode
mouseboolean 3.15
ESCDELAYnumber 3.15 Delay in MS after getting an escape character before assuming it is not part of a sequence. For curses and ANSI modes
textattrnumber 3.15 Current text attribute
kbhitboolean 3.15 True if a keystroke is pending
wherexnumber 3.15 Current x position on the screen
whereynumber 3.15 Current y position on the screen
textmodenumber 3.15 Current text mode
winleftnumber 3.15 Left column of current window
wintopnumber 3.15 Top row of current window
winrightnumber 3.15 Right column of current window
winbottomnumber 3.15 Bottom row of current window
screenwidthnumber 3.15 Width of the screen
screenheightnumber 3.15 Height of the screen
normattrnumber 3.15 Atrribute considered "normal"
textbackgroundnumber 3.15 Background colour
textcolornumber 3.15 Foreground colour
clipboardstring 3.15 Text in the clipboard
lowvideoboolean 3.15 Current attribute is low intensity
highvideoboolean 3.15 Current attribute is high intensity

Totals: 603 properties, 378 methods