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

You can donate to the Synchronet project using PayPal.

This is an old revision of the document!


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

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 new sbbslist.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:

  • data for storage of the database file sbbslist.json
  • ctrl for storage of its configuration settings, in modopts.ini
  • text for the location of its online help file, sbbslist.hlp
  • temp for temporary storage of downloadable listings (e.g. syncterm.lst)
  • exec for the main 'executable', sbbslist.js
  • exec/load for loadable library files, e.g. sbbslist_lib.js

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]
        sub     = syncdata
        add_ars = not guest
        beep    = true
        format  = 0
        sort    = name

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                  ║
║ │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.

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=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=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 SBL2SMB timed event, you should remove it now.

See Also