Skip to content

Add public/channel content filtering to simple_repeater#2733

Draft
disq wants to merge 9 commits into
meshcore-dev:devfrom
disq:repeater-channel-content-filter
Draft

Add public/channel content filtering to simple_repeater#2733
disq wants to merge 9 commits into
meshcore-dev:devfrom
disq:repeater-channel-content-filter

Conversation

@disq

@disq disq commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Lets a repeater decrypt channels it holds the key for (incl. the built-in public channel) and drop messages matching blocked keywords or sender names before forwarding. Configured via new "filter" CLI commands and persisted to /channel_filter.

(slop warning - untested/unreviewed as of now)

disq and others added 9 commits June 9, 2026 14:50
Lets a repeater decrypt channels it holds the key for (incl. the
built-in public channel) and drop messages matching blocked keywords
or sender names before forwarding. Configured via new "filter" CLI
commands and persisted to /channel_filter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds a MESH_DEBUG line on each dropped message, plus "filter stats"
and "filter stats reset" commands to view/clear the filtered counter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Folds look-alike codepoints (fullwidth, math alphanumerics, circled/
squared letters, regional indicators, Cyrillic/Greek homoglyphs,
accented Latin) to plain ASCII and strips zero-width/combining marks
before matching keywords and sender names.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Feature is now fully compiled out unless built with -D WITH_CHANNEL_FILTER.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Demote to a Configuration subsection with a "(When ... compiled in)"
heading, matching the GPS/Sensors/Bridge sections, and drop the
explicit build-flag callout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ross whole message

Guard data[len]=0 against an over-long crafted payload (OOB store), and
match keywords against the whole folded message so a blocked word can't be
hidden in the self-declared sender name. Also drop the unguarded ctype.h.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant