/RetiBBS

BBS over Reticulum!

Primary LanguagePythonMIT LicenseMIT

RetiBBS

Screenshot

An ALPHA bulletin board system (BBS) implementation for Reticulum networks.

RetiBBS allows users to communicate through message boards in a secure manner.

Features

  • User authentication and authorization with Reticulum
  • Multiple message boards support
  • User display names
  • Admin privileges for board management
  • Simple text-based command interface

Installation

It is strongly suggested to use this alpha software in its own Python virtual environment.

python -m venv .venv
source .venv/bin/activate
  1. Install Textual and the Reticulum Network Stack:
pip install rns textual
  1. Clone this repository:
git clone https://github.com/kc1awv/RetiBBS.git
cd RetiBBS

Usage

Running the Server

cd server
python retibbs_server.py [OPTIONS]

Server options:

  • --reticulum-config: Path to alternative Reticulum config directory (optional)
  • --identity-file: Path to store/load server identity (default: server_identity.pem)
  • --config-file: Path to server config file (default: server_config.json)

Running the Client

cd client
python retibbs_textual.py [OPTIONS]

Client options

  • --reticulum-config: Path to alternative Reticulum config directory (optional)
  • --identity-file: Path to store/load client identity (optional, default: {RNS.Reticulum.storagepath}/retibbs_client_identity)
  • --server: Hexadecimal hash of the RetiBBS server to connect to (optional)

Basic Commands

Once connected:

Main Menu:

  ?  | help               - Show help text and available commands
  h  | hello              - Check authorization status
  n  | name <name>        - Set your display name
  b  | boards             - Switch to message boards area
  lo | logout             - Log out from the system

### Admin Commands
  lu | listusers          - List users in DB
  a  | admin <user_hash>  - Grant admin rights to a user

Each area has its own set of commands. Use ? or help to get a list of commands for the area you are in.

Configuration

Server Configuration (server_config.json)

{
    "server_name": "changeme",
    "announce_interval": 300
}

Client Address Book (address_book.json)

Saved servers are stored in JSON format with server names and hashes.

Example:

{
    "019e6ad5a0e47048413c9f7578e83393": {
        "display_name": "Beleth Test",
        "hash": "019e6ad5a0e47048413c9f7578e83393",
        "timestamp": "2025-01-01 13:31:08"
    }
}

Development

The codebase is organized into these main components:

  • Server (server): Handles client connections, message boards, and user management
  • Client (client): Provides the user interface and server connection handling

Security

RetiBBS utilizes Reticulum's built-in encryption and authentication mechanisms to ensure secure communication between clients and servers.

Requirements