No description
- Python 100%
Adds bidirectional bulletin/mail forwarding between the BBS and an OpenBCM-compatible remote BBS using the FBB B-protocol over AX.25. Changes: - ax25/frame.py: add build_ax25_sabm_frame() and build_ax25_disc_frame() as command-frames with C-bit and P-bit set - db/database.py: non-destructive schema migration (_add_column_if_missing), bid/forward_pending/forwarded columns on bulletins+mail, new forward_bids table, and 7 new forwarding methods (bid_exists, record_bid, get_pending_*_for_forward, mark_forwarded, store_forwarded_*) - bbs/forward.py: new ForwardSession class with full B-protocol FSM (IDLE→CONNECTING→BANNER_WAIT→EXCHANGING⇄RECV_BODY→DISC_SENT→DONE) - bbs/engine.py: route UA/I/DISC/DM frames to ForwardSession before user-session handling; add start_forward_session(); extend active_sessions - bbs/scheduler.py: new ForwardScheduler with thread-safe trigger() for periodic and on-demand forward runs - config.yaml: new forward: block with all configuration options - main.py: run transport and scheduler concurrently via asyncio.gather() - web/app.py: GET /api/forward/status and POST /api/forward/trigger routes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| ax25 | ||
| bbs | ||
| db | ||
| kiss | ||
| web | ||
| config.yaml | ||
| main.py | ||
| README.md | ||
| requirements.txt | ||
Packet BBS – Python Grundgerüst
Ein vollständiges Packet Radio BBS über KISS/TCP mit Web-Dashboard.
Voraussetzungen
- Python 3.11+
- TheNetNode mit KISS/TCP aktiviert
- pip install -r requirements.txt
Installation
pip install -r requirements.txt
Konfiguration
config.yaml anpassen:
bbs.callsign→ Dein BBS-Rufzeichen (z.B. DD0XYZ-8)kiss.host/kiss.port→ TheNetNode KISS/TCP Adresseweb.port→ Dashboard Port (Standard: 5000)
Starten
python main.py
Dashboard: http://localhost:5000
BBS-Befehle (Packet-Seite)
| Befehl | Funktion |
|---|---|
| H oder ? | Hilfe anzeigen |
| L | Alle Bulletins listen |
| L | Bulletins eines Boards |
| R | Bulletin lesen |
| SB | Bulletin posten |
| SM | Mail senden |
| LM | Eigene Mails anzeigen |
| RM | Mail lesen |
| KM | Mail löschen |
| F | Dateiliste |
| DF | Datei herunterladen |
| B / BYE | Verbindung trennen |
Mehrzeilige Nachrichten mit /EX in einer eigenen Zeile abschließen.
Projektstruktur
packet-bbs/
├── main.py # Einstiegspunkt
├── config.yaml # Konfiguration
├── requirements.txt
├── kiss/
│ └── client.py # KISS/TCP Handler
├── ax25/
│ └── frame.py # AX.25 Parser/Builder
├── bbs/
│ └── engine.py # BBS Logik + Session-Verwaltung
├── db/
│ └── database.py # SQLite (aiosqlite)
├── web/
│ ├── app.py # Flask + SocketIO
│ └── templates/
│ └── dashboard.html
├── files_store/ # Datei-Bereich
├── data/ # Datenbank
└── logs/ # Logfiles
Nächste Schritte / Erweiterungen
- APRS-Gateway Integration
- Forward-Protokoll (FBB/WP) für Bulletin-Austausch mit anderen BBS
- YAPP/ZMODEM Dateiübertragung
- Sysop-Befehle (Kill-User, Remote-Befehle)
- TNC2-Monitormode