x/84 is a python-languaged telnet daemon for modern utf8 terminals. Based on miniboa, blessings, sqlitedict, and multiprocessing. recordings of sessions are stored in ttyplay-compatible format files. IBM Codepage 437 to UTF8 helpers are used to translate "ansi art" (such as you would find on the ACiD "dark domains" DVD) to modern terminals.
A default 'bbs board' is provided in style of renegade, ami/x. This provides some doors for bbs-scene.org API's such as 'one liners' and 'bbs listers', a telnet-out gateway that translates CP437 to UTF8, messaging, supports example doors dopewars and nethack.
x/84 is still in development, we welcome any patches and contributions.
This software requires Python 2.6 or 2.7.
- Install virtualenv,
curl -o /tmp/virtualenv.py 'https://raw.github.com/pypa/virtualenv/master/virtualenv.py'
- Create virtualenv for installing 3rd party packages,
python2.7 /tmp/virtualenv.py ENV
- Activate environment (prompt will change)
. ENV/bin/activate
- Install all third-party modules
pip install -r requirements.txt
- Activate environment (prompt will change)
. ENV/bin/activate
- Execute bbs engine
python engine.py
Optional command line arguments, --config=
alternate bbs configuration filepath --logger=
alternate logging configuration filepath
telnet localhost 6023
python local.py
Any UTF-8 client is compatible, but some fonts do art better than others. For mac systems, 'Andale Mono' works flawlessly.
Menu item iTerm -> Preferences, section Profiles, select 'Text' tab, chose 'Andale Mono' font.
Under preference item Window -> Translation, option 'Remote character set', change 'iso8859-1' to 'UTF-8'.
Menu item Terminal -> Preferences, chose profile 'Pro', (Font Andale Mono), enable 'use bright colors for bold text'.
todo .. bright blink, 256, etc..
Select cp437 when prompted by the bbs system (charset.py).
Select cp437 when prompted by the bbs system (charset.py). Use a font of cp437 encoding, such as Terminus.
Sessions are recorded to ttyrecordings/
folder, and can be played with ttyplay or compatible utility. The -p
option can be used to monitor live sessions, analogous to tail -f
.
The default.ini
option, scriptpath, of section session, defines folder 'default/'
.
By default, matrix.py will chain to nua.py for new account creation, top.py when authenticated, and main.py for a main menu.
Copy this to a new folder, change the .ini file to point to the new folder, and you can begin customizing your matrix, topscripts, and art files.
The default.ini
option, script, of section matrix, defines the path of a python program that is loaded when a telnet connection is complete. The purpose of this script is to otherwise approve connection for continuation to topscript, and is generally used for authentication.
When the default.ini
option, enable_anonymous, of section matrix is True
(default is False
), users may login with name 'anonymous', and top.py is called with a handle value of None
, and the user is presumed 'anonymous'
The default.ini
option, allow_apply, of section nua is True
by default, and users may create a new account by executing the nua script. The default nua.py script allows all new accounts without approval, and adds the first new user to the u'sysop'
group.
After passing new account creation in nua.py, or authentication in matrix.py, the topscript, of section matrix is called. This script generally checks for new messages, sets character encoding and preferences.
Generally called from top.py, provides an interface for the user to select a session encoding of u'utf8'
or u'cp437'
.
A simple pager displaying artwork and a scrolling window of the most recent BBS callers.
A simple logoff script that allows users to leave a message for the next user.
Displays artwork and provides a hotkey interface to gosub()
various scripts.
Displays artwork and a scrolling window of a data/news.txt
.
A oneliners script. To configure intra-BBS one-liners for use with bbs-scene.org's API, create a new section, bbs-scene in defaults.ini
, with two options, user and pass.
Displays information about the BBS system ...
An example door games menu interface.
Users post and vote and leave comments for other bbs systems. Also allows this system to be used as a gateway to other systems, using telnet.py.
An example of using the various user interface elements to display the local weather report.
Functions and Classes are exported to the the global namespace of all bbs scripts. These scripts can be found in the bbs/
sub-folder. the special __init__.py
file defines a list, __all__
. All terms of this list are injected into the global namespace of bbs session scripts. It is as if the statement:
from bbs import *
is implied. This bbs-specific functions such as getch() and echo().
- enthral: C++ open source, still in slow development
- synchronet: C formerly commercial, now open source. Sortof like wildcat.
- daydream: C open source. 10+ years out of maitenance.
mystic: Pascal, closed source. Sortof like Renegade.
Many more archiac systems you can't acquire or run any longer:
- https://en.wikipedia.org/wiki/List_of_BBS_software
An irc channel, '#prsv' on efnet, is available for development discussion.
A development-based bbs board is planned.