Screenshot


https://img.shields.io/badge/C%2B%2B-00599C?style=flat&compact=true&logo=c%2B%2B&logoColor=white https://img.shields.io/badge/SQLite-07405E?style=flat&compact=true&logo=sqlite&logoColor=white Documentation Status Discord Channel


Oblivion/2 XRM Introduction

A text based bulletin board system served over Telnet. XRM for (Extreme Remake) is my attempt to recreate and emulate one of the most popular DOS based BBS software with its one of a kind interface and configurability.

Table of Contents

Project details

Important

This software is in very early development, and not a fully functional BBS.

Follow Project Status Project Tracker
The Software is written in C++ supporting Windows, Linux, and OS/X at this time.
Build Documentation below will help you explore the system locally if you wish to build the application

Project and Build Documentation (WIP)

Install Guides

Screenshot

OS/X Setup and Build Guide

Latest Content Changes

Date

Update Notes

09/16/2018

Initial Write up on Latest High Sierra distribution.

07/26/2019

Updated dependency paths and build scripts with documentation

05/08/2022

Updated dependencies that were missed also fixed Makefiles

05/17/2022

Updated guide to .RST format

Important

Latest Builds Tested on OS/X Catalina

Libraries to Install

Note

Boost is only used for the menu and prompt conversion utilities. Future plans are to remove this dependency.

List of Dependencies

sqlite
yaml-cpp
openssl
libssh
ossp-uuid
boost
unittest-cpp

Note

Some might not use Homebrew for their package management. However, I needed to setup specific Include file locations in the “.mk” Makefiles if you do NOT use Homebrew, then these Include paths would need to be updated manually.

Important

Requirements, you should have XCode w/ Command line Tools installed. If not, you can usually install this from the Apple Store.

Install Homebrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Update Homebrew - And Possibly your OS to the latest version:

brew doctor
brew update
Install Dependencies via Brew:

All required libs are installed to /usr/local/opt

brew install sqlite3
brew install yaml-cpp
brew install ossp-uuid
brew install libssh
brew install openssl@3
brew install unittest-cpp
brew install boost
Optional Dependencies depending on your Development Environment

Install GIT to pull down project:

brew install git
Install latest compiler with c++11 compatibility as NEEDED!

You should have at least the following version installed or higher

Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin17.4.0
Thread model: Posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

Note

Only Need to install or upgrade if your compiler if the version is lower then this!

brew install clang
You can check check /usr/local/Cellar for program versions installed
All Lib and Include files are linked to /usr/local/opt

Clone the project

This will checkout and create project in an Oblivion2-XRM folder where you run the command.

git clone https://github.com/M-griffin/Oblivion2-XRM.git
cd Oblivion2-XRM
cd build
./build-osx.sh -j2

Note

-j# is number of cpu cores for faster compiling

Build Script compiles each part of the application and it’s utilities and Unit Tests
The executable programs are copied to the build folder for running.
./xrm-server              - to start the bbs
./xrm-unittest            - to run the unit tests

Helper Applications Only used if you are converting legacy items or mods.

./xrm-menu-convert        - convert Legacy Obv/2 menus to yaml
./xrm-menu-prompt-convert - convert Legacy Obv/2 prompts to yaml

Note

Converters only tested on default Menu’s and prompt files. Should work for menu and prompt mods too.

Running the BBS

Default Telnet Port: 6023
Ports and General Setup can be updated in the xrm-server.yaml configuration file
The configuration gets auto-generated once you start the system the first time.

All data files, and configuration file are generated on the initial startup of the system. If you goof anything up, simply delete any of the .yaml file(s) you made a mistake and want to start over. Than re-start the program and the files regenerate to defaults.

Starting the BBS

./xrm-server  -  the main configuration file generates in the root bbs folder.

I’m playing around with a yaml logging format, any feedback is welcome. =)

New User Password: newuser The first created user becomes a SysOp set to level 255
All other users are normal access levels and can be adjusted in the | Sysop Menu | User Editor
Screenshot

Linux (Debian/Ubuntu/Mint) Setup and Build Guide

Latest Content Changes

Date

Update Notes

07/26/2019

Initial Write up with new command line build script.

05/20/2022

Updated guide to .RST format

Important

Latest Builds Tested on Mint 20.3 (Cinnamon 64-Bit) and Ubuntu 22.04 (LTS 64-Bit)

Libraries to Install

Note

Boost is only used for the menu and prompt conversion utilities. Future plans are to remove this dependency.

List of Dependencies

sqlite
yaml-cpp
openssl
libssh
ossp-uuid
boost
unittest-cpp

Install Packages

sudo apt-get install build-essential
sudo apt-get install libyaml-cpp-dev
sudo apt-get install libssh-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libsqlite3-dev
sudo apt-get install uuid-dev
sudo apt-get install libunittest++-dev
Optional Dependencies depending on your Development Environment

Install GIT to pull down project:

apt-get install git
Install latest compiler with c++11 compatibility.

Most systems within the last several years are recent enough to support C++11 Compatibility. Any version above GCC 4.8.1.

Note

Only Need to install or upgrade if your compiler is ancient dirt. :)

