Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
120c3fe
Add compact APRS bridge with KISS TCP backend
mathisono May 23, 2026
a4e2f21
Wire APRS bridge into Raven startup
mathisono May 23, 2026
c3996e8
Poll APRS bridge socket in router
mathisono May 23, 2026
f7bb969
Document APRS bridge configuration
mathisono May 23, 2026
56d3530
Add APRS join group syntax and APRS-IS defaults
mathisono May 23, 2026
6a64c01
Make APRS-IS the example APRS backend
mathisono May 23, 2026
e0ad4c0
Document APRS bridge usage
mathisono May 23, 2026
465d51f
Update README to reflect APRS interoperability changes
mathisono May 23, 2026
032bd13
Move APRS bridge docs to APRS guide
mathisono May 23, 2026
8bd190e
Link APRS guide from main README
mathisono May 23, 2026
49a31e5
Merge branch 'kn6plv:main' into main
mathisono Jun 2, 2026
059bc0e
Add strict gatekeeper policy module
mathisono Jun 2, 2026
db29744
Wire strict gatekeeper into runtime setup
mathisono Jun 2, 2026
dda5921
Apply strict gatekeeper at router ingress
mathisono Jun 2, 2026
5b6b246
Drop encrypted Meshtastic packets in strict mode
mathisono Jun 2, 2026
165dd3f
Document strict gatekeeper mode
mathisono Jun 2, 2026
b19cbc7
Link strict gatekeeper guide from README
mathisono Jun 2, 2026
a136cfd
APRS hardening: reconnect backoff, buffered recv, inbound ACK
Jun 3, 2026
b56b527
Fix circular dependency: remove gatekeeper imports from router/meshta…
Jun 3, 2026
78a1a58
Add built ipk for pt97-compliance branch (0.0.1-r13200507)
Jun 3, 2026
36f277b
UI: show APRS usage hint in message placeholder
Jun 3, 2026
3d9f786
APRS: fix outbound send and message ID parsing
Jun 3, 2026
890aa8a
APRS: bidirectional DM channels, smart inbound routing, auto-create f…
Jun 3, 2026
b93bfbf
Gatekeeper strict mode: filter outbound MeshCore/Meshtastic to text-o…
Jun 3, 2026
36a8dd8
Add built ipk for pt97-compliance (0.0.1-r13210055)
Jun 3, 2026
5983da8
docs: add Raven Part 97 compliance reference and Bridges wiki draft
Jun 3, 2026
a2fd135
Update README.md
mathisono Jun 3, 2026
2e75142
UI: auto-scale callsign text to fit inside circle icons
Jun 4, 2026
8f7546d
UI: widen circle text fit from 70% to 85% of diameter
Jun 4, 2026
6c03770
Multi-backend APRS, /join command, groups.uc module
Jun 4, 2026
7dfaa69
Fix callsign parsing in /join, add /backends command, AREDN-only docs
Jun 5, 2026
d556421
Fix: replace undefined with != null (ucode has no undefined keyword)
Jun 5, 2026
8771e12
Fix: keep user's channel name prefix, don't swap # to %
Jun 5, 2026
b42f840
UI: strip # and % prefix from channel labels in sidebar
Jun 5, 2026
3765cac
Fix: command feedback and edge cases across all slash commands
Jun 5, 2026
93151c3
Fix: outbound APRS from /join group channels
Jun 5, 2026
076e39a
Fix: null backendName was deleting channel binding instead of defaulting
Jun 5, 2026
1a66f40
Docs: update APRS.md to reflect tonight's fixes
Jun 5, 2026
c23f6ed
Feature: /export [csv|text] — download channel message log
Jun 5, 2026
f13fd8d
Fix: pass namekey as parameter to commands.post(), not array property
Jun 5, 2026
dd06319
Update IPK to latest build
Jun 5, 2026
11dca95
Add APRS-IS login handshake for tcp_text/xastir/yaac backends
Jun 5, 2026
d8fae08
Fix: add 5s connect timeout to prevent blocking on unreachable backends
Jun 5, 2026
020a1fa
Fix: non-blocking connect for APRS backends
Jun 5, 2026
bb78a75
Fix: use time() instead of now() in checkPendingConnect (scope issue)
Jun 5, 2026
347239b
Build: update IPK to r13384870
Jun 5, 2026
7435e7c
Update README with new features guides
mathisono Jun 5, 2026
d911543
Fix: accept array-of-one-object format for strict_gatekeeper config
Jun 7, 2026
b266f72
Build: update IPK to r13611172
Jun 7, 2026
34435c7
Add strict gatekeeper example config
mathisono Jun 8, 2026
30191f1
Replace Raven UI icon
mathisono Jun 8, 2026
3db5a3a
Replace Raven UI SVG icon
mathisono Jun 8, 2026
9351293
Add AREDN USB storage backend
mathisono Jun 9, 2026
e4f85c3
Document Crow USB storage feature
mathisono Jun 9, 2026
4e80e37
Wire storage commands into cmd handler
mathisono Jun 9, 2026
039866a
Update raven SVG accessibility label
mathisono Jun 9, 2026
91e1439
Rebrand UI header text to Crow
mathisono Jun 9, 2026
0b7a118
Update APRS.md
mathisono Jun 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
405 changes: 405 additions & 0 deletions APRS.md

