Skip to content

kc1awv/RetiBBS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

BBS over Reticulum!

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages