Name | Returns | Usage | Ver | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
exit | void | exit([exit_code])
3.11
| stop script execution, optionally setting the global property exit_code to the specified numeric value
| load | undefined | load([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). readln | string | readln([count])
| 3.11
| read a single line, up to count characters, from input stream
| mswait | number | mswait([milliseconds=1])
| 3.13
| millisecond wait/sleep routine (AKA sleep), returns number of elapsed clock ticks (in v3.13)
| yield | void | yield([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
| random | number | random(max_number=100)
| 3.10
| return random integer between 0 and max_number-1
| time | number | time()
| 3.10
| return current time and date in Unix (time_t) format (number of seconds since Jan-01-1970)
| beep | void | beep([frequency=500] [,duration=500])
| 3.10
| produce a tone on the local speaker at specified frequency for specified duration (in milliseconds)
| sound | boolean | sound([filename])
| 3.10
| play a waveform (.wav) sound file (currently, on Windows platforms only)
| ctrl | string | ctrl(number or string)
| 3.11
| return ASCII control character representing character passed - Example: ctrl('C') returns ''
| ascii | undefined | ascii([string text] or [number value])
| 3.10
| convert single character to numeric ASCII value or vice-versa (returns number OR string)
| ascii_str | string | ascii_str(text)
| 3.10
| convert extended-ASCII in text string to plain ASCII, returns modified string
| strip_ctrl | string | strip_ctrl(text)
| 3.10
| strip control characters from string, returns modified string
| strip_exascii | string | strip_exascii(text)
| 3.10
| strip extended-ASCII characters from string, returns modified string
| skipsp | string | skipsp(text)
| 3.15
| skip (trim) white-space characters off beginning of string, returns modified string
| truncsp | string | truncsp(text)
| 3.10
| truncate (trim) white-space characters off end of string, returns modified string
| truncstr | string | truncstr(text, charset)
| 3.10
| truncate (trim) string at first char in charset, returns modified string
| lfexpand | string | lfexpand(text)
| 3.10
| expand line-feeds (LF) to carriage-return/line-feeds (CRLF), returns modified string
| wildmatch | boolean | wildmatch([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. '/')
| backslash | string | backslash(path)
| 3.12
| returns directory path with trailing (platform-specific) path delimeter (i.e. "slash" or "backslash")
| fullpath | string | fullpath(path)
| 3.15
| Creates an absolute or full path name for the specified relative path name.
| file_getname | string | file_getname(path/filename)
| 3.11
| returns filename portion of passed path string
| file_getext | string | file_getext(path/filename)
| 3.11
| returns file extension portion of passed path/filename string (including '.') or undefined if no extension is found
| file_getcase | string | file_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_cfgname | string | file_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_getdosname | string | file_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_exists | boolean | file_exists(path/filename)
| 3.10
| verify a file's existence
| file_remove | boolean | file_remove(path/filename)
| 3.10
| delete a file
| file_removecase | boolean | file_removecase(path/filename)
| 3.14
| delete files case insensitively
| file_rename | boolean | file_rename(path/oldname, path/newname)
| 3.11
| rename a file, possibly moving it to another directory in the process
| file_copy | boolean | file_copy(path/source, path/destination)
| 3.11
| copy a file from one directory or filename to another
| file_backup | boolean | file_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_isdir | boolean | file_isdir(path/filename)
| 3.10
| check if specified filename is a directory
| file_attrib | number | file_attrib(path/filename)
| 3.10
| get a file's permissions/attributes
| file_date | number | file_date(path/filename)
| 3.10
| get a file's last modified date/time (in time_t format)
| file_size | number | file_size(path/filename)
| 3.10
| get a file's length (in bytes)
| file_utime | boolean | file_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_touch | boolean | file_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_mutex | boolean | file_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_compare | boolean | file_compare(path/file1, path/file2)
| 3.14
| compare 2 files, returning true if they are identical, false otherwise
| directory | array | directory(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_freespace | number | dir_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_size | number | disk_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_select | array | socket_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
| mkdir | boolean | mkdir(path/directory)
| 3.10
| make a directory
| mkpath | boolean | mkpath(path/directory)
| 3.15
| make a path to a directory (creating all necessary sub-directories)
| rmdir | boolean | rmdir(path/directory)
| 3.10
| remove a directory
| strftime | string | strftime(format [,time=current])
| 3.10
| return a formatted time string (ala C strftime)
| format | string | format(format [,args])
| 3.10
| return a formatted string (ala the standard C sprintf function)
| html_encode | string | html_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_decode | string | html_decode(html)
| 3.11
| return a decoded HTML-encoded text string
| word_wrap | string | word_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_msg | string | quote_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_translate | string | rot13_translate(text)
| 3.11
| returns ROT13-translated version of text string (will encode or decode text)
| base64_encode | string | base64_encode(text)
| 3.11
| returns base64-encoded version of text string or null on error
| base64_decode | string | base64_decode(text)
| 3.11
| returns base64-decoded text string or null on error
| crc16_calc | number | crc16_calc(text)
| 3.11
| calculate and return 16-bit CRC of text string
| crc32_calc | number | crc32_calc(text)
| 3.11
| calculate and return 32-bit CRC of text string
| chksum_calc | number | chksum_calc(text)
| 3.11
| calculate and return 32-bit checksum of text string
| md5_calc | string | md5_calc(text [,hex=false])
| 3.11
| calculate and return 128-bit MD5 digest of text string, result encoded in base64 (default) or hexadecimal
| resolve_ip | string | resolve_ip(hostname)
| 3.11
| resolve IP address of specified hostname (AKA gethostbyname)
| resolve_host | string | resolve_host(ip_address)
| 3.11
| resolve hostname of specified IP address (AKA gethostbyaddr)
| netaddr_type | number | netaddr_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_queues | array | list_named_queues()
| 3.12
| returns an array of named queues (created with the Queue constructor)
| flags_str | undefined | flags_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)
| |
Name | Type | Ver | Description |
---|---|---|---|
argc | number | N/A | number of arguments passed to the script |
argv | array | N/A | array of argument strings (argv.length == argc) |
errno | number | N/A | last system error number |
errno_str | string | N/A | description of last system error |
socket_errno | number | N/A | last socket-related error number (same as errno on Unix platforms) |
Name | Returns | Usage | Ver | Description | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
eval | undefined | js.eval(script)
3.11
| evaluate a JavaScript string in its own (secure) context, returning the result
| gc | void | js.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_exit | void | js.on_exit(to_eval)
| 3.13
| add a string to evaluate/execute (LIFO stack) upon script's termination
| report_error | void | js.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_parent | object | js.get_parent(object)
| 3.14
| return the parent of the specified object
| get_size | number | js.get_size([object])
| 3.16
| return the size in bytes the object uses in memory (forces GC)
| flatten_string | void | js.flatten_string([string])
| 3.16
| flattens a string, optimizing allocated memory used for concatenated strings
| |
Name | Type | Ver | Description |
---|---|---|---|
version | string | 3.11 | JavaScript engine version information (AKA system.js_version) |
auto_terminate | boolean | 3.11 | set to false to disable the automatic termination of the script upon external request |
terminated | boolean | 3.11 | termination has been requested (stop execution as soon as possible) |
counter | number | 3.16 | number of operation callbacks performed in this runtime |
time_limit | number | 3.16 | maximum number of operation callbacks, used for infinite-loop detection (0=disabled) |
yield_interval | number | 3.11 | interval of periodic time-slice yields (lower number=higher frequency, 0=disabled) |
gc_interval | number | 3.11 | interval of periodic garbage collection attempts (lower number=higher frequency, 0=disabled) |
gc_attempts | number | 3.11 | number of garbage collections attempted in this runtime - READ ONLY |
global | object | 3.14 | global (top level) object - READ ONLY |
load_path_list | object | 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_path | string | N/A | full path and filename of JS file executed |
exec_file | string | N/A | JS filename executed (with no path) |
exec_dir | string | N/A | directory of executed JS file |
startup_dir | string | N/A | Either the configured startup directory in SCFG (for externals) or the cwd when jsexec is started |
scope | object | N/A | global scope for this script |
Name | Returns | Usage | Ver | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
username | string | system.username(number)
3.11
| returns name of user in specified user record number, or empty string if not found
| alias | string | system.alias(alias)
| 3.10
| returns name of user that matches alias (if found in ctrl/alias.cfg)
| matchuser | number | system.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
| matchuserdata | number | system.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
| trashcan | boolean | system.trashcan(basename, find_string)
| 3.10
| search text/basename.can for pseudo-regexp
| findstr | boolean | system.findstr(path/filename, find_string)
| 3.10
| search any file for pseudo-regexp
| zonestr | string | system.zonestr([timezone=local])
| 3.10
| convert time zone integer to string, defaults to system timezone if timezone not specified
| timestr | string | system.timestr([time=current])
| 3.10
| convert time_t integer into a time string, defaults to current time if time not specified
| datestr | string | system.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.
| secondstr | string | system.secondstr(seconds)
| 3.10
| convert elapsed time in seconds into a string in hh:mm:ss format
| spamlog | boolean | system.spamlog([protocol, action, reason, host, ip, to, from])
| 3.10
| log a suspected SPAM attempt
| hacklog | boolean | system.hacklog([protocol, user, text, host, ip, port])
| 3.10
| log a suspected hack attempt
| filter_ip | boolean | system.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_message | string | system.get_node_message(node_number)
| 3.11
| read any messages waiting for the specified node and return in a single string
| put_node_message | boolean | system.put_node_message(node_number, message_text)
| 3.10
| send a node a short text message, delivered immediately
| get_telegram | string | system.get_telegram(user_number)
| 3.11
| returns any short text messages waiting for the specified user
| put_telegram | boolean | system.put_telegram(user_number, message_text)
| 3.10
| sends a user a short text message, delivered immediately or during next logon
| new_user | object | system.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_user | boolean | system.del_user(number)
| 3.16
| delete the specified user account
| exec | number | system.exec(command-line)
| 3.11
| executes a native system/shell command-line, returns 0 on success
| popen | array | system.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_syspass | boolean | system.check_syspass(password)
| 3.11
| compares the supplied password against the system password and returns true if it matches
| check_name | boolean | system.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_pid | boolean | system.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_pid | boolean | system.terminate_pid(process-ID)
| 3.15
| terminates executing process on the system with the specified process ID, returns true on success
| |
Name | Type | Ver | Description |
---|---|---|---|
name | string | 3.10 | BBS name |
operator | string | 3.10 | operator name |
qwk_id | string | 3.10 | system QWK-ID (for QWK packets) |
settings | number | 3.10 | settings bitfield (see SYS_* in sbbsdefs.js for bit definitions) |
psname | string | 3.10 | PostLink name |
psnum | number | 3.10 | PostLink system number |
inet_addr | string | 3.11 | Internet address (host or domain name) |
location | string | 3.10 | location (city, state) |
timezone | number | 3.10 | timezone (use system.zonestr() to get string representation) |
pwdays | number | 3.10 | days between forced password changes |
deldays | number | 3.10 | days to preserve deleted user records |
lastuser | number | 3.11 | last user record number in user database (includes deleted and inactive user records) |
lastuseron | string | 3.10 | name of last user to logoff |
freediskspace | number | 3.10 | amount of free disk space (in bytes) |
freediskspacek | number | 3.10 | amount of free disk space (in kilobytes) |
nodes | number | 3.10 | total number of BBS nodes |
lastnode | number | 3.10 | last displayable node number |
newuser_password | string | 3.10 | new user password |
newuser_magic_word | string | 3.10 | new user magic word |
newuser_level | number | 3.10 | new user level |
newuser_flags1 | number | 3.10 | new user flag set #1 |
newuser_flags2 | number | 3.10 | new user flag set #2 |
newuser_flags3 | number | 3.10 | new user flag set #3 |
newuser_flags4 | number | 3.10 | new user flag set #4 |
newuser_restrictions | number | 3.10 | new user restriction flags |
newuser_exemptions | number | 3.10 | new user exemption flags |
newuser_credits | number | 3.10 | new user credits |
newuser_minutes | number | 3.10 | new user extra minutes |
newuser_command_shell | string | 3.10 | new user command shell |
newuser_editor | string | 3.10 | new user external editor |
newuser_settings | number | 3.10 | new user settings |
newuser_download_protocol | string | 3.10 | new user file transfer protocol (command key) |
newuser_expiration_days | number | 3.10 | new user expiration days |
newuser_questions | number | 3.10 | new user questions bitfield (see UQ_* in sbbsdefs.js for bit definitions) |
expired_level | number | 3.10 | expired user level |
expired_flags1 | number | 3.10 | expired user flag set #1 |
expired_flags2 | number | 3.10 | expired user flag set #2 |
expired_flags3 | number | 3.10 | expired user flag set #3 |
expired_flags4 | number | 3.10 | expired user flag set #4 |
expired_restrictions | number | 3.10 | expired user restriction flags |
expired_exemptions | number | 3.10 | expired user exemption flags |
node_dir | string | 3.10 | node directory |
ctrl_dir | string | 3.10 | control file directory |
data_dir | string | 3.10 | data file directory |
text_dir | string | 3.10 | text file directory |
temp_dir | string | 3.10 | temporary file directory |
exec_dir | string | 3.10 | executable file directory |
mods_dir | string | 3.10 | modified modules directory (optional) |
logs_dir | string | 3.10 | log file directory |
devnull | string | 3.11 | platform-specific "null" device filename |
temp_path | string | 3.12 | platform-specific temporary file directory |
cmd_shell | string | 3.14 | platform-specific command processor/shell |
clock_ticks | number | 3.11 | amount of elapsed processor time in clock 'ticks' |
clock_ticks_per_second | number | 3.11 | number of clock ticks per second |
timer | number | 3.14 | high-resolution timer, in seconds (fractional seconds supported) |
local_host_name | string | 3.11 | private host name that uniquely identifies this system on the local network |
host_name | string | N/A | public host name that uniquely identifies this system on the Internet (usually the same as system.inet_addr) |
socket_lib | string | N/A | socket library version information |
uptime | number | N/A | time/date system was brought online (in time_t format) |
version | string | N/A | Synchronet full version information (e.g. '3.10k Beta Debug') |
revision | string | N/A | date and time compiled |
beta_version | string | N/A | Synchronet version number (e.g. '3.10') |
full_version | string | N/A | Synchronet revision letter (e.g. 'k') |
version_notice | string | N/A | Synchronet alpha/beta designation (e.g. ' beta') |
version_num | number | N/A | Synchronet version notice (includes version and platform) |
version_hex | number | N/A | Synchronet version number in decimal (e.g. 31301 for v3.13b) |
platform | string | N/A | Synchronet version number in hexadecimal (e.g. 0x31301 for v3.13b) |
architecture | string | N/A | platform description (e.g. 'Win32', 'Linux', 'FreeBSD') |
msgbase_lib | string | N/A | architecture description (e.g. 'i386', 'i686', 'x86_64') |
compiled_with | string | N/A | message base library version information |
compiled_when | string | N/A | compiler used to build Synchronet |
copyright | string | N/A | Synchronet copyright display |
js_version | string | N/A | JavaScript engine version information |
os_version | string | N/A | operating system version information |
fido_addr_list | object | N/A | array of FidoNet Technology Network (FTN) addresses associated with this system |
Name | Type | Ver | Description |
---|---|---|---|
total_logons | number | 3.10 | total logons |
logons_today | number | 3.10 | logons today |
total_timeon | number | 3.10 | total time used |
timeon_today | number | 3.10 | time used today |
total_files | number | 3.10 | total files in file bases |
files_uploaded_today | number | 3.10 | files uploaded today |
bytes_uploaded_today | number | 3.10 | bytes uploaded today |
files_downloaded_today | number | 3.10 | files downloaded today |
bytes_downloaded_today | number | 3.10 | bytes downloaded today |
total_messages | number | 3.10 | total messages in message bases |
messages_posted_today | number | 3.10 | messages posted today |
total_email | number | 3.10 | total messages in mail base |
email_sent_today | number | 3.10 | email sent today |
total_feedback | number | 3.10 | total feedback messages waiting |
feedback_sent_today | number | 3.10 | feedback sent today |
total_users | number | 3.10 | total user records (does not include deleted or inactive user records) |
new_users_today | number | 3.10 | new users today |
Name | Type | Ver | Description |
---|---|---|---|
status | number | 3.10 | status (see nodedefs.js for valid values) |
errors | number | 3.10 | error counter |
action | number | 3.10 | current user action (see nodedefs.js) |
useron | number | 3.10 | current user number |
connection | number | 3.10 | connection speed (0xffff = Telnet or RLogin) |
misc | number | 3.10 | miscellaneous bitfield (see nodedefs.js) |
aux | number | 3.10 | auxillary value |
extaux | number | 3.10 | extended auxillary value |
dir | string | 3.15 | node directory |
Name | Type | Ver | Description |
---|---|---|---|
version | string | 3.10 | server name and version number |
version_detail | string | 3.10 | detailed version/build information |
interface_ip_address | string | 3.11 | IP address of bound network interface (0.0.0.0 = ANY) |
options | number | 3.11 | bit-field of server-specific startup options |
clients | number | 3.11 | number of active clients (if available) |
Name | Type | Ver | Description |
---|---|---|---|
socket | object | 3.10 | client's IP address (in dotted-decimal format) |
ip_address | string | 3.10 | client's host name (up to 64 characters) |
host_name | string | 3.10 | client's TCP or UDP port number |
port | number | 3.10 | date/time of initial connection (in time_t format) |
connect_time | number | 3.10 | protocol description (e.g. 'Telnet', 'FTP', etc.) |
protocol | string | 3.10 | user's name/alias (if logged in) |
user_name | string | N/A | instance of Socket class representing client's TCP/IP connection |
To create a new user object: var u = new User(number)
Name | Returns | Usage | Ver | Description | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
compare_ars | boolean | user.compare_ars(string ars)
3.10
| Verify user meets access requirements string
| adjust_credits | boolean | user.adjust_credits(count)
| 3.14
| Adjust user's credits by count (negative to subtract)
| adjust_minutes | boolean | user.adjust_minutes(count)
| 3.14
| Adjust user's extra minutes count (negative to subtract)
| posted_message | boolean | user.posted_message([count])
| 3.14
| Adjust user's posted-messages statistics by count (default: 1) (negative to subtract)
| sent_email | boolean | user.sent_email([count] [,bool feedback])
| 3.14
| Adjust user's email/feedback-sent statistics by count (default: 1) (negative to subtract)
| uploaded_file | boolean | user.uploaded_file([bytes] [,files])
| 3.14
| Adjust user's files/bytes-uploaded statistics
| downloaded_file | boolean | user.downloaded_file([bytes] [,files])
| 3.14
| Adjust user's files/bytes-downloaded statistics
| get_time_left | number | user.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 |
Name | Type | Ver | Description |
---|---|---|---|
number | number | 3.10 | record number (1-based) |
alias | string | 3.10 | alias/name |
name | string | 3.10 | real name |
handle | string | 3.10 | chat handle |
ip_address | string | 3.10 | IP address last logged on from |
note | string | 3.10 | AKA ip_address |
host_name | string | 3.10 | host name last logged on from |
computer | string | 3.10 | AKA host_name |
comment | string | 3.10 | sysop's comment |
netmail | string | 3.10 | external e-mail address |
string | 3.10 | local Internet e-mail address - READ ONLY | |
address | string | 3.10 | street address |
location | string | 3.10 | location (city, state) |
zipcode | string | 3.10 | zip/postal code |
phone | string | 3.10 | phone number |
birthdate | string | 3.10 | birth date |
age | number | 3.10 | calculated age in years - READ ONLY |
connection | string | 3.10 | connection type |
modem | string | 3.10 | AKA connection |
screen_rows | number | 3.10 | terminal rows (lines) |
gender | string | 3.10 | gender type |
cursub | string | 3.10 | current/last message sub-board (internal code) |
curdir | string | 3.10 | current/last file directory (internal code) |
curxtrn | string | 3.10 | current/last external program (internal code) run |
editor | string | 3.10 | external message editor (internal code) or blank if none |
command_shell | string | 3.10 | command shell (internal code) |
settings | number | 3.10 | settings bitfield - see USER_* in sbbsdefs.js for bit definitions |
qwk_settings | number | 3.10 | QWK packet settings bitfield - see QWK_* in sbbsdefs.js for bit definitions |
chat_settings | number | 3.10 | chat settings bitfield - see CHAT_* in sbbsdefs.js for bit definitions |
temp_file_ext | string | 3.10 | temporary file type (extension) |
new_file_time | number | 3.11 | new file scan date/time (time_t format) |
download_protocol | string | 3.10 | file transfer protocol (command key) |
logontime | number | 3.10 | logon time (time_t format) |
cached | boolean | 3.14 | record is currently cached in memory |
is_sysop | boolean | 3.15 | user has a System Operator's security level |
Name | Type | Ver | Description |
---|---|---|---|
password | string | 3.10 | password |
password_date | number | 3.10 | date password last modified (time_t format) |
level | number | 3.10 | security level (0-99) |
flags1 | number | 3.10 | flag set #1 (bitfield) can use +/-[A-?] notation |
flags2 | number | 3.10 | flag set #2 (bitfield) can use +/-[A-?] notation |
flags3 | number | 3.10 | flag set #3 (bitfield) can use +/-[A-?] notation |
flags4 | number | 3.10 | flag set #4 (bitfield) can use +/-[A-?] notation |
exemptions | number | 3.10 | exemption flags (bitfield) can use +/-[A-?] notation |
restrictions | number | 3.10 | restriction flags (bitfield) can use +/-[A-?] notation |
credits | number | 3.10 | credits |
free_credits | number | 3.10 | free credits (for today only) |
minutes | number | 3.10 | extra minutes (time bank) |
extra_time | number | 3.10 | extra minutes (for today only) |
expiration_date | number | 3.10 | expiration date/time (time_t format) |
Name | Type | Ver | Description |
---|---|---|---|
laston_date | number | 3.10 | date of previous logon (time_t format) |
firston_date | number | 3.10 | date of first logon (time_t format) |
total_logons | number | 3.10 | total number of logons |
logons_today | number | 3.10 | total logons today |
total_timeon | number | 3.10 | total time used (in minutes) |
timeon_today | number | 3.10 | time used today |
timeon_last_logon | number | 3.10 | time used last session |
total_posts | number | 3.10 | total messages posted |
total_emails | number | 3.10 | total e-mails sent |
total_feedbacks | number | 3.10 | total feedback messages sent |
email_today | number | 3.10 | e-mail sent today |
posts_today | number | 3.10 | messages posted today |
bytes_uploaded | number | 3.10 | total bytes uploaded |
files_uploaded | number | 3.10 | total files uploaded |
bytes_downloaded | number | 3.10 | total bytes downloaded |
files_downloaded | number | 3.10 | total files downloaded |
leech_attempts | number | 3.10 | suspected leech downloads |
mail_waiting | number | 3.12 | number of e-mail messages currently waiting |
mail_pending | number | 3.12 | number of e-mail messages sent, currently pending deletion |
Name | Type | Ver | Description |
---|---|---|---|
time_per_logon | number | 3.11 | time (in minutes) per logon |
time_per_day | number | 3.11 | time (in minutes) per day |
logons_per_day | number | 3.11 | logons per day |
lines_per_message | number | 3.11 | lines per message (post or email) |
email_per_day | number | 3.11 | email sent per day |
posts_per_day | number | 3.11 | messages posted per day |
free_credits_per_day | number | 3.11 | free credits given per day |
Name | Returns | Usage | Ver | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
atcode | string | bbs.atcode(code_string)
3.10
| returns @-code value, specified code string does not include @ character delimiters
| text | string | bbs.text(line_number)
| 3.10
| returns specified text string from text.dat
| replace_text | boolean | bbs.replace_text(line_number, string text)
| 3.10
| replaces specified text string in memory
| revert_text | boolean | bbs.revert_text([line_number=all])
| 3.10
| reverts specified text string to original text string; if line_number unspecified, reverts all text lines
| load_text | boolean | bbs.load_text(base_filename)
| 3.10
| load an alternate text.dat from ctrl directory, automatically appends '.dat' to basefilename
| newuser | void | bbs.newuser()
| 3.10
| interactive new user procedure
| login | boolean | bbs.login(user_name, password_prompt)
| 3.10
| login with user_name, displaying password_prompt for password (if required)
| logon | boolean | bbs.logon()
| 3.10
| interactive logon procedure
| logoff | void | bbs.logoff([prompt=true])
| 3.15
| interactive logoff procedure, pass false for prompt argument to avoid yes/no prompt
| logout | void | bbs.logout()
| 3.10
| non-interactive logout procedure
| hangup | void | bbs.hangup()
| 3.10
| hangup (disconnect) immediately
| nodesync | void | bbs.nodesync()
| 3.10
| synchronize with node database, checks for messages, interruption, etc. (AKA node_sync)
| auto_msg | void | bbs.auto_msg()
| 3.10
| read/create system's auto-message
| time_bank | void | bbs.time_bank()
| 3.10
| enter the time banking system
| qwk_sec | void | bbs.qwk_sec()
| 3.10
| enter the QWK message packet upload/download/config section
| text_sec | void | bbs.text_sec()
| 3.10
| enter the text files section
| xtrn_sec | void | bbs.xtrn_sec()
| 3.10
| enter the external programs section
| xfer_policy | void | bbs.xfer_policy()
| 3.10
| display the file transfer policy
| batch_menu | void | bbs.batch_menu()
| 3.10
| enter the batch file transfer menu
| batch_download | boolean | bbs.batch_download()
| 3.10
| start a batch download
| batch_add_list | void | bbs.batch_add_list(list_filename)
| 3.10
| add file list to batch download queue
| send_file | boolean | bbs.send_file(filename [,protocol])
| 3.14
| send specified filename (complete path) to user via user-prompted (or optionally specified) protocol
| receive_file | boolean | bbs.receive_file(filename [,protocol])
| 3.14
| received specified filename (complete path) frome user via user-prompted (or optionally specified) protocol
| temp_xfer | void | bbs.temp_xfer()
| 3.10
| enter the temporary file tranfer menu
| user_sync | void | bbs.user_sync()
| 3.10
| read the current user data from the database
| user_config | void | bbs.user_config()
| 3.10
| enter the user settings configuration menu
| sys_info | void | bbs.sys_info()
| 3.10
| display system information
| sub_info | void | bbs.sub_info([sub-board=current])
| 3.10
| display message sub-board information (current sub-board, if unspecified)
| dir_info | void | bbs.dir_info([directory=current])
| 3.10
| display file directory information (current directory, if unspecified)
| user_info | void | bbs.user_info()
| 3.10
| display current user information
| ver | void | bbs.ver()
| 3.10
| display software version information
| sys_stats | void | bbs.sys_stats()
| 3.10
| display system statistics
| node_stats | void | bbs.node_stats([node_number=current])
| 3.10
| display current (or specified) node statistics
| list_users | void | bbs.list_users([mode=UL_ALL])
| 3.10
| display user list(see UL_* in sbbsdefs.js for valid mode values)
| edit_user | void | bbs.edit_user([user_number=current])
| 3.10
| enter the user editor
| change_user | void | bbs.change_user()
| 3.10
| change to a different user
| list_logons | void | bbs.list_logons()
| 3.10
| display the logon list
| read_mail | void | bbs.read_mail([which=MAIL_YOUR] [,user_number=current])
| 3.10
| read private e-mail(see MAIL_* in sbbsdefs.js for valid which values)
| email | boolean | bbs.email(to_user_number [,mode=WM_EMAIL] [,top=none] [,subject=none])
| 3.10
| send private e-mail to a local user
| netmail | boolean | bbs.netmail(address [,mode=WM_NONE] [,subject=none])
| 3.10
| send private netmail
| bulk_mail | void | bbs.bulk_mail([ars])
| 3.10
| send bulk private e-mail, if ars not specified, prompt for destination users
| upload_file | boolean | bbs.upload_file([directory=current])
| 3.10
| upload file to file directory specified by number or internal code
| bulk_upload | boolean | bbs.bulk_upload([directory=current])
| 3.10
| add files (already in local storage path) to file directory specified by number or internal code
| resort_dir | boolean | bbs.resort_dir([directory=current])
| 3.10
| re-sort the file directory specified by number or internal code)
| list_files | number | bbs.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_info | number | bbs.list_file_info([directory=current] [,filespec="*.*"] [,mode=FI_INFO])
| 3.10
| list extended file information for files in the specified file directory
| post_msg | boolean | bbs.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_scan | void | bbs.cfg_msg_scan([type=SCAN_CFG_NEW])
| 3.10
| configure message scan (type is either SCAN_CFG_NEW or SCAN_CFG_TOYOU)
| cfg_msg_ptrs | void | bbs.cfg_msg_ptrs()
| 3.10
| change message scan pointer values
| reinit_msg_ptrs | void | bbs.reinit_msg_ptrs()
| 3.10
| re-initialize new message scan pointers
| scan_subs | void | bbs.scan_subs([mode=SCAN_NEW] [,all=false])
| 3.10
| scan sub-boards for messages
| scan_dirs | void | bbs.scan_dirs([mode=FL_NONE] [,all=false])
| 3.10
| scan directories for files
| scan_msgs | boolean | bbs.scan_msgs([sub-board=current] [,mode=SCAN_READ] [,string find])
| 3.10
| scan messages in the specified message sub-board (number or internal code), optionally search for 'find' string (AKA scan_posts)
| list_msgs | number | bbs.list_msgs([sub-board=current] [,mode=SCAN_READ] [,message_number=0] [,string 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
| menu | void | bbs.menu(base_filename)
| 3.10
| display a menu file from the text/menu directory
| log_key | boolean | bbs.log_key(key [,comma=false])
| 3.10
| log key to node.log (comma optional)
| log_str | boolean | bbs.log_str(text)
| 3.10
| log string to node.log
| finduser | number | bbs.finduser(username_or_number)
| 3.10
| find user name (partial name support), interactive
| trashcan | boolean | bbs.trashcan(base_filename, search_string)
| 3.10
| search file for psuedo-regexp (search string) in trashcan file (text/base_filename.can)
| exec | number | bbs.exec(cmdline [,mode=EX_NONE] [,string startup_dir])
| 3.10
| execute a program, optionally changing current directory to startup_dir (see EX_* in sbbsdefs.js for valid mode bits)
| exec_xtrn | boolean | bbs.exec_xtrn(xtrn_number_or_code)
| 3.10
| execute external program by number or internal code
| user_event | boolean | bbs.user_event(event_type)
| 3.10
| execute user event by event type (see EVENT_* in sbbsdefs.js for valid values)
| telnet_gate | void | bbs.telnet_gate(address [,mode=TG_NONE])
| 3.10
| external Telnet gateway (see TG_* in sbbsdefs.js for valid mode bits)
| rlogin_gate | void | bbs.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_syspass | boolean | bbs.check_syspass()
| 3.10
| prompt for and verify system password
| good_password | string | bbs.good_password(password)
| 3.10
| check if requested user password meets minimum password requirements (length, uniqueness, etc.)
| page_sysop | boolean | bbs.page_sysop()
| 3.10
| page the sysop for chat, returns false if the sysop could not be paged
| page_guru | boolean | bbs.page_guru()
| 3.10
| page the guru for chat
| multinode_chat | void | bbs.multinode_chat()
| 3.10
| enter multi-node chat
| private_message | void | bbs.private_message()
| 3.10
| use the private inter-node message prompt
| private_chat | void | bbs.private_chat([local=false])
| 3.10
| enter private inter-node chat, or local sysop chat (if local=true)
| get_node_message | void | bbs.get_node_message()
| 3.10
| receive and display an inter-node message
| put_node_message | boolean | bbs.put_node_message(node_number, text)
| 3.10
| send an inter-node message
| get_telegram | void | bbs.get_telegram([user_number=current])
| 3.10
| receive and display waiting telegrams for specified (or current) user
| put_telegram | boolean | bbs.put_telegram(user_number, text)
| 3.10
| send a telegram to a user
| list_nodes | void | bbs.list_nodes()
| 3.10
| list all nodes
| whos_online | void | bbs.whos_online()
| 3.10
| list active nodes only (who's online)
| spy | void | bbs.spy(node_number)
| 3.10
| spy on a node
| cmdstr | string | bbs.cmdstr(command_string [,string fpath=""] [,string fspec=""])
| 3.10
| return expanded command string using Synchronet command-line specifiers
| get_filespec | string | bbs.get_filespec()
| 3.10
| returns a file specification input by the user (optionally with wildcards)
| get_newscantime | number | bbs.get_newscantime(time=current)
| 3.10
| confirm or change a new-scan time, returns the new new-scan time value (time_t format)
| select_shell | boolean | bbs.select_shell()
| 3.10
| prompt user to select a new command shell
| select_editor | boolean | bbs.select_editor()
| 3.10
| prompt user to select a new external message editor
| get_time_left | number | bbs.get_time_left()
| 3.14b
| check the user's available remaining time online and return the value, in seconds | |