Large diffs are not rendered by default.

7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
# Raven Mesh Messaging Platform

Raven is a decentralized mesh messaging platform for AREDN© with the ability to bridge messages from AREDN to other message platform.
Currently it interoperates with Meshtastic, MeshCore and Winlink.
Currently it interoperates with Meshtastic, MeshCore, Winlink, and APRS.

Documentation can be found here https://github.com/kn6plv/Raven/wiki

<img width="1024" height="573" alt="Screenshot 2026-02-25 at 8 56 21 AM" src="https://github.com/user-attachments/assets/d0f51937-e1b8-46ad-99de-da5055f8567e" />

## New Fetures guides (prsented by KJ6DZB with help of AI)

- [APRS bridge](APRS.md) - APRS-IS, Xastir/YAAC-style TCP text streams, Dire Wolf KISS TCP, direct messages, groups, and group repeat mode.
- [Strict Gatekeeper mode](STRICT_GATEKEEPER.md) - optional fail-closed filtering and gateway identification for Meshtastic/MeshCore ingress.
31 changes: 31 additions & 0 deletions STRICT_GATEKEEPER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Strict Gatekeeper mode

Strict Gatekeeper mode is an optional fail-closed bridge policy for sites that want tighter control over Meshtastic or MeshCore text traffic before it is forwarded to AREDN.

Example configuration:

```json
{
"strict_gatekeeper": {
"enabled": true,
"gateway_callsign": "W6XYZ",
"allowed_callsigns": ["KN6PLV", "KJ6DZB"]
}
}
```

When enabled, Raven applies these controls before Meshtastic or MeshCore ingress is admitted to the routing queue:

- encrypted Meshtastic protobuf packets are dropped instead of decrypted for bridge forwarding;
- non-text bridged packets are dropped;
- the sender name must contain a US-style amateur callsign token such as `KN6PLV`, `W6XYZ`, or `KJ6DZB`;
- if `allowed_callsigns` is non-empty, the extracted sender callsign must also appear in that whitelist;
- forwarded text is re-written to originate from the gateway node, and the body is prefixed as `[SENDER via GATEWAY] message`.

## Operational caveats

Strict Gatekeeper mode is a transport safety control, not an identity proof system. Meshtastic and MeshCore display names are user-controlled, so a node can be renamed to look like a valid callsign. For real deployments, use `allowed_callsigns`; a future hardening step should bind allowed operators to a stable Meshtastic node ID or MeshCore public key.

The built-in callsign validator intentionally matches only a simple US amateur callsign form: one or two letters, one numeral, and one to three letters. It will reject international callsigns, special-event formats, and suffix forms that do not contain an extractable US callsign token.

Dropped packet logging uses the existing `DEBUG0` and `DEBUG1` debug channels. On headless OpenWrt deployments, confirm that log output is captured by the service manager or `logd` before relying on logs for troubleshooting.
Loading