Table of Contents

Titan BBS

:!: Abandoned Project

The software was written by Andrew Pamment (apam), development has ceased and he is is now working on Talisman BBS.

Titan BBS was an experimental BBS written in C++ for Linux and Windows. It utilized parts of C++17 found in Visual Studio 2019 (and recent versions of Visual Studio 2017) and GCC 8+. On Linux CMake was used to configure.

Titan used sqlite3 for messages, user bases, file bases etc. It came with it's own FTN message tosser (TitanFTN).

Titan also relied on third party utilities for some features. SEXYZ for file transfers and InfoZIP for archiving.

Titan was configured using JSON files. Art files for menus etc are plain text files which can include special CTRL-A codes for colour for those users that want to use it. A utility ans2ctrla is included to convert .ANS files to CTRL-A text files.

Installing Titan on Linux

Building Titan BBS

Prerequisites:

Titan uses the C++17 filesystem library, and will therefore require GCC 8 or higher, or clang 7 or higher.

Step 1. Clone the repository

  git clone https://gitlab.com/apamment/Titan.git

Step 2. Build Titan

  cd Titan/Titan
  mkdir build
  cd build
  cmake ..
  make

Create Titan Files & Directorys

Create somewhere to store your data files. For example: /home/user/bbs

  mkdir /home/user/bbs

Copy the gfiles directory from Titan/Titan to /home/user/bbs

  cp -r ../Titan/Titan/gfiles /home/user/bbs
  

Create other needed directories

  mkdir /home/user/bbs/dbs
  mkdir /home/user/bbs/temp
  mkdir /home/user/bbs/keys
  mkdir /home/user/bbs/logs

Create SSH keys

  ssh-keygen -f /home/user/bbs/keys/ssh_host_rsa_key -N '' -t rsa
  ssh-keygen -f /home/user/bbs/keys/ssh_host_dsa_key -N '' -t dsa

Configure Titan using the paths above.

Installing Titan on Windows

Download the latest installer snapshot from ??

Run the installer.

Answer the questions.

Configuring Titan is done with a single JSON file.

Configuring Titan

Main

Paths

MessageBases

MessageConferences

Doors

Note: Batch files and scripts used for doors and the external editor are passed 2 arguments, the first is the node number, the second is the socket. The socket is unused on Linux, as it only supports stdio doors on that platform.

FileBases

TextFiles

Example Configuration File

{
  "Main": {
     "MaxNodes": 5,
     "TelnetPort": 23,
     "RloginPort": 513,
     "SSHPort": 22,
     "SystemName": "A New Titan BBS",
     "SysopName": "Sysop",
     "LogLevel": "Info"
  },
  "Paths": {
     "GFiles": "C:/bbs/gfiles",
     "Databases": "C:/bbs/dbs",
     "Temp":  "C:/bbs/temp",
     "SEXYZ": "C:/bbs/sexyz.exe",
     "ExternalEditor": "C:/bbs/doors/oedit.bat",
     "SSHRSAKey": "C:/bbs/keys/ssh_host_rsa_key",
     "SSHDSAKey": "C:/bbs/keys/ssh_host_dsa_key",
     "LogFile": "C:/bbs/logs/Titan.log",
     "MailSemaphore": "C:/bbs/mail.out"
  },
  "MessageBases": [
     {
        "name": "General",
        "readlevel": 10,
        "writelevel": 10,          
        "id": 0          
     },
     {
        "name": "Testing",
        "readlevel": 10,
        "writelevel": 10,          
        "id": 1
     },
     {
        "name": "General",
        "readlevel": 10,
        "writelevel": 10,          
        "id": 100
     },
     {
        "name": "BBS Discussion",
        "readlevel": 10,
        "writelevel": 10,          
        "id": 101
     },
     {
        "name": "Mystic Discussion",
        "readlevel": 10,
        "writelevel": 10,          
        "id": 102
     },
     {
        "name": "Magicka Discussion",
        "readlevel": 10,
        "writelevel": 10,          
        "id": 103
     },
     {
        "name": "ENiGMA 1/2 Discussion",
        "readlevel": 10,
        "writelevel": 10,          
        "id": 104
     },
     {
        "name": "Cryptographic Posts",
        "readlevel": 10,
        "writelevel": 10,          
        "id": 105
     },
     {
        "name": "Automated RoBOT Posts",
        "readlevel": 10,
        "writelevel": 10,          
        "id": 106
     }
   ],
   "MessageConferences": [
     {
        "name": "Local Mail",
        "id": 0,
        "accesslevel": 10,
        "areas": [ 0, 1 ]
     },
     {
        "name": "FSXNet",
        "id": 2,
        "accesslevel": 10,          
        "areas": [ 100, 101, 102, 103, 104, 105, 106 ]
     }
   ],
   "Doors": [
     {
        "name": "Galactic Dynasty",
        "hotkey": "1",
        "accesslevel": 10,          
        "command":  "C:/bbs/doors/gd.bat"
     },
     {
        "name": "For Honour",
        "hotkey": "2",
        "accesslevel": 10,          
        "command": "C:/bbs/doors/fh.bat"
     }
   ],
   "FileBases": [
     {
        "index": 1,
        "name": "General Files",
        "filepath": "C:/bbs/files/general",
        "database": "C:/bbs/files/general.db3",
        "uploadlevel": 10,
        "downloadlevel": 10
     },
     {
        "index": 2,
        "name": "BBS Related Files",
        "filepath": "C:/bbs/files/bbs",
        "database": "C:/bbs/files/bbs.db3",
        "uploadlevel": 10,
        "downloadlevel": 10          
     }
   ],
   "TextFiles": [
     {
        "title": "AF Downs Scores",
        "filepath": "C:/bbs/doors/afdowns2/scores.txt",
        "pause": "true",
        "accesslevel": 10,          
        "hotkey": "1"
     },
     {
        "title": "AF Slots Scores",
        "filepath": "C:/bbs/doors/afslots2/scores.txt",
        "pause": "true",
        "accesslevel": 10,
        "hotkey": "2"
     }	
   ]
 }

Titan BBS - https://gitlab.com/apamment/Titan