This is an old revision of the document!
Table of Contents
sbbslist
The Synchronet BBS List v4 module (exec/sbbslist.js
) provides the following functionality:
- Online BBS List (interactive door mode or just a read-only listing)
- Exports locally created BBS entries to networked message base (e.g. SYNCDATA)
- Imported BBS entries from networked message base
- Generates HTML output (e.g. http://synchro.net/sbbslist.html)
- Generates Synchronet inter-BBS Instant-Message module database (i.e.
ctrl/sbbsimsg.lst
) - Generates SyncTERM BBS directory file (i.e.
syncterm.lst
) - Auto-synchronizes statistics (e.g. totals) in the local system's entry in the database
- Auto-verifies TCP/IP services of listed BBSes and tracks the results
Dependencies
As of this writing, sbbslist v4 is known to be compatible with Synchronet v3.17, under development.
A JavaScript printf()
bug in Synchronet v3.16 causes sbbslist v4 to crash in Synchronet for Linux, but appears to work fine in the Windows build.
Files known to be required by sbbslist v4:
exec/sbbslist.js
exec/load/sbbslist_lib.js
exec/load/sbbslist_html.js
exec/load/sbbsdefs.js
exec/load/sockdefs.js
exec/load/portdefs.js
exec/load/modopts.js
exec/load/graphic.js
exec/load/termcapture_lib.js
exec/load/synchronet-json.js
History
The Synchronet BBS List v4 module (exec/sbbslist.js
) is the replacement for the old (originally, Digital_Dynamics') door, Synchronet BBS List (SBL).
Whereas the original Synchronet BBS List (SBL) was a native executable (originally for 16-bit MS-DOS, then OS/2, Windows and *nix), version 4 is a complete re-write in JavaScript.
SBL v3 Compatibility
When sbbslist v4 is run, it looks for its database file, data/sbbslist.json
. If the database file doesn't exist, it'll attempt to upgrade from the old SBL database xtrn/sbl/sbl.dab
to the new JSON format automatically. This upgrade should normally only happen one time, but you can always force an upgrade again (over-writing your existing v4 database) by running sbbslist upgrade
(e.g. with jsexec).
Probably the most compelling feature of SBL was the ability to share (import-from and export-to) networked message bases (e.g. the DOVE-Net SYNCDATA message conference). This capability has been maintained and enhanced in v4:
- BBS entries posted using the old
SBL2SMB
are imported into the newsbbslist.json
database - BBS entries are exported to message base(s) using both the old
SBL2SMB
format and a new JSON-encoding for newer features (e.g. answer screen preview)
Whereas SBL stored its configuration, data, and executable files in the xtrn/sbl
directory, sbbslist v4 uses the following Synchronet directories:
Installation
From command-line, run jsexec sbbslist install
If all the prerequisites were met, this step will perform all the necessary configuration changes mentioned later in this document and you should be ready to go with the new Synchronet BBS List.
Note:
If you previously had the SBL
door in an external program section other than the first external program section, you may want to move the new SBBSLIST
configuration to that location (in SCFG->External Programs->Online Programs).
Configuration
Other than command-line parameters, the only configuration options for sbbslist.js
are stored in the [sbbslist]
section of the ctrl/modopts.ini
file:
[sbbslist] sort = name reverse = false format = 0 add_ars = not guest beep = true sub = dove-syncdata live_preview = true backup_level = 5 export_freq = 7
Option | Description |
---|---|
sort | The default list sort field (default: none) |
reverse | Reverse the default sort order (default: false ) |
format | The default browse list format (0 -9 , default: 0 ) |
add_ars | The access requirements of a user able to add a BBS entry (default: none) |
beep | Set to false to disable beeps sent to the remote terminal (default: true ) |
sub | Sub-board internal code for import and export command (default: auto-detected) |
live_preview | Set to true to enable live previews (outbound connections) while in browse mode (default: false ) |
backup_level | Over-ride the default number of backup files to maintain (default: 5 ) |
export_freq | Maximum export (to message-base) frequency, in days (default: 7 ) |
Sorting
The configured/default sort field can also be specified on the sbbslist
command-line (e.g. using the -sort
option). The available sort fields are:
Field | Description |
---|---|
name | BBS name (with “the” prefix and “BBS” suffix removed) |
sysops | List of BBS's system operators |
location | BBS's location (e.g. city, state, country) |
phone_number | BBS's phone number (if it has one) |
service_address | BBS's primary TCP service address |
since | Date the BBS was first placed online |
software | BBS software in use |
web_site | BBS's web-site address |
description | BBS's description |
networks | List of message networks to which the BBS belongs |
nodes | Total number of terminal server nodes |
users | Total number of BBS users |
subs | Total number of BBS message areas (sub-boards) |
dirs | Total number of BBS file directories |
doors | Total number of BBS online programs (doors) |
msgs | Total number of public messages stored on the BBS |
files | Total number of files available for download |
storage | Total disk capacity |
protocols | List of TCP protocols supported by the BBS |
created_by | Name of user that created this BBS entry |
created_on | Date that this BBS entry was created |
updated_by | Name of user that last updated/edited this BBS entry |
updated_on | Date that this BBS entry was last updated |
verified_by | Name of user or program that last verified this BBS entry |
verified_on | Date that this BBS entry was last verified |
verify | Special sort order based on auto-verification results |
The default sort order is alphabetical for string fields and reversed (descending) for numeric fields.
Live Preview
This feature allows a browsing user to request a real-time capture and preview of a listed BBS's answer/login screen. This is not an interactive connection and does not allow the user to send data or control the remote BBS in any way. The TCP connection, if successful, lasts about 10 seconds.
Invocation
sbbslist.js
can be invoked from JSexec to utilize many of its functions, but for it's primary “browse” (BBS door) functionality, it must run from the Synchronet Terminal Server (e.g. as an External Program
, a.k.a. door).
Door
The Synchronet BBS List may be added to your BBSes list of external programs (doors) available to users by adding it to SCFG->External Programs->Online Programs->Main, like so:
╔══════════════════════════════════════════════════════════╗ ║ Synchronet BBS List ║ ╠══════════════════════════════════════════════════════════╣ ║ │Name Synchronet BBS List ║ ║ │Internal Code SBBSLIST ║ ║ │Start-up Directory ║ ║ │Command Line ?sbbslist browse ║ ║ │Clean-up Command Line ║ ║ │Execution Cost None ║ ║ │Access Requirements ║ ║ │Execution Requirements ║ ║ │Multiple Concurrent Users Yes ║ ║ │Intercept I/O No ║ ║ │Native Executable No ║ ║ │Use Shell to Execute No ║ ║ │Modify User Data No ║ ║ │Execute on Event No ║ ║ │Pause After Execution No ║ ║ │BBS Drop File Type None ║ ║ │Place Drop File In Node Directory ║ ╚══════════════════════════════════════════════════════════╝
If you have the old SBL
entry, you should remove it now.
The browse
mode does not *have* to be configured this way. Since sbbslist.js
runs in-process, it can be easily invoked from anywhere that a JavaScript module can be executed within the Synchronet Terminal Server. You just need to pass the browse
argument. No drop files are needed or used.
Timed Events
sbbslist.js
can be invoked as a timed event to provide many important features:
Update
If the local system is listed in the database, it can be automatically updated (e.g. monthly) by adding a timed event to SCFG->External Programs->Timed Events, like so:
╔════════════════════════════════════════════════════════════════════╗ ║ SBLUPDAT Timed Event ║ ╠════════════════════════════════════════════════════════════════════╣ ║ │Internal Code SBLUPDAT ║ ║ │Start-up Directory ║ ║ │Command Line ?sbbslist update -preview ║ ║ │Enabled Yes ║ ║ │Execution Node 1 ║ ║ │Execution Months Any ║ ║ │Execution Days of Month 1 ║ ║ │Execution Days of Week All ║ ║ │Execution Time 00:00 ║ ║ │Requires Exclusive Execution No ║ ║ │Force Users Off-line For Event No ║ ║ │Native Executable No ║ ║ │Use Shell to Execute No ║ ║ │Background Execution No ║ ║ │Always Run After Init/Re-init No ║ ╚════════════════════════════════════════════════════════════════════╝
This will allow your BBS entry to automatically track your local system's statistics (e.g. number of users, door, message areas, etc.). Also, it will routinely re-export your BBS entry to any networked-message bases you have your BBS list linked with.
Remove the -preview
argument if you do not want your BBS's login screen to be captured for later preview by potential users.
If you wish to override the address to which the module will connect to capture the preview, specify the IP address or host name like so:
?sbbslist update -preview=address
Import
If your BBS is connected to DOVE-Net or FidoNet, you probably will want networked-posted BBS entries to be automatically imported into your database (sbbslist.json
) from the appropriate message base (e.g. SYNCDATA
). To do so, setup a timed event in SCFG->External Programs->Timed Events, like so:
╔════════════════════════════════════════════════════════════════════╗ ║ SMB2SBL Timed Event ║ ╠════════════════════════════════════════════════════════════════════╣ ║ │Internal Code SMB2SBL ║ ║ │Start-up Directory ║ ║ │Command Line ?sbbslist import=dove-syncdata ║ ║ │Enabled Yes ║ ║ │Execution Node 1 ║ ║ │Execution Months Any ║ ║ │Execution Days of Month Any ║ ║ │Execution Days of Week All ║ ║ │Execution Frequency 4 times a day ║ ║ │Requires Exclusive Execution No ║ ║ │Force Users Off-line For Event No ║ ║ │Native Executable No ║ ║ │Use Shell to Execute No ║ ║ │Background Execution No ║ ║ │Always Run After Init/Re-init No ║ ╚════════════════════════════════════════════════════════════════════╝
Note:
Take care to match the internal code (syncdata
above) with the correct code shown for the corresponding message area in SCFG->Message Areas.
Note:
If you have the old SMB2SBL
timed event, you should remove it now.
Export
If your BBS is connected to DOVE-Net or FidoNet, you probably will want your locally created BBS entries to be automatically exported from your database (sbbslist.json
) to the appropriate message base (e.g. SYNCDATA
). To do so, setup a timed event in SCFG->External Programs->Timed Events, like so:
╔════════════════════════════════════════════════════════════════════╗ ║ SBL2SMB Timed Event ║ ╠════════════════════════════════════════════════════════════════════╣ ║ │Internal Code SBL2SMB ║ ║ │Start-up Directory ║ ║ │Command Line ?sbbslist export=dove-syncdata ║ ║ │Enabled Yes ║ ║ │Execution Node 1 ║ ║ │Execution Months Any ║ ║ │Execution Days of Month Any ║ ║ │Execution Days of Week All ║ ║ │Execution Frequency 4 times a day ║ ║ │Requires Exclusive Execution No ║ ║ │Force Users Off-line For Event No ║ ║ │Native Executable No ║ ║ │Use Shell to Execute No ║ ║ │Background Execution No ║ ║ │Always Run After Init/Re-init No ║ ╚════════════════════════════════════════════════════════════════════╝
Note:
Take care to match the internal code (dove-syncdata
above) with the correct code shown for the corresponding message area in SCFG->Message Areas.
Note:
If you have the old SBL2SMB
timed event, you should remove it now.