Clone the project

This will checkout and create project in an Oblivion2-XRM folder where you run the command.

git clone https://github.com/M-griffin/Oblivion2-XRM.git
cd Oblivion2-XRM
cd build
./build-linux.sh -j2

Note

-j# is number of cpu cores for faster compiling

Build Script compiles each part of the application and it’s utilities and Unit Tests
The executable programs are copied to the build folder for running.
./xrm-server              - to start the bbs
./xrm-unittest            - to run the unit tests

Helper Applications Only used if you are converting legacy items or mods.

./xrm-menu-convert        - convert Legacy Obv/2 menus to yaml
./xrm-menu-prompt-convert - convert Legacy Obv/2 prompts to yaml

Note

Converters only tested on default Menu’s and prompt files. Should work for menu and prompt mods too.

Running the BBS

Default Telnet Port: 6023
Ports and General Setup can be updated in the xrm-server.yaml configuration file
The configuration gets auto-generated once you start the system the first time.

All data files, and configuration file are generated on the initial startup of the system. If you goof anything up, simply delete any of the .yaml file(s) you made a mistake and want to start over. Than re-start the program and the files regenerate to defaults.

Starting the BBS

./xrm-server  -  the main configuration file generates in the root bbs folder.

I’m playing around with a yaml logging format, any feedback is welcome. =)

New User Password: newuser The first created user becomes a SysOp set to level 255
All other users are normal access levels and can be adjusted in the | Sysop Menu | User Editor
Screenshot

Docker Image Creation and Run Guide

Latest Content Changes

Date

Update Notes

05/21/2022

Initial Guide in .RST format

Important

Latest Tested in Windows 10 64 bit Docker with Linux Containers.

Clone the project

This will checkout and create project in an Oblivion2-XRM folder where you run the command.

git clone https://github.com/M-griffin/Oblivion2-XRM.git
cd Oblivion2-XRM

Next from the root project folder you can run the following docker commands.

Docker

Important

This is a preview of the development work, It’s not a fully functional system You can browse Menu’s, and some initial sysop functions such as the User, Menu, Message and Level editors. With the Full Screen Message editor in the works.

Note

Being this is a preview the default setup here is to build and run a preview, the container or image will not save any new users or configuration changes made while adventuring around. Once the application is more ready for release then some updated documentation will be created for using volumes to run your container’s from.

Docker-Compose

The following commands should be run from the root Oblivion2-XRM folder.

First time setup or on changes build is used to create or update the docker image. recreating from any changes or updates when pulling down the branch.

Build and Startup Commands

docker-compose build && docker-compose up

Startup Command - All other times to startup the container you only need to run:

docker-compose up
Connecting to the BBS
Default Telnet Port: 6023
The configuration gets auto-generated once you start the system the first time.
New User Password: newuser The first created user becomes a SysOp set to level 255
All other users are normal access levels and can be adjusted in the | Sysop Menu | User Editor
Logging into the container
Logging in replace the <CONTAINER ID> below with the actual id of the container that is running.
use the docker ps to get a list of running containers.
docker ps
docker exec -it <CONTAINER ID> /bin/bash

You should now be in the logged in and in the following folder /usr/src/Oblivion2-XRM/build The root of the BBS executable folder. This folder also contains core of the bbs application. You’ll find the main xrm-server.yaml configuration file with other data files in the data folder.

Note

The BBS is running by default.

List of Executables

./xrm-server              - to start the bbs
./xrm-unittest            - to run the unit tests

Helper Applications Only used if you are converting legacy items or mods.

./xrm-menu-convert        - convert Legacy Obv/2 menus to yaml
./xrm-menu-prompt-convert - convert Legacy Obv/2 prompts to yaml

Note

Converters only tested on default Menu’s and prompt files. Should work for menu and prompt mods too.

Development Goals

The initial goal is to implement all legacy system actions in use on the default setup/install. With options for extended customization added later on to keep progress going.

Progress Notes

Screen shot showing some of the latest work on the menu system. The default theme template and menu prompt in action while switching menus. The menu system is still pretty raw and a lot of logic still needs to be completed.

Important

This is a preview of the development work, It’s not a fully functional system You can browse Menu’s, and some initial sysop functions such as the User, Menu, Message and Level editors. With the Full Screen Message editor in the works.

Screenshot

Then some screen shots in Linux Mint (Vmware) of the most recent updates.

Screenshot

Sample of the Menu Editor modeled after the classic style

Screenshot

Work In Progress (Latest Feature Branch) - Full Screen Message Editor Initial design concept with expanding height templates that the are used in the rest of the system.

Screenshot

Support

Acknowledgments and Thanks

  • Caphood: Support, Ideas and OBV/2 guru.

  • NuSkooler: Support, Awesome man who knows his stuff.

  • Blocktronics: Awesome group of guys pitching in some amazing theme art!

  • Dingo: Telnet options and general terminal functionality, you’ve been a wealth of knowledge

  • Smooth: Running an awesome Discord server

License

Oblivion/2 XRM is available under the zlib license : This software is provided ‘as-is’, without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

  3. This notice may not be removed or altered from any source distribution.