Subtext - A multi-user BBS server for classic MacOS
Subtext is a multi-user BBS server that is developed on and for Macintosh
System 6 (and above).
It supports dialin access through a serial modem and Telnet access through
MacTCP.
For full documentation, see the
GUIDE
file included with the distribution.
To see it in action on my Kludge BBS which runs Subtext on a Macintosh Plus,
you can telnet to
klud.ge
,
visit
klud.ge
in a web browser, or dial +1-312-654-0090
with a modem (8/N/1).
Subtext is open source software. I have some videos about its development and C programming on System 6 in general.
Latest Update: Subtext 2.0 Released with FidoNet Support (2023-05-01)
Subtext 2.0.1 has been released:
- subtext-2.0.1.sit
(StuffIt 3 archive, includes
source code
and THINK C 5 project file)
SHA256:9db9c5f4090fd72e
b353e52607ee6a48 d3ec31e45adc29d5 09a28ef8f12fd5e8
SHA1:241dd8c9e50fe4a4
e4a8e6fcb36db05c 53f54385
This is a major update to Subtext that represents many months of development, over 200 amendments, and many nights of testing and debugging. The largest change is the addition of FidoNet (FTN) support for distributed mail (Netmail) and message boards (Echomail) by way of a binkp hub.
Many thanks to Andy Diller for testing and debugging many release candidates.
All changes in this version:
- Add support for FTN (FidoNet) EchoMail and NetMail, with support for fetching from and sending to a Binkp hub, including PKZIP archives of packets
- Move mail to a separate database file for easier backup
- Implement sysop paging/answering, displaying the user's message on the screen with a beep
- Implement custom "NoModem" protocol for file transfers when a host is connecting through the trusted host assuming this is a web gateway
- List more items per screen in boards, files, and sysop
- List newest mail first and a global setting to prune mail after a configurable amount of days
- Add options to sysop menu to forcefully hangup/reset the modem, and to reboot the system
- Add timezone UTC offset setting, use to convert timestamps in FTN messages to local timezone, and add a "timezone" template variable
- Add setting for separate maximum idle time for sysops (which can be set to 0 to disable)
- Mask password fields in sysop settings menu
- Add
BOARD_LIST_BOARDS
command for main menu, which lists all local boards - Faster session log pruning, fix a bug where failed logins were still being written to the session log
- Fix SHA1 checksum calculation for uploaded files and show progress during calculation
- Implement folder file description/notes editing and add an option for sysop to recalculate SHA1 checksum before saving
- Try to handle malloc failures gracefully everywhere rather than exiting
Note: version 2.0.1 was released shortly after 2.0 to fix a corrupted default menu list resource.
Previous Updates
-
Subtext 1.1 Released (2022-12-01)
-
Subtext 1.0 Released (2022-11-22)
Source Code
Source code and its THINK C 5 project file are contained in the latest release archive, and can be viewed on AmendHub.
Features
- Multithreaded, multi-user BBS server that runs on System 6+
- Telnet support through MacTCP
- Direct serial modem support (no Communications Toolbox)
- Integrated ANSI-capable local console
- FidoNet (FTN) support for Netmail and Echomail through a Binkp hub
- Local log window with smart screen blanking
- Multiple threaded message boards
- Multi-user interactive chat
- Private messaging/mail
- File uploading and downloading with ZMODEM support
- Secure user password storage with SHA256
- View/menu templates with variable expansion
- Configurable main menu key shortcuts
- Telnet brute-force IP banning by sending UDP packets to a firewall host
Screenshots
Logger
By default, Subtext only shows its log window at the console.
The menus at the top allow the Sysop to edit menu and view templates in a large
text editor.
All other configuration is done through the BBS itself by logging in as a
Sysop and accessing the Sysop Menu (with !
by default).
Console
Subtext has an integrated VT100-capable terminal to quickly login as a Sysop user at the console.