Dumple BBS Server
One day, I felt nostalgic for the good old bulletin
board systems (BBSs) I used to call on my trusty 2400 baud modem. And so, I
decided to write a simple BBS server in Python. I called the resulting beast
Dumple. The ultimate goal is to create a living museum of the best (and
the worst!) of many years of online gaming. Something analogous to the MAME
project (though not nearly so ambitious!).
You can look at some screenshots of DumpleBBS in action. Or, you can
connect to the Dumple development BBS, Titans of Old. And if you get the urge, you
can even download the latest version and run a
server yourself. Or, you can read what I have to say about doors.
Requirements
(At some point, I hope to make DumpleBBS a simple
push-button tool for online gaming. It's still at an early stage of development,
so at this point I can't recommend running your own DumpleBBS server unless
you're ready to look at code rather a lot).
Dumple is written in Python,
so you need Python to run it. The admin
interface (DumpleUI.py) requires the wxPython library. (You can run the server
without the admin interface, but you probably don't want to).
In order
to do anything interesting with Dumple, you'll probably need to be running a
Windows machine so that you can execute all the yummy old DOS doors. The
DumpleBBS .zip file includes NetFoss,
a FOSSIL driver for Windows NT/XP which bridges between FOSSIL-capable doors and Winsock
handles. COM-port-to-IP redirection (with software like the commercial program
NetSerial) is another option. Dumple
can also handle "doors" written in pure Python. It's conceivable that all this
could be made to work on Linux with DOS emulation, but I wouldn't know how to
begin doing so!
Setup/Configuration
Eventually this will all be configurable from the
admin interface, but for now, here's what you need to know. Overall
configuration data goes to config.xml. The installed doors are listed in
doors.xml. The user database is in users.xml. Logged output goes
to syslog.txt. A simple database (tab-delimited text files) of what doors
have been run is output to the BigBrother subdirectory. And menu text files can
be built in the Menus subdirectory. At minimum, you'll probably want to (a) add
doors to doors.xml, and (b) tweak things like the system name in config.xml.
How Dumple Works
Dumple doesn't use a modem - modems are slow, and most
recent machines don't have them installed anyway. (However, COM port support
should be easy enough to add if anyone feels like testing it) Instead, Dumple
handles TCP/IP connections from programs like Telnet. To run most DOS BBS doors,
Dumple calls the third-party program NetFoss, a FOSSIL driver
which handles communications between the door and the "modem" (actually, the
WinSock handle of the user's TCP/IP socket). Another option, which seems to
mostly work, is to use a "virtual modem" like NetSerial. Virtual modems are slower
then NetFoss's NetCom communication engine, and I don't know of any free ones,
but they do work with old doors that don't support FOSSIL.
One key to
how Dumple operates is that EVERYTHING is a door - even the login screen. This
means that the core Dumple code can be customized in a variety of different
ways, without the need for lots of coding.
Features In Place
Serve doors to users over TCP/IP
Simple XML config file for doors
Multi-node game support (at last!)
Simple admin application
Features In The Works
More sophisticated user record (ANSI flag, real name, location, ...?)
More admin options (no need to open text files ever)
BBS listing (option to register BBS with a central server that provides IPs
and ports; stale servers go away after enough failed connections)
Message board door (with ANSI stamp collecting, maybe)
Scriptable, ANSI-enabled client? (telnet is good, and putty is great but
needs a proper DOS font)
Python door library, with docs and examples
InterBBS support
"Busy" games shown in red on the main menu
Queue to wait in line for the next open game node
Run aoor design contest
Run botting contest (no humans allowed - or maybe Bots Versus Human)
.doorzip file association and zip scripts for one-click door installation
Big ol' BitTorrent archive of top 100 doors
Time-slowdown and time-acceleration - a hack to get quickened games to
finish in an afternoon, or slowed games that people can play once a week and
still